繁体   English   中英

简化/减少图形的算法

[英]Algorithm to simplify/reduce graph

是否有一种算法可以根据边缘成本缩短路径(并删除节点)? 我不能说得太清楚,所以我希望这些图像能很好地总结一下:

我需要从中得到...

...对此

您是否正在寻找开箱即用的东西或关于如何自己实现此算法的想法? 我可以为您提供帮助。

您要执行的操作称为顶点收缩 ,该顶点具有2邻居,即2度。

为此,请执行以下操作:

while exists vertex v with degree 2:
    - remove v and the 2 outgoing edges
    - add a new edge between the neighbours of v
    - the weight of the new edge is the sum of the weights of the deleted edge

也就是说,如果您具有图形的以下部分: u ---2--- v ---5--- w并执行收缩,则最终得到u ---7--- w

只是迭代地执行此操作直到没有顶点和度2剩余,才会将第一张图片中的图形转换为第二张图片中的图形。

当然,确切的实现细节将取决于您使用哪种数据结构以Python(或使用的任何其他语言)表示图形。

暂无
暂无

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

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