我必须在java中表示图形,但既不作为邻接列表也不作为邻接矩阵。
基本思想是,如果
deg[i]
是顶点i的退出度,那么它的neigboors可以存储在
中 edges[i][j]
其中
i <= j <= deg[i]
,但鉴于此
edges[][]
必须用一些值初始化我不知道如何使它与邻接矩阵不同..
有什么建议吗?
答案 0 :(得分:1)
据我所知,只有两种方法可以用语言表示图形。
您可以制作像
这样的关联矩阵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 :(得分:0)
你正在反对这个问题的下限。该图的两个主要表示已经非常适合各自的使用。
因此,为了制作对空间和时间都更好的东西,你必须将两者的想法结合起来。也意识到会有更好的实际性能,理论上你不会改进O(1)搜索或O(V * E)大小。
我的想法是将所有图形节点存储在一个数组中。然后,对于每个节点,具有表示为位向量的邻接列表。这基本上是一个类似矩阵的表示,但仅适用于图中存在的那些节点,使您的尺寸小于矩阵。由于可以针对位向量测试查询节点,因此相对于邻接列表将略微改进搜索。