如何解决如何在 AIMA 代码中测试用于路由查找的 BFS 算法?
我想从 aimA 代码中测试一些用于查找路线的最佳优先搜索算法。 map类在书中定义如下:
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 书中创建的:
romaina = Map(
{('O','Z'): 71,('O','S'): 151,('A','Z'): 75,'S'): 140,'T'): 118,('I','V'): 92,'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)
这种方式没有正确生成所有的 links[v2,v1]
。
我尝试创建另一个名为 links 的字典并使用它初始化地图,例如 country_road = Map({links})
但这生成了不可哈希的字典,我无法使用它。
这里有人知道这个不可哈希的字典或其他方法吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。