繁体   English   中英

具有最小成本(时间和空间)的图形表示

[英]graph representation with minimum cost (time and space)

我必须用Java表示图,但既不能表示为邻接表,也不能表示为邻接矩阵。

基本思想是

deg[i]

是顶点i的出口度,那么它的邻居可以存储在

edges[i][j]其中

i <= j <= deg[i]

,但鉴于

edges[][]

必须使用一些值初始化,我不知道如何使其与邻接矩阵不同。

有什么建议么?

据我所知,只有两种方法可以用一种语言表示图形。

  • 使用邻接矩阵
  • 或使用关联矩阵

您可以制作一个入射矩阵

E1 E2 E3 E4
V1 1 2 1 1
V2 2 1 2 1
V3 1 1 1 2
V4 1 1 2 1

您正在与这个问题的下限作斗争。 该图的两个主要表示形式已经很好地用于它们各自的用途。

  • 邻接表,最大程度地减少了空间。 您将很难使用少于每个指针1个指针的内存。 空格:O(V * E)。 搜索:O(V)
  • 邻接矩阵非常快,但代价是v ^ 2空间。 空间:O(V ^ 2)。 搜索:O(1)

因此,要想创造出既对空间又对时间都更有利的东西,您必须将两者的思想结合起来。 同时也将意识到只有更好的实用性能,理论上您不会提高O(1)搜索或O(V * E)大小。

我的想法是将所有图形节点存储在一个数组中。 然后,对于每个节点,都有一个表示为位向量的邻接表。 从本质上讲,这将是一个类似于表示形式的矩阵,但仅适用于图中存在的那些节点,从而为您提供比矩阵小的尺寸。 由于可以针对位向量测试查询节点,因此与邻接表相比,搜索会稍有改善。

还请检查稀疏矩阵表示形式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM