一、算法思路
1、采用广度优先搜索算法;
2、二维数组初始化无向图;
3、创建一个一维数组,初始化起点到其它所有节点的距离为无穷大,起点自己到自己的距离为0;
4、从起点开始找与起点相邻的其它节点的距离,将距离赋值到前面创建的一维数组,将此节点标记为已访问;
5、在一维数组中找一个没有访问过的节点,并且数值是最小的节点,将此节点作为起点重复第4步;
6、直至所有节点全部标记为已访问,程序执行结束;
二、代码
import sys
class Graph:
#所有节点信息
nodeAll = []
#记录节点是否已访问 0否 1是
visited = []
#指定起始点到所有其他点的距离
minDis = []
#所有的边
edge = []
#节点数量
nodeNum = 0
#路径记录
paths = []
#构造方法,初始化整个无向图
def __init__(self, nodeAll):
self.nodeAll = nodeAll
self.nodeNum = len(nodeAll)
#初始化所有节点都未访问
self.visited = [0] * self.nodeNum
#创建一个二维数据,是浅拷贝,每一维的数组都是指向同一个内容地址,会有问题
#test = [[0] * nodeNum] * nodeNum
#test[0][1] = 1
#创建一个二维数组,每次都会创建一个新的数组
self.edge = [([0] * self.nodeNum) for i in range(self.nodeNum)]
self.visited = [0] * self.nodeNum
# 初始化指定起点到其它所有节点的距离无穷大
self.minDis = [sys.maxsize] * self.n

最低0.47元/天 解锁文章
913

被折叠的 条评论
为什么被折叠?



