繁体   English   中英

Boost中的自定义图形距离dijkstra_shortest_paths

[英]Custom graph distance in Boost dijkstra_shortest_paths

我知道其他人也曾问过类似的问题,但这一问题略有不同。

我需要计算重量和距离根节点数的组合。

因此,如果图形为A-> 20 ft- > B-> 10 ft- > C,那么通常您会计算A-> B为20 ft和A-> C为30英尺之间的距离,但是我想放大了跳到另一个节点的成本。

假设每次您跳到另一个节点时,成本都会翻倍,因此A-> B距离为20英尺, B-> C距离为10英尺,但A-> C为20英尺+ 2 * 10 ft = 40 FT

boost的Dijkstra的最短路径有可能吗?

您可以通过自定义距离来做到这一点。

例如,除了起源于“源”的那些边缘之外,您可以将每个边缘的成本加倍。 可以使用具有operator[](edge_descriptor e) const的简单内联类“即时”实现它。 然后,将该类作为距离图传递给Dijkstra或其他最短路径算法。

对于某些应用程序,您希望每个节点都有固定的成本(例如“交通信号灯的预期加权时间”)。 再次在这里,将这些节点权重保留在某个位置。 然后,定义一个内联类,除非该边缘以Dijkstra“源”开头,否则它将在其operator[](edge e) const添加边缘权重和该边缘源权重。 最后,将此类的对象作为Dijkstra距离图传递给您喜欢的BGL例程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM