2024-04-28 04:41:09 发布
网友
我正在处理*.jar文件和图形同构。我想检查两个*.jar文件之间的图形同构。有没有一个python或ruby的库。我能用测谎仪吗?在
谢谢。在
这里是一个使用NetworkX isomorphism checking作为基础来做我理解你要问的事情的一个努力。。。在
假设您使用两个jar文件的内容创建文本文件,例如使用the methods here。在
这段代码将加载两个jar文件并将这些图加载到NetworkX中。这里的例子被简化为每个路径名中只有两个级别,但是一般原则仍然是相同的。。。如果您发布一些示例内容,我们可以调整get_edges()函数来处理更深层次的嵌套。在
get_edges()
import networkx as nx from networkx.algorithms import isomorphism # Contents of two jar files listed, as in # http://java.sun.com/developer/Books/javaprogramming/JAR/basics/view.html jar1 = '''a/g a/h a/i b/g b/h b/j c/g c/i c/j d/h d/i d/j''' jar2 = '''1/2 2/3 3/4 4/1 5/6 6/7 7/8 8/5 1/5 2/6 3/7 4/8''' def get_edges(jar): nodes = set( jar.replace('\n', '/').split('/') ) nodes = dict( zip(nodes, range(len(nodes)) ) ) edges = [ edge.split('/') for edge in jar.split('\n') ] edges = [ (nodes[ edge[0] ],nodes[ edge[1] ]) for edge in edges ] return edges if __name__ == '__main__': G1 = nx.Graph() G1.add_edges_from( get_edges(jar1) ) G2 = nx.Graph() G2.add_edges_from( get_edges(jar2) ) print 'Edges from jar1: ', G1.edges() print 'Edges from jar2: ', G2.edges() GM = isomorphism.GraphMatcher(G1,G2) print 'Isomorphic: ', GM.is_isomorphic() print 'Mapping between the two jars: ', GM.mapping
这将打印:
希望这有帮助。在
这里是一个使用NetworkX isomorphism checking作为基础来做我理解你要问的事情的一个努力。。。在
假设您使用两个jar文件的内容创建文本文件,例如使用the methods here。在
这段代码将加载两个jar文件并将这些图加载到NetworkX中。这里的例子被简化为每个路径名中只有两个级别,但是一般原则仍然是相同的。。。如果您发布一些示例内容,我们可以调整
get_edges()
函数来处理更深层次的嵌套。在这将打印:
^{pr2}$希望这有帮助。在
相关问题 更多 >
编程相关推荐