Python 3.x 如何在AIMA代码中测试BFS路由查找算法?
我想测试AIMA代码中用于查找路线的一些最佳优先搜索算法。地图类在本书中定义如下: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:
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})
,但这生成了一个不易损坏的字典,我无法使用它
这里有没有人对这本糟糕的字典有什么想法,或者有其他方法