所以,我在 C++ 中创建了一个有向无环图,现在我想将它保存到一个文本文件,或者可能是文件。我怎么做?
PS:抱歉混淆...我的意思是问如何格式化文件。
提前致谢!
所以,我在 C++ 中创建了一个有向无环图,现在我想将它保存到一个文本文件,或者可能是文件。我怎么做?
PS:抱歉混淆...我的意思是问如何格式化文件。
提前致谢!
一种简单的方法是首先保存所有为每个节点分配节点 ID 的节点,然后使用起始节点和结束节点的节点 ID 保存所有弧。
这将处理所有情况(包括非连通图、多重连通图、循环......等)
看看graphviz和 'dot' 语言,看看其他人是如何做到的。
将您的文件格式基于现有文件格式总是比发明自己的文件格式更好 - 他们通常可能已经想到了您没有想到的东西。如果你坚持使用 stabdard laguage,graphviz 网站上还有很多格式和工具的链接。
如果图中的每个顶点都有某种 ID,您可以为您的文件使用以下结构:
<num vertexes>
1 <num neighbors> <neighbor ID> ... <neighbor ID>
...
N <num neighbors> <neighbor ID> ... <neighbor ID>
或者您可以使用方阵来保存您的图表。
您可以创建一个矩阵,其中矩阵中的 (i,j) 条目表示节点 i 和节点 j 已连接。
要将其写入磁盘,我会写出节点的数量,然后逐行写出矩阵。通过这种方式,您将 n^2 + 1 个数字写入磁盘。
然而,当图是稀疏的(意味着边数<<节点数)时,这种方法效率低下。但它确实有一个简单的序列化结构。