當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python NetworkX graph_edit_distance用法及代碼示例


本文簡要介紹 networkx.algorithms.similarity.graph_edit_distance 的用法。

用法:

graph_edit_distance(G1, G2, node_match=None, edge_match=None, node_subst_cost=None, node_del_cost=None, node_ins_cost=None, edge_subst_cost=None, edge_del_cost=None, edge_ins_cost=None, roots=None, upper_bound=None, timeout=None)

返回圖形 G1 和 G2 之間的 GED(圖形編輯距離)。

圖形編輯距離是一種圖形相似性度量,類似於字符串的 Levenshtein 距離。它被定義為將圖 G1 轉換為與 G2 同構的圖的編輯路徑(節點和邊編輯操作的序列)的最小成本。

參數

G1, G2: graphs

兩個圖形 G1 和 G2 必須屬於同一類型。

node_match可調用的

如果在匹配期間應將 G1 中的節點 n1 和 G2 中的 n2 視為相等,則返回 True 的函數。

該函數將被稱為

node_match(G1.nodes[n1], G2.nodes[n2])。

也就是說,該函數將接收 n1 和 n2 的節點屬性字典作為輸入。

如果指定了node_subst_cost,則忽略。如果既沒有指定node_match 也沒有指定node_subst_cost,則不考慮節點屬性。

edge_match可調用的

如果 G1 中的節點對 (u1, v1) 和 G2 中的 (u2, v2) 的邊屬性字典在匹配期間應被視為相等,則返回 True 的函數。

該函數將被稱為

edge_match(G1[u1][v1], G2[u2][v2])。

也就是說,該函數將接收正在考慮的邊的邊屬性字典。

如果指定了edge_subst_cost,則忽略。如果既沒有指定edge_match 也沒有指定edge_subst_cost,則不考慮邊屬性。

node_subst_cost, node_del_cost, node_ins_cost可調用的

分別返回節點替換、節點刪除和節點插入成本的函數。

這些函數將被稱為

node_subst_cost(G1.nodes[n1], G2.nodes[n2]), node_del_cost(G1.nodes[n1]), node_ins_cost(G2.nodes[n2])。

也就是說,函數將接收節點屬性字典作為輸入。這些函數應返回正數值。

如果指定,函數 node_subst_cost 會覆蓋 node_match。如果既沒有指定node_match 也沒有指定node_subst_cost,則使用默認節點替換成本 0(匹配期間不考慮節點屬性)。

如果未指定node_del_cost,則使用默認節點刪除成本 1。如果未指定node_ins_cost,則使用默認節點插入成本 1。

edge_subst_cost, edge_del_cost, edge_ins_cost可調用的

分別返回邊替換、邊刪除和邊插入成本的函數。

這些函數將被稱為

edge_subst_cost(G1[u1][v1], G2[u2][v2]), edge_del_cost(G1[u1][v1]), edge_ins_cost(G2[u2][v2])。

也就是說,函數將接收邊屬性字典作為輸入。這些函數應返回正數值。

如果指定,函數 edge_subst_cost 會覆蓋 edge_match。如果既沒有指定 edge_match 也沒有指定 edge_subst_cost,則使用默認的邊替換成本 0(匹配期間不考慮邊屬性)。

如果未指定edge_del_cost,則使用默認的邊刪除成本 1。如果未指定edge_ins_cost,則使用默認的邊插入成本 1。

roots2元組

元組,其中第一個元素是 G1 中的節點,第二個元素是 G2 中的節點。這些節點在比較中被強製匹配,以允許在有根圖之間進行比較。

upper_bound數字

要考慮的最大編輯距離。如果不存在小於或等於 upper_bound 的編輯距離,則返回 None。

timeout數字

執行的最大秒數。滿足超時後,返回當前最佳 GED。

參考

1

Zeina Abu-Aisheh, Romain Raveaux, Jean-Yves Ramel, Patrick Martineau. An Exact Graph Edit Distance Algorithm for Solving Pattern Recognition Problems. 4th International Conference on Pattern Recognition Applications and Methods 2015, Jan 2015, Lisbon, Portugal. 2015, <10.5220/0005209202710278>. <hal-01168816> https://hal.archives-ouvertes.fr/hal-01168816

例子

>>> G1 = nx.cycle_graph(6)
>>> G2 = nx.wheel_graph(7)
>>> nx.graph_edit_distance(G1, G2)
7.0
>>> G1 = nx.star_graph(5)
>>> G2 = nx.star_graph(5)
>>> nx.graph_edit_distance(G1, G2, roots=(0, 0))
0.0
>>> nx.graph_edit_distance(G1, G2, roots=(1, 0))
8.0

相關用法


注:本文由純淨天空篩選整理自networkx.org大神的英文原創作品 networkx.algorithms.similarity.graph_edit_distance。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。