查询 Graph 实现的 Route 建议
Posted
技术标签:
【中文标题】查询 Graph 实现的 Route 建议【英文标题】:Query on Graph implementation for Route suggestion 【发布时间】:2017-10-28 06:51:00 【问题描述】:我有一组动态数据,比如旅程时间或飞行持续时间,我需要构建一个类似谷歌地图的东西,以提供关于替代路线的建议,我从哪里开始?我正在专门寻找有关以下问题的指针。
-
我认为我们需要使用某种图表。如果是这样,我如何开始构建图表?我是否应该在数据进入时开始不断地填充图表,或者是否涉及任何最佳实践?
2.) 是在用户搜索源和目标时预先绘制图形并搜索顶点,还是在用户搜索期间构建图形?
3.) 当有路线更新时会发生什么 - 比如说禁止进入的道路等。图表是否需要重绘或通常会更新?
任何其他关于如何开始的数据和 java 中的示例都会有所帮助。提前致谢。
【问题讨论】:
【参考方案1】:IMO,这是一个雄心勃勃的项目,无法完全回答 SO。然而,以下可能是值得考虑的有用指针:
图形算法是一般线性/整数的特殊情况 程式。此类问题可以通过诸如CPLEX 之类的通用求解器或通过专门为手头的问题实例开发的更专业的算法来正确解决。
运输设计师和无线路由电气工程师经常处理此类问题。 One example based on a simple google scholar search for dynamic routing. GPS 软件也内置了这样的算法。
设计最短路径算法并不难。但是,如前所述,您的问题需要重复解决略有不同的问题。因此,如果从头开始解决这些问题,您的表现可能会受到影响。在许多情况下,线性规划/整数规划求解器(例如 CPLEX)足够智能,可以尝试使用以前的解决方案来尝试更快地解决密切相关但不同的问题。请参阅以下线程,例如:Are boost::graph algorithms capable of using previous solution to solve closely related newer problems faster?
我过去/现在仍然自己为网络流问题编写代码,因为我需要设计的许多算法都相当专业。但是,您可能会受益于使用 C++ 中的预构建库(不确定 Java),例如 boost::graph
。
【讨论】:
以上是关于查询 Graph 实现的 Route 建议的主要内容,如果未能解决你的问题,请参考以下文章
Gelly Library 可以用于 Flink 中类似于 Spark 中的 Graph Frame 的图形查询吗
Janus Graph 后端 cassandra 与 Bigtable