我正在研究如何表示软件的功能调用图并将数据结构保存到文件中。我知道在内存中图形可以采用邻接表或正交表的形式。我的问题是如何将数据结构保存到文件中,以便以后可以将其重新加载到内存中以进行进一步的操作。它可以用json表示,还是用Graph数据库(例如Neo4j)表示?此外,如果转储到Neo4j中,是否可以计算函数调用相似度?
答案 0 :(得分:0)
它可以用json表示还是用Graph数据库(例如Neo4j)表示?
都可以。 您可以使用json表示图,例如GraphSON,JSON Graph等。 也可以将它们加载到诸如Neo4j之类的图形数据库中。
还有,如果转储到Neo4j中,是否可以计算函数调用相似度?
我不熟悉函数调用相似性,但是Neo4j的图形算法包(https://neo4j.com/docs/graph-algorithms/current/algorithms/similarity/)中有一些关于相似性的算法,您可以看看。
但是,如果您所有的计算都在内存中完成,这意味着您仅读取一次磁盘上的数据,然后选择自己进行计算,那么直接将内存图数据结构转储到磁盘上可能是一个更好的主意,易于实现,并可能为您提供更好的数据加载性能。
图形存储的格式高度依赖于图形计算的形式,因此,如果您可以提供一些有关计算函数调用相似性的信息,它将为我的回答提供很好的帮助。