【发布时间】:2016-04-28 00:44:57
【问题描述】:
现在下面是一个字典,我正在尝试找到最短的路径。我们必须根据最短的时间去所有 5 个房子。每个键都是一个房子,每个值列表都是以秒为单位的时间。例如,第一宫的时间为 0,因为很明显,现在从第一宫到第二宫有 74 秒……以此类推。每个索引都是到下一个房子的时间表示。
现在是第二行,以 2 作为键。从第二宫到第一宫是 74 秒,现在从第二宫到第三宫是 4069 秒,如下图所示。
我正在尝试为此找到最佳算法我很困惑我应该使用什么?组合?排列组合?
我们的目标是找到从房子到房子的最短路径,下面的表示和在你找到的最短路径中旅行的所有时间的总和
list = 0, 74 , 2213, 816, 1172 ,
最短路径。
1 -> 2 -> 5 -> 4 -> 3 -> 1
我们必须再次返回第一个房子,这就是为什么再次显示 1
数字 1 到 5,代表房屋 列表
遍历每个键,值找到最小值和最小值的索引。将时间添加到 time_list
使用上一个找到的索引访问下一个主页(键)
将 min 的索引匹配到下一个 home,在 home 忽略零和 以前的家乡时间已经遇到的时间
【问题讨论】:
-
这是一个比较有名的问题,被称为旅行商问题。 simple.wikipedia.org/wiki/Travelling_salesman_problem 简而言之,是的,您必须测试所有路径组合才能找到最快的路径。
-
你为什么不测试
combinations和permutations实际做了什么,从结果中找出哪个更有意义?