簡體   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