Python 在字典中确定从x键到y键的最快路径?

Python 在字典中确定从x键到y键的最快路径?,python,dictionary,shortest-path,Python,Dictionary,Shortest Path,假设所有键都是通过数组值连接的,那么如何以最快的方式从字典中的键x到键y呢 network={ 1: [3], 2: [4], 3: [1, 8, 7, 6, 4], 4: [2, 3, 6, 5], 5: [4, 11, 10], 6: [3, 11, 4], 7: [3, 8, 11], 8: [3, 16, 9, 7], 9: [8, 16, 14, 11], 10: [5, 11, 13], 11: [5, 6, 7, 9, 14, 10], 12: [13],

假设所有键都是通过数组值连接的,那么如何以最快的方式从字典中的键x到键y呢

network={
 1: [3],
 2: [4],
 3: [1, 8, 7, 6, 4],
 4: [2, 3, 6, 5],
 5: [4, 11, 10],
 6: [3, 11, 4],
 7: [3, 8, 11],
 8: [3, 16, 9, 7],
 9: [8, 16, 14, 11],
 10: [5, 11, 13],
 11: [5, 6, 7, 9, 14, 10],
 12: [13],
 13: [10, 14, 12],
 14: [9, 16, 13, 11],
 15: [16],
 16: [8, 15, 14, 9]}
键表示值x或y。以及它们的阵列彼此连接的方式。示例:
1
连接到
3
3
连接到
1,8,7,6,4
esc

我做了一个函数,给你从x到y的跳跃次数

def jumps(x, y, network):
x={x}
for i in range(1, len(network)):
    x=neighbors(x, network)
    if(y in x):
        return i

def neighbors(x, network):
seen=[]
for krizisce in x:
    for izvoz in network[krizisce]:
        if izvoz not in doslej and izvoz not in seen:
            seen.append(izvoz)
return {x for x in seen}
但是我想得到从x到y的最短密钥数组

例如,如果我选择两个彼此相差很远的值,如:
1
15

我想从
1->15
获取最短路径。这将是
[1,3,8,16,15]

这是一个寻找最短路径的标准案例,在整个互联网上都有实现

如果您想了解,可以查看以下内容:


如果您需要快速实现,这似乎与您的实现非常相似:

这是Dijkstra。查找广度优先搜索实现我实现了Dijkstra算法感谢anwser