Graph 将图形编辑距离规格化为[0,1](networkx)
我想要一个标准化的图形编辑距离。 我正在使用这个函数: 我试图理解如何绘制距离函数,以便能够在0和1之间对其进行规格化,但我并不完全理解 例如: def比较图GA,Gb: 画图 绘图 图形编辑距离=nx。图形编辑距离ga,Gb,节点匹配=lambda x,y:x==y 返回图\u编辑\u距离 比较图G1、G3 为什么图形编辑距离=4 图形构造: 哎 编辑距离通过以下方式测量:Graph 将图形编辑距离规格化为[0,1](networkx),graph,networkx,graph-theory,similarity,edit-distance,Graph,Networkx,Graph Theory,Similarity,Edit Distance,我想要一个标准化的图形编辑距离。 我正在使用这个函数: 我试图理解如何绘制距离函数,以便能够在0和1之间对其进行规格化,但我并不完全理解 例如: def比较图GA,Gb: 画图 绘图 图形编辑距离=nx。图形编辑距离ga,Gb,节点匹配=lambda x,y:x==y 返回图\u编辑\u距离 比较图G1、G3 为什么图形编辑距离=4 图形构造: 哎 编辑距离通过以下方式测量: nx.graph_edit_distance(Ga, Gb, node_match=lambda x,y : x==y
nx.graph_edit_distance(Ga, Gb, node_match=lambda x,y : x==y)
与graph_edit_距离的区别在于它与节点索引相关
这是“优化\编辑\路径”的输出:
list(optimize_edit_paths(G1, G2, node_match, edge_match,
node_subst_cost, node_del_cost, node_ins_cost,
edge_subst_cost, edge_del_cost, edge_ins_cost,
upper_bound, True))
Out[3]:
[([(1, 1), (2, None), (3, 3)],
[((1, 2), None), ((2, 3), None), (None, (1, 3)), (None, (3, 1))],
5.0),
([(1, 1), (2, 3), (3, None)],
[((1, 2), (1, 3)), (None, (3, 1)), ((2, 3), None)],
4.0)]
我知道它应该是将图G1转换为与G2同构的图的节点和边编辑操作的最小序列
当我尝试计数时,我得到:
1.将节点2添加到G3,
2.从G3取消e1=1,3
3.从G3中取消e2=3,1
4.将e3=1,2添加到G3
5.将e4=2,3添加到G3
图形编辑距离=5
我错过了什么
或者,为了使我收到的距离正常化,我可以做些什么
我想除以| V1 |+| V2 |+| E1 |+| E2 |,或者除以max | V1 |+| E1 |,| V2 |+| E2 |,但我不确定
提前谢谢 我知道它的老帖子,但我目前正在阅读有关GED的文章,并愿意为将来寻找它的人回答 图形编辑距离为4 原因: 1和3使用无向边连接。而1和2使用定向边连接。现在,图形编辑路径将为: 将无向边转换为定向边 将3改为2 将边添加到2 最后向该边添加一个节点
你能给我们这两张图的定义吗?我预计距离为3 delete,这就是我的networkx返回的结果。所以我想我把图表弄错了。我在一个图中看到一条从1到2到3的路径,在另一个图中看到两个方向上的边在1和3之间。在这种情况下,从第一个图形中删除2->3边,删除节点3,然后添加2->1边。这两个图是同构的,尽管标签不一样。嘿,我在文章中添加了细节。我通过关联不同的节点来测量GED:nx.graph\u edit\u distanceGa,Gb,node\u match=lambda x,y:x==yI仍然期望3.0的距离,这就是我的代码复制和粘贴为您定义的图形提供的。请注意,对于任何一对没有属性的节点,您选择的函数node_match将返回True,它不会检查节点名称是否相同。
list(optimize_edit_paths(G1, G2, node_match, edge_match,
node_subst_cost, node_del_cost, node_ins_cost,
edge_subst_cost, edge_del_cost, edge_ins_cost,
upper_bound, True))
Out[3]:
[([(1, 1), (2, None), (3, 3)],
[((1, 2), None), ((2, 3), None), (None, (1, 3)), (None, (3, 1))],
5.0),
([(1, 1), (2, 3), (3, None)],
[((1, 2), (1, 3)), (None, (3, 1)), ((2, 3), None)],
4.0)]