f_
frhyme.code
•others•โฑ ์•ฝ 5๋ถ„ ์†Œ์š”

Graph Edit Distance

I have been conducting a experiment for computing graph similarity.
I have a question about nx.optimal_edit_paths(G1, G2). In the documentation of it, it is written that this function Returns all minimum-cost edit paths transforming G1 to G2.

I use the function in my code and I run it. my code is below. Even though G1 and G2 are exactly same graph and their graph_edit_cost is 0, there a a lot of optimal_edit_paths.

N = 3
G1 = nx.complete_graph(N)
G2 = nx.complete_graph(N)

edit_path, graph_edit_cost = nx.optimal_edit_paths(G1, G2)
print(f"graph edit cost: {graph_edit_cost}")
for p in edit_path:
    node_edit, edge_edit = p
    print(f"node_edit: {node_edit}")
    print(f"edge_edit: {edge_edit}")
    print("--"*30)

the output is below. As I said it before, graph_edit_cost is zero because G1 and G2 are exactly same graphs. but there are lots of optimal path when paths was derived by nx.optimal_edit_paths(G1, G2). I donโ€™t know why this happend. It doesnโ€™t look like โ€˜optimalโ€™ because they donโ€™t have same edit cost.

graph edit cost: 0.0
node_edit: [(0, 0), (1, 1), (2, 2)]
edge_edit: [((0, 1), (0, 1)), ((0, 2), (0, 2)), ((1, 2), (1, 2))]
------------------------------------------------------------
node_edit: [(0, 0), (2, 1), (1, 2)]
edge_edit: [((0, 2), (0, 1)), ((0, 1), (0, 2)), ((1, 2), (1, 2))]
------------------------------------------------------------
node_edit: [(1, 0), (0, 1), (2, 2)]
edge_edit: [((0, 1), (0, 1)), ((0, 2), (1, 2)), ((1, 2), (0, 2))]
------------------------------------------------------------
node_edit: [(1, 0), (2, 1), (0, 2)]
edge_edit: [((1, 2), (0, 1)), ((0, 1), (0, 2)), ((0, 2), (1, 2))]
------------------------------------------------------------
node_edit: [(2, 0), (0, 1), (1, 2)]
edge_edit: [((0, 2), (0, 1)), ((0, 1), (1, 2)), ((1, 2), (0, 2))]
------------------------------------------------------------
node_edit: [(2, 0), (1, 1), (0, 2)]
edge_edit: [((1, 2), (0, 1)), ((0, 1), (1, 2)), ((0, 2), (0, 2))]
------------------------------------------------------------

And also, if the function is correct, How can I transform G1 to G2 base on that operations(node_edit, edge_edit)? I donโ€™t know how those operations have to be applied to G2 to make G2.

I always appreciate your help in this library. becasue of that, Iโ€™ve learned a lot about network science.

If you feel my text is rude or not polite, it is because of my lack of english. sorry about that.

๐Ÿ”— ์—ฐ๊ด€ ์ง€์‹ ํ—ˆ๋ธŒ:๐Ÿ“‚ others ์นดํ…Œ๊ณ ๋ฆฌ#graph

๐Ÿ’กRELATED ARTICLES ยท ํ•จ๊ป˜ ์ฝ์œผ๋ฉด ์ข‹์€ ์—ฐ๊ด€ ํฌ์ŠคํŠธ

๊ธ€ ์ฃผ์†Œ๊ฐ€ ํด๋ฆฝ๋ณด๋“œ์— ๋ณต์‚ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.