Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graph 如何序列化图形?_Graph - Fatal编程技术网

Graph 如何序列化图形?

Graph 如何序列化图形?,graph,Graph,这是一个问题:如何序列化图形?我看到了,但我不确定这是否足够 这看起来像是一个非常令人困惑的“开放性问题”,候选人可能会问更多关于需求的问题:节点和边是什么,它们自己是如何序列化的,这个图是加权的、定向的,等等,图中有多少节点/边。基础设施呢?它是普通文件系统还是我们应该/可以使用数据库 那么,你将如何回答这个问题 Meh。不管你把它储存在什么地方,它基本上是: 输出图形中的每个顶点。如果您没有首先获得所有顶点,那么当您读回图形时,重建图形是一个PITA 现在可以在顶点之间存储边。希望您的顶点具

这是一个问题:如何序列化图形?我看到了,但我不确定这是否足够

这看起来像是一个非常令人困惑的“开放性问题”,候选人可能会问更多关于需求的问题:节点和边是什么,它们自己是如何序列化的,这个图是加权的、定向的,等等,图中有多少节点/边。基础设施呢?它是普通文件系统还是我们应该/可以使用数据库


那么,你将如何回答这个问题

Meh。不管你把它储存在什么地方,它基本上是:

输出图形中的每个顶点。如果您没有首先获得所有顶点,那么当您读回图形时,重建图形是一个PITA

现在可以在顶点之间存储边。希望您的顶点具有某种形式的ID,以唯一地标识它们。我看到的版本是“在数据库中存储(图|树)”。因此,读入节点,存储在哈希表或类似的表中,进行O(1)分期查找。然后,查找每个边、查找ID源和ID目标以及链接


瞧,你已经反序列化了。如果它不是一个DB,通常也有同样的想法——先序列化节点,然后序列化边

Meh。不管你把它储存在什么地方,它基本上是:

输出图形中的每个顶点。如果您没有首先获得所有顶点,那么当您读回图形时,重建图形是一个PITA

现在可以在顶点之间存储边。希望您的顶点具有某种形式的ID,以唯一地标识它们。我看到的版本是“在数据库中存储(图|树)”。因此,读入节点,存储在哈希表或类似的表中,进行O(1)分期查找。然后,查找每个边、查找ID源和ID目标以及链接

瞧,你已经反序列化了。如果它不是一个DB,通常也有同样的想法——先序列化节点,然后序列化边

我认为你的回答很合理。IMO,基本上你需要了解应用背景,我至少会问:

  • 是不是导演的
  • 与顶点、边和图形本身相关联的属性是什么
  • 图是稀疏的吗(如果是这样,我们最好不要使用邻接矩阵)
最简单的方法是将其存储为边缘列表。 然而,在不同的应用中,有一些经典的方法可以实现这一点。 例如,如果正在进行电路模拟,则图形是稀疏的,并且 生成的图形/矩阵可以存储为列压缩形式。如果您正在解决(最小成本)最大流问题,那么已经有了一种格式,这样公共解算器就可以读写它。如果您想让人可读,结构化方式也是一个不错的选择,XML可以提供自我验证(已经有一个标准)。顺便说一句,格式很完备。

我认为你的答案很合理。IMO,基本上你需要了解应用背景,我至少会问:

  • 是不是导演的
  • 与顶点、边和图形本身相关联的属性是什么
  • 图是稀疏的吗(如果是这样,我们最好不要使用邻接矩阵)
最简单的方法是将其存储为边缘列表。 然而,在不同的应用中,有一些经典的方法可以实现这一点。 例如,如果正在进行电路模拟,则图形是稀疏的,并且
生成的图形/矩阵可以存储为列压缩形式。如果您正在解决(最小成本)最大流问题,那么已经有了一种格式,这样公共解算器就可以读写它。如果您想让人可读,结构化方式也是一个不错的选择,XML可以提供自我验证(已经有一个标准)。顺便说一句,格式非常完备。

哪种语言?在C#中,足以将您的类标记为Serializable。我认为您提到的答案完全令人满意。列表和矩阵都可以进行调整,以容纳变量和权重。哪种语言?在C#中,足以将您的类标记为Serializable。我认为您提到的答案完全令人满意。列表和矩阵都可以进行调整,以容纳变量和权重。