如何将有向无环图保存到磁盘?

发布于 2024-10-14 09:09:14 字数 106 浏览 4 评论 0原文

所以,我用 C++ 创建了一个有向无环图,现在我想将它保存到文本文件,或者可能是文件。我该怎么做?

PS:抱歉造成混乱...我的意思是问如何格式化文件。

提前致谢!

So, I have created a directed acyclic graph in c++, now I want to save it to a text file, or maybe files. How do I do that?

P.S: sorry for confusion... I mean to ask how to format the file.

Thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

深空失忆 2024-10-21 09:09:18

您可以创建一个矩阵,其中矩阵中的 (i,j) 条目表示节点 i 和节点 j 已连接。

要将其写入磁盘,我会写出节点的数量,然后逐行写出矩阵。通过这种方式,您将向磁盘写入 n^2 + 1 个数字。

然而,当图稀疏时(意味着边的数量<<节点的数量),这种方法效率低下。但它确实有一个简单的序列化结构。

You could create a matrix where the (i,j) entry in the matrix denotes that node i and node j are connected.

To write that to disk, I'd write out the the number of nodes there are, and then write out the matrix line by line. In this way you will be writing out n^2 + 1 numbers to the disk.

However, this approach is inefficient when the graph is sparse (meaning that the number of edges << number of nodes). But it does have a simple serialization structure.

尽揽少女心 2024-10-21 09:09:17

一种简单的方法是首先保存所有节点,并为每个节点分配一个节点 ID,然后使用起始节点和结束节点的节点 ID 保存所有弧。

这将处理所有情况(包括非连通图、多重连通图、循环...等)

A simple way is to save first all nodes assigning to each of them a node ID, then save all arcs using the node ID of starting and ending node.

This will handle all cases (including non-connected graphs, multiply connected graphs, loops... etc.)

笑着哭最痛 2024-10-21 09:09:17

查看 graphviz 和“点”语言,了解其他人如何做到这一点的示例。

基于现有文件格式总是比发明自己的文件格式更好 - 通常他们可能已经想到了您没有想到的东西。如果您坚持使用稳定的语言,graphviz 网站上还有很多格式和工具的链接。

Have a look at graphviz and the 'dot' language for an example of how someone else did it.

Basing your file format on an existing one is always a better idea than inventing your own - often they may have thought of stuff you haven't. And if you stick to the stabdard laguage, there's also lots of links to formats and tools on the graphviz website.

生寂 2024-10-21 09:09:17

如果图形中的每个顶点都有某种 ID,您可以在文件中使用以下结构:

<num vertexes>
1 <num neighbors> <neighbor ID> ... <neighbor ID>
...
N <num neighbors> <neighbor ID> ... <neighbor ID>

或者您可以使用方阵来保存图形。

If each vertex in your graph has some kind of ID you can use following structure for your file:

<num vertexes>
1 <num neighbors> <neighbor ID> ... <neighbor ID>
...
N <num neighbors> <neighbor ID> ... <neighbor ID>

Or you can use square matrix to save your graph.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文