if all(n in path for n in (2,4,7,12,13,14)):#满足路径中包括顶点 N7,N12
#检查(N2,N4)
p1=path.index...=4): continue#判断N2~N4是否相邻
#检查(N13,N14)
p2=path.index(13)#N13的位置
if (path[p2-1...")
print("S 到 E 的最短加权路径: ",minWPath)
print("S 到 E 的最短加权路径长度: ",lMinWPath)
edgeList = []
for i in range...plt.show()
问题: 多个必经边、必经点的约束
S 到 E 的最短加权路径: [0, 2, 4, 5, 6, 7, 8, 14, 13, 12, 16, 17]
S 到 E 的最短加权路径长度...: 13
算法:多个必经边的最短路径是遍历从起点到终点的简单路径,求满足必经边条件的最短路径,同时满足必经点约束条件。