从来没有做过这样的事情,但是......详细说明已经告诉你的 BlueRaja,我不得不说你很可能已经找到了你的圣杯(也许,你只是没有意识到)。
您尝试解决的与时间相关的问题看起来只是另一种方式来重新陈述您在穿越图形时已经必须解决的与空间相关的寻路问题。
换句话说,看起来你有两个图表要遍历。第一个是空间的,由您必须访问的航路点网络表示。第二个是您必须满足的“时间窗口”的时间(又名“时间相关”)图表,以免错过任何公共汽车/火车/轮船/飞机/任何东西。
据我所知,您可以使用常规的路径查找/图交叉算法(Dijkstra、A*、收缩层次结构等)来遍历空间图并重新使用相同的算法(或非常相似的算法) ) 也可以遍历时间相关图。
毕竟,这两个图都只是“约束”网络(要遍历的点,在空间或时间上)的数学表示,并且可以使用相同的算法进行遍历。最有可能的是,如果您查看用于整理“时间窗口”的代码,您会发现它已经非常类似于一个非常简单的与空间相关的图遍历算法。
主要问题似乎是找到时间图的良好表示(您必须尊重的“时间窗口”网络)。最有可能的是,它必须是时间受限的空间航路点(空间点,或“门”,每个都附有“时间窗口”)的图表。
无论如何,一次操作无法解决两个问题。首先,您必须在时间图中找到连接所有时间窗口(按所需顺序)的“最短路径”(即:您必须将它们整理出来,就像您已经在做的那样)。其次,您必须找到空间图中任何一对时间窗口之间的最短路径(并检查最短/最快路径是否足够快以满足下一个时间窗口)。