什么是可用于创建公交路线的好算法或算法类?
我正在考虑用于解决旅行推销员或汉密尔顿路径问题的算法,但事实上,它们都没有真正解决如何在两站之间移动的问题。
我希望算法至少具有以下特征:
可以做到这一点的代码,或类似的东西(尤其是在C#中),但是一个好的算法本身就可以了。
注意:虽然有很多算法可以找到两点之间的最短路径,但我不知道我希望停止的顺序。因此,除非我应该使用两种算法的组合(我怀疑是这种情况),这些算法不能做我想做的事情(如果你认为他们这样做,请解释)。
编辑:假设我知道需要进行的所有停靠。
答案 0 :(得分:2)
您可以在此处使用旅行推销员算法进行小修改/假设,以解决第2点(具有不同权重的路径的一部分)。
让我们说从点“A”到点“B”的路径有两个权重(比如某些时间点的流量)
即使是单一路径,我们也可以通过假设“虚拟顶点”来简化问题,点“C”在“A”和“B”之间,它们在每个边缘都有固定的权重。 / p>
A -------体重= 10 ------ C ------体重= 15 ------ B
在这张新图表上,运行旅行推销员算法。
答案 1 :(得分:2)
这似乎是一种方法,包括使用Floyd-Warshall算法,然后使用一种算法来解决旅行商问题。
这解决了所有“可选”顶点(交叉点)的问题,并使用旅行推销员算法来确定停止点的顺序。
答案 2 :(得分:1)
我使用过Djikstra算法:http://en.wikipedia.org/wiki/Dijkstras_algorithm
沿着边缘行驶的成本不仅仅是距离,而且还与“下一个”公共汽车离开给定节点之前的时间有关。注意:当它停在节点上时,您可能已经在总线上。
答案 3 :(得分:1)
公交车路线是由人而不是电脑创建的。只有人们知道谁需要去哪里和经常旅行。您至少需要这样的数据来考虑找到最符合人们需求的路线集。关于这一点,我认为你的问题未定义。