擅长:python、mysql、java
<p>您可以修改图形,使路线上的每个早期顶点都有一条边到后面的顶点(更改链接代码中的第49-51行):</p>
<pre><code>for route,path in routes.iteritems():
for i in range(len( path)-1):
for j in range(i, len(path)):
data.append( (path[i] , path[j] , 1 , route))
</code></pre>
<p>输出:</p>
<pre><code>For A to F : >
(('A', 'F'), ['R1'])
</code></pre>
<p>如果您希望展开路由返回,可以将打印代码修改为:</p>
<pre><code>print "For A to F : > "
for (s,d),r in find_shortest_path("A","F"):
b = False
for i in range(len(routes[r[0]])):
v = routes[r[0]][i]
if v == s:
b = True
elif v == d:
break
if b:
print((v, routes[r[0]][i+1]), r)
</code></pre>
<p>结果是:</p>
<pre><code>For A to F : >
(('A', 'B'), ['R1'])
(('B', 'C'), ['R1'])
(('C', 'D'), ['R1'])
(('D', 'E'), ['R1'])
(('E', 'F'), ['R1'])
</code></pre>