【发布时间】:2010-06-29 02:55:35
【问题描述】:
我知道 Dijkstra 的算法可以找到两个节点之间的最小距离(或者在地铁站的情况下)。我的问题虽然涉及找到两个车站之间的最小换乘次数。此外,在所有最小传输路径中,我想要时间最短的路径。
现在,为了找到最小换乘路径,我使用了应用于地铁线路的专用 BFS,但它不能保证找到的路径是所有其他最小换乘路径中最短的。
我在想,也许修改 Dijkstra 的算法可能会有所帮助 - 通过启发式地为每次传输添加权重(时间),这样它会阻止算法传输到不同的线路。但在这种情况下,我需要凭经验找到转移权重。
问题补充:
我被建议在每次算法想要转移到不同的地铁线路时添加一个“惩罚”。在这里,我解释一下我对此的一些担忧。
我把这个问题推迟了几天,今天又回来了。再次查看问题后,似乎在车站上执行 Dijkstra 算法并找出传输发生的位置很困难,它并不像人们想象的那么明显。
这是一个例子:
如果在这里我有一个部分图表(只有 4 个车站)和他们的地铁线路:A(红色),B(红色,蓝色),C(红色),D(蓝色)。设A站为源。
连接是:
---- D(蓝色)- B(蓝色,红色)- A(红色)- C(红色)-----
如果我遵循 Dijkstra 算法:最初我将 A 放入队列中,然后在第一次迭代中将 A 出队并查看其邻居: B 和 C,我根据权重 A-B 和 A-C 更新它们的距离。现在即使B连接两条线,在这一点上我不知道 如果我需要在B进行转账,所以我不添加转账的“惩罚”。 假设 A-B
所以我不确定这种确定传输需求的“延迟”会如何影响算法的完整性。 有什么想法吗?
【问题讨论】:
-
如果这是作业,请在问题中添加
[homework]标签。 -
一个简单的答案是,如果你真的想要最少的传输,然后在最少的传输中最少的时间,只需让传输权重大于最大路径权重。
-
@Robert Harvey - 这不是一个家庭作业问题。 @Amadan - 您如何找到最大路径的权重?可以任意长。还是我误会了你?
-
@Amadan - 我明白你在说什么。抱歉,我的英语有时不太好。
-
他表示图中两个最远节点之间的距离(行驶时间)。