广度优先搜索算法,找出一个顶点到另外一个顶点需要最少经过的边数
#!python
#coding=utf-8
"""
广度优先搜索算法,
解决获取图中某点到某点最短路径问题:即从出发点到终点的边数最少)
时间复杂度O(V+E) V:图的顶点数 E:图的边数
假如有如下图所示:
郑州(ZZ)---------------广州(GZ)---深圳(SZ)
| | |
杭州(HZ)----北京(BJ)----天津(TJ)---武汉(WH)
| | |
|---------重庆(CQ)------------------
从杭州到武汉有以下可选路径:
* 杭州-->郑州-->广州-->深圳-->武汉
* 杭州-->郑州-->广州-->天津-->武汉
* 杭州-->北京-->天津-->武汉
* 杭州-->重庆-->北京-->天津-->武汉
* 杭州-->重庆-->武汉
* 其他略
我们将通过广度优先搜索算法来找到【杭州-->重庆-->武汉】这条这段路径
@:param graph : 城市路线图
@:param start : 出发城市
@:param end : 目的地城市
"""
def build_city_graph():
# 元组数组,元组第一个属性为当前城市,第二个属性为当前城市的父级城市
city_graph = {
}
city_graph["HZ"] = [("ZZ", "HZ"), ("BJ", "HZ"), ("CQ", "HZ")]
city_graph["ZZ"] = [("GZ", "ZZ")]
city_graph