当前位置: 首页 > 知识库问答 >
问题:

邻接信息应该存储在图形对象中还是存储在顶点本身中?

穆仲卿
2023-03-14

为了演示邻接列表的概念,我假设很容易将列表表示为列表的列表,并将顶点表示为数字,然后将它们放在一个数组中,在那里我们可以通过索引直接在图中引用它们。一旦我们得到一个顶点的索引,我们就可以得到相应的列表数组。

然而,对于实际对象,顶点不能仅仅由数组索引引用,我假设需要创建一个单独的顶点对象。在这种情况下,我的问题是边缘信息应该实现在哪里。

在基于面向对象的编程语言(如java)中,我看到了基于邻接列表的图实现的实现,其中邻接信息存储在顶点对象本身中,具有某种类型的数据结构(如数组、列表等)的数据成员。然而,我也看到人们通过维护边列表来实现图对象本身中的邻接边信息。

至于边缘信息应该存储在哪里,这更多的是个人偏好吗?

共有1个答案

赵夕
2023-03-14

我认为这取决于您希望图形API看起来是什么样子。

例如,假设该图使用表示顶点的任意泛型类型。在这种情况下,不需要定义内部使用的顶点包装器(并在其中管理邻接),您可以简单地将邻接数据结构作为graph类的成员:

public class Graph<V> {
  private Map<V, Set<V>> adjacencies;
  ..
}  

另一方面,如果您确实希望公开一个顶点对象及其邻接(我没有找到一个很好的理由),那么您应该小心数据一致性。邻接数据必须为调用方只读(或进行防御复制),否则调用方可能会以不对称的方式更改边。

 类似资料:
  • 为了使用JWT保护REST API,根据一些材料(如本指南和本问题),JWT可以存储在本地存储或Cookies中。根据我的理解: localStorage受XSS限制,通常不建议在其中存储任何敏感信息 对于cookie,我们可以应用“httpOnly”标志,以降低XSS的风险。然而,如果我们要从后端的Cookies中读取JWT,那么我们将受到CSRF的约束 因此,基于上述前提,最好将JWT存储在C

  • 数据是非常小的,就像水果的列表,不会经常改变,也只有一个服务将使用这个数据和服务到其他服务,请提到您的方法的优点和缺点。

  • 问题内容: 在数据库中存储图像的常用方法是在存储数据之前将图像转换为数据。此过程将使大小增加33%。或者,可以将图像直接存储为;例如: 然后用 使用后一种方法,我们可以节省1/3的存储空间。为什么像在MySQL数据库中那样存储图像更常见? 更新: 关于将图像存储在数据库中的优点和缺点的争论很多,大多数人认为这不是一种实用的方法。无论如何,在这里我假设我们将图像存储在数据库中,并讨论了这样做的最佳方

  • 问题内容: 我想在HTML5中存储一个JavaScript对象,但是我的对象显然正在转换为字符串。 我可以使用来存储和检索原始JavaScript类型和数组,但是对象似乎无法正常工作。应该吗 这是我的代码: 控制台输出为 在我看来,该方法是在存储输入之前将输入转换为字符串。 我在Safari,Chrome和Firefox中看到了这种行为,因此我认为这是我对HTML5Web存储规范的误解,而不是浏览

  • 我想将 JSON 存储在卡桑德拉数据库中。JSON 的每个字段都应映射到其各自的列。 可能吗?如果可能的话,我如何才能实现它?。 请帮帮我..

  • 我正在使用react进行我的应用程序。我有一个,我想要一个背景图像。但我不能让它表现出来。 当我把它作为它工作得很好,但我听说我应该把它放在根目录下名为的文件夹中,所以它是,但这对我来说不适用,并且给了我: 您试图导入项目src/目录之外的.../image/bgimage.png。 有人能告诉我在reactJS中包含图像资产的正确方法吗?