我想开发一种算法,该算法考虑了一个人从他/她的办公室开始访问的不同地点的位置和约会时间。完成所有预约访问后,此人必须回到办公室。我想为他/她计划一条涵盖所有约会的路线:
我的问题是开放式的。我知道,如果我只想考虑建造路线的距离,这直接适合旅行商问题。但是,我也想考虑预约时间。我是图表的新手,我想知道这个问题是否更适合我不知道的其他算法。如果没有,我正在寻找修改TSP算法的建议,以考虑这两个参数。
在考虑这个问题时,我想到了如何实现Dijkstra寻找路线。我知道这是一个与TSP完全不同的问题。但是,你怎么认为我可以结合两个参数(距离和预约时间)来比较Dijkstra的优先级队列ADT中的两个节点。
可能这两个问题需要不同的问题,但我觉得这是一个常见的问题。我正在寻找有关处理这些图形问题的建议,其中有两个因素需要考虑。如何将两个参数合并为一个,以便我可以比较两个节点?
答案 0 :(得分:1)
假设您需要准时预约而不是提前预约,那么您可以从完全连接的图表开始,然后根据他们的预约时间,如果它们相距太远,则删除节点之间的边缘。
例如,如果节点A的时间为10:00,节点B的时间为11:00,并且它们之间的最短距离超过1小时,则可以修剪此边缘。
如果节点A在节点B之后有预约时间,则还包括修剪边缘(A,B)。
在此之后你只需要找到最短的哈密顿循环 - 这就是TSP。
编辑:直接回答您的问题:无需考虑问题的TSP部分中的约会时间。只需设置图形(如上所述),然后运行TSP算法。