【发布时间】:2019-06-30 16:20:21
【问题描述】:
我正在尝试在具有双向加权边的图上执行路径生成器的 Java 实现。问题在于根据兴趣点 (POI) 列表和用户兴趣为用户提供路线。所有兴趣点之间的用户兴趣、距离和旅行时间都已经计算好了。使用这些数据,我能够创建一个具有双向边的图,其中边的权重是源节点和目标节点之间的行程时间。
有一些相关的用户输入:
- 他想旅行的时间跨度,即 6 月 30 日下午 4 点到 6 月 30 日晚上 8 点。
- 行程的起点(坐标),从中选择最近的 POI 作为行程起点。
由于节点的权重是POI之间的行程时间,因此结果路径权重总和不能超过用户定义的时间跨度。这将是停止条件,而不是目标节点。
用户对某个 POI 的兴趣定义在 0 到 5 之间。理想情况下,路径计算时也会考虑这个变量,因为用户希望访问得分更高的 POI。
这个问题是在学术背景下提出的,我在这方面的知识不是很好。如果您有任何算法建议或任何其他想法在合理的时间内解决此问题,我将不胜感激。
【问题讨论】:
-
嗨@GuyCoder,感谢您的建议。我将看看 Neo4j,但我试图以更程序化的方式解决问题,因为它需要在学术环境中进行演示。
-
并且
demonstrated in an academic context没有在原始问题中注明,因为???。这就是为什么我不再为少于 100 个代表的人写答案。不要觉得我曾经在同一条船上感到难过,但如果恕我直言,最好提供更多细节而不是更少。 -
考虑不同的优化:我如何在给定时间内获得最大的兴趣总和。
-
您所描述的是旅行商问题的变体。我支持@c0der 的建议。您可以尝试构建一条穿过图形顶点的路径。在构建路径时,您会跟踪其分数和花费的时间。当你达到你的时间限制时,你就有了第一个解决方案。然后你可以回溯并尝试找到另一条产生更高分数(访问过的地方的总和)的路径。请注意,在探索一条路径时,如果您发现自己的改进不能超过当前的最佳答案,则不再值得尝试当前路径。祝你好运!!
标签: java algorithm graph-theory