【问题标题】:Path generation on a graph with bidirectional weighted edges具有双向加权边的图上的路径生成
【发布时间】:2019-06-30 16:20:21
【问题描述】:

我正在尝试在具有双向加权边的图上执行路径生成器的 Java 实现。问题在于根据兴趣点 (POI) 列表和用户兴趣为用户提供路线。所有兴趣点之间的用户兴趣、距离和旅行时间都已经计算好了。使用这些数据,我能够创建一个具有双向边的图,其中边的权重是源节点和目标节点之间的行程时间。

有一些相关的用户输入:

  • 他想旅行的时间跨度,即 6 月 30 日下午 4 点到 6 月 30 日晚上 8 点。
  • 行程的起点(坐标),从中选择最近的 POI 作为行程起点。

由于节点的权重是POI之间的行程时间,因此结果路径权重总和不能超过用户定义的时间跨度。这将是停止条件,而不是目标节点。

用户对某个 POI 的兴趣定义在 0 到 5 之间。理想情况下,路径计算时也会考虑这个变量,因为用户希望访问得分更高的 POI。

这个问题是在学术背景下提出的,我在这方面的知识不是很好。如果您有任何算法建议或任何其他想法在合理的时间内解决此问题,我将不胜感激。

【问题讨论】:

  • 使用Neo4j 并编写Cypher 查询。 Neo4j 有一个sandbox
  • 嗨@GuyCoder,感谢您的建议。我将看看 Neo4j,但我试图以更程序化的方式解决问题,因为它需要在学术环境中进行演示。
  • 并且demonstrated in an academic context 没有在原始问题中注明,因为???。这就是为什么我不再为少于 100 个代表的人写答案。不要觉得我曾经在同一条船上感到难过,但如果恕我直言,最好提供更多细节而不是更少。
  • 考虑不同的优化:我如何在给定时间内获得最大的兴趣总和。
  • 您所描述的是旅行商问题的变体。我支持@c0der 的建议。您可以尝试构建一条穿过图形顶点的路径。在构建路径时,您会跟踪其分数和花费的时间。当你达到你的时间限制时,你就有了第一个解决方案。然后你可以回溯并尝试找到另一条产生更高分数(访问过的地方的总和)的路径。请注意,在探索一条路径时,如果您发现自己的改进不能超过当前的最佳答案,则不再值得尝试当前路径。祝你好运!!

标签: java algorithm graph-theory


【解决方案1】:

考虑以下过程:

  • 在运行搜索时会累积旅行时间和兴趣分数
  • 如果满足以下条件之一,则停止探索当前路径:
    • 超出行程时间限制
    • 访问过的所有 POI
  • 如果满足以下条件之一,则将当前路径保持为最佳路径:
    • 这是探索的第一条路径
    • 当前路径的兴趣得分高于最佳路径
    • 当前路径与最佳路径具有相同的兴趣得分和更短的行程时间
  • 返回探索另一条路径

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    • 2019-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-14
    相关资源
    最近更新 更多