Python3使用BFS实现湖北省到全国省级行政区

Python3实现湖北省到全国省级行政区

Python3使用BFS实现湖北省到全国省级行政区

说明:

全国34个省级行政区到湖北省的中间间隔不超过两个省,即使是台湾省和海南省,中间也绝对不会超过两个省,台湾-福建-江西-湖北,而海南-广东-湖南-湖北。

地图:

在这里插入图片描述

行政区的毗邻行政区结构:

# 各个行政区的毗邻行政区距离结构
 graph = {
    '台湾': ['福建'],
    '海南': ['广东'],
    "内蒙古": ["黑龙江", "吉林", "辽宁", "河北", "山西", "陕西", "宁夏", "甘肃"],
    "黑龙江": ["内蒙古", "吉林"],
    "吉林": ["黑龙江", "内蒙古", "辽宁"],
    "辽宁": ["吉林", "内蒙古", "河北"],
    "河北": ["辽宁", "内蒙古", "山西", "北京", "天津", "山东", "河南"],
    '河南': ['河北', '湖北', '陕西', '山西', '安徽', '山东'],
    "山东": ["河北", "河南", '安徽', '江苏'],
    "北京": ["河北", "天津"],
    "天津": ["河北", "北京"],
    "山西": ["河北", "内蒙古", "陕西", "河南"],
    "陕西": ["宁夏", "内蒙古", "甘肃", "河南", "山西", "四川", "重庆", "湖北"],
    "宁夏": ["陕西", "内蒙古", "甘肃"],
    "甘肃": ["宁夏", "内蒙古", "陕西", "青海", "新疆", "四川"],
    "青海": ["甘肃", "西藏", "新疆", "四川"],
    "新疆": ["西藏", "甘肃", "青海"],
    "西藏": ["新疆", "青海", "四川", "云南"],
    "四川": ["青海", "西藏", "甘肃", "陕西", "云南", "贵州", "重庆"],
    '云南': ['西藏', '四川', '贵州', '广西'],
    '重庆': ['陕西', '四川', '贵州', '湖南', '湖北'],
    '贵州': ['重庆', '四川', '云南', '广西', '湖南'],
    '广西': ['云南', '贵州', '湖南', '广东'],
    '广东': ['福建', '江西', '湖南', '广西', '香港', '澳门','海南'],
    '湖南': ['湖北', '重庆', '贵州', '广西', '广东', '江西'],
    '江西': ['安徽', '湖北', '湖南', '广东', '福建', '浙江'],
    '福建': ['浙江', '江西', '广东','台湾'],
    '湖北': ['河南', '陕西', '重庆', '湖南', '江西', '安徽'],
    '河南': ['河北', '山西', '陕西', '湖北', '安徽', '江苏', '山东'],
    '安徽': ['河南', '湖北', '江西', '浙江', '江苏', '山东'],
    '浙江': ['上海', '江苏', '安徽', '江西', '福建'],
    '上海': ['江苏', '浙江'],
    '江苏': ['山东', '安徽', '浙江', '上海'],
    '山东': ['河北', '河南', '江苏'],
    '香港': ['广东'],
    '澳门': ['广东'],
}

BFS广度优先遍历:

# BFS广度优先遍历
def BFS(graph, s):
    queue = []
    queue.append(s)
    seen = set()
    seen.add(s)
    parent = {s: None}
    while (len(queue) > 0):
        vertex = queue.pop(0)
        nodes = graph[vertex]
        for w in nodes:
            if w not in seen:
                queue.append(w)
                seen.add(w)
                parent[w] = vertex
        # print(vertex)
    return parent

main函数

if __name__ == '__main__':
    bfs_province = BFS(graph, '湖北')
    for key in bfs_province:
        v = key
        route="出发->"
        while v != None:
            route+=v+"->"
            v = bfs_province[v]
        route += "到啦!"
        print(route)

运行结果

在这里插入图片描述

Github地址

Github地址

发布了496 篇原创文章 · 获赞 464 · 访问量 86万+

猜你喜欢

转载自blog.csdn.net/zhangvalue/article/details/103863337