我有以下情况:
我想找到两个城市之间的航班:A和B.没有从A到B的直飞航班;所以,我需要找到成本最低的转机航班。
此外,机票不固定。这取决于我购买它的时间;例如,如果我早点买它,价格会更便宜。
而且,时间也影响了飞行;例如,5月31日上午7点只有一班从C到D的航班。如果飞机在5月31日早上8点从A飞到C,我会错过航班。因此,我将城市表示为图的顶点。如果从A到B的航班有效,则路径AB存在。权重将是门票费。
对我的问题有任何想法或建议吗?
由于
答案 0 :(得分:4)
我回答了一次similar question非常肯定我可以在这里使用相同的想法。我们的想法是使用专为互联网路由器设计的路由算法 - 它是动态且不断变化的。为此设计的算法是 Distance Vector Routing Protocol 。
建议的实现基本上是Bellman-Ford算法的分布式版本,一旦每个边缘的权重发生变化,就会自行修改,以获得新的最佳路径。
请注意,该算法有缺点,主要是count to infinity problem。
答案 1 :(得分:1)
在正确的时间处理不在正确位置的常用方法是使节点代表特定时间的特定位置。然后从5月30日晚上9点起飞到C的D到5月31日7点到达的航班对应于从节点C_May30_9PM到D_May31_7AM的弧。你还需要对应于等待的弧,例如D_May31_7AM到D_May31_8AM。
我不确定在您所描述的详细程度上购买门票还有很多话要说。