寻找两个城市之间的联系

时间:2014-04-06 21:15:57

标签: algorithm

我有一个假设的问题。让我们假设我有一堆相互连接的城市。这个问题纯粹是假设的,所以我们如何连接它们并不重要(我们可以将它们视为某种图形)。城市之间是公共汽车连接,但这些连接不是很可靠。他们添加或删除一个随机时间到我们期望他们离开城市的时间,以及他们到达另一个城市的时间。我如何找到一种方法将一个人从一个城市带到另一个城市尽可能快/相对快速但概率更大? 我应该阅读哪种算法来解决这个问题?

4 个答案:

答案 0 :(得分:2)

这是一个非常难以解决的问题,可以用博弈论的方式来解决。

Botea 等人想到的最好的论文是Multi-modal Journey Planning in the Presence of Uncertainty。人

论文的主旨是:

  • 每种交通方式(步行,公共汽车或出租车)都有一定的时间让您到达目的地,并有相关的概率。
  • 你需要在时间Y到达地点X,所以你假设每种运输方式都是最糟糕的情况
  • 假设情况最糟糕的话,你会选择准时到达那里的最高路线。

因此,如果出租车需要60-90分钟才能到达目的地,但公共汽车总是需要70,而且您需要在接下来的80分钟内到达目的地,那么您将乘坐公共汽车。

但是,如果您需要在接下来的65分钟内到达目的地,那么您可以乘坐出租车,因为这是唯一可以按时到达目的地的模式。

我想你可以调整自己的方法。每个城市通过公交线路连接到K其他城市,这些公交线路有自己相关的持续时间和持续时间的概率。您可以将每条公交线路视为不同的交通方式。


另一种方法是在你的图表上使用A *,你的启发式试图将不确定性和持续时间降至最低。

第二种方法的相关论文(不完全相同,但相关)是FIRM: Feedback controller-based Information-state Roadmap - A framework for motion planning under uncertainty

虽然本文涵盖了很多关于动态系统的内容,但是关于通过路线图(图表)提取路径以最小化不确定性的部分将是有用的。也许你可以适应这一点来融入速度的某些方面。

答案 1 :(得分:1)

如果变化是真正随机的,那么对我而言,你可以做的最好的事情就是找到连接数最少的路径。这可以通过Breadth First Search完成。

答案 2 :(得分:1)

查看Distance Vector Routing Protocol之类的路由算法。它们用于此目的。找到其他节点的方法,即使图形发生变化。 您可以做的简短摘要如下:

  • 每个城市都会列出其到达的所有城市的列表。与此同时,它存储距离以及通过哪个邻居节点到达城市。然后每个城市告诉它的邻居它可以到达哪个节点。如果新收到的邻居信息改变了当前可能的连接,城市会更新其列表并将此信息传播给其他人,直到列表不再更改为止。
  • 每当城市注意到与邻居的连接中断或恢复时,它都会更新列表并将此信息传输给其余的所有邻居。然后,每个邻居更新其列表并将信息传播给其他邻居。
  • 请注意"计入无限问题"

答案 3 :(得分:1)

我不认为这样的问题可能存在解决方案。然而,在一个随机性(例如现实世界)的世界里,每一次你的行动都会失败,那就有一个模型。尝试使用离散时间马尔可夫链(DTMC)。

你的每个城市都是马尔可夫州。 当您尝试从A市迁移到B市时,有成功和失败的可能性。 失败意味着你留在同一个城市。

使用DTMC,您可以计算出需要做多少动作,以一定的概率实现最终城市。