Python 3.x 如何在AIMA代码中测试BFS路由查找算法?

Python 3.x 如何在AIMA代码中测试BFS路由查找算法?,python-3.x,artificial-intelligence,best-first-search,Python 3.x,Artificial Intelligence,Best First Search,我想测试AIMA代码中用于查找路线的一些最佳优先搜索算法。地图类在本书中定义如下: class Map: def __init__(self, links, locations=None, directed=False): if not hasattr(links, 'items'): # Distances are 1 by default links = {link: 1 for link in links} if not directed:

我想测试AIMA代码中用于查找路线的一些最佳优先搜索算法。地图类在本书中定义如下:

class Map:
def __init__(self, links, locations=None, directed=False):
    if not hasattr(links, 'items'): # Distances are 1 by default
        links = {link: 1 for link in links}
    if not directed:
        for (v1, v2) in list(links):
            links[v2, v1] = links[v1, v2]
    self.distances = links
    self.neighbors = multimap(links)
    self.locations = locations or defaultdict(lambda: (0, 0))


def multimap(pairs) -> dict:
    result = defaultdict(list)
    for key, val in pairs:
        result[key].append(val)
    return result
此地图在AIMA book中创建为:

romaina = Map(
{('O', 'Z'):  71, 
 ('O', 'S'): 151, 
 ('A', 'Z'): 75, 
 ('A', 'S'): 140, 
 ('A', 'T'): 118, 
 ('I', 'V'):  92, 
 ('I', 'N'):  87, 
 ('P', 'R'): 97})
现在我想导入输入文件中给出的另一个映射。输入文件的格式有两个城市,定义为数字和每对之间的距离,如:

   151   155  96.8
我创建了一个地图实例,然后从文件中读取城市:

country_road = Map({})
with open(inputfile) as f:
    for line in f:
        (key1, key2, val) = line.split()
        country_road.distances[( "%3i"%int(key1), "%3i"%int(key2) )] = float(val)
并使用以下方法分别创建相邻零件:

country_road.neighbors = multimap(country_road.distances)
这种方式没有正确生成所有的
链接[v2,v1]

我尝试创建另一个名为links的字典,并使用它初始化地图,比如
country\u road=map({links})
,但这生成了一个不易损坏的字典,我无法使用它

这里有没有人对这本糟糕的字典有什么想法,或者有其他方法