C中的图形实现

时间:2011-03-30 20:04:43

标签: c algorithm graph

我想知道实现图形数据结构及其相关算法的最佳和最快方法。

  1. 本书建议使用Adjacency-List。
  2. 但是当我想找到两个顶点v1v2

    之间的边缘时,我无法理解大图

    我将不得不遍历数组O(n)

    我的理解是否正确,或者有更好的方法来完成这项工作。

3 个答案:

答案 0 :(得分:2)

首先,它不是O(n)。保持列表排序,它将是O(logN)。邻接列表不一定必须由链表实现。拥有阵列更常见。

另一种非常流行的方法是邻接矩阵n x n,其中如果i和j连接,则[i] [j]为1(或边的权重),否则为0。这种方法对于具有许多边缘的密集图形是最佳的。对于稀疏图,相邻列表往往更好

答案 1 :(得分:0)

您可以使用邻接矩阵代替列表。它可以让你很快找到边缘,但它会占用大量图形的大量内存。

答案 2 :(得分:0)

实现图表的方法有很多种。您应该选择最适合您算法的算法。一些想法:

a)全局节点和边缘列表。

b)全局节点列表,每节点边缘列表。

c)邻接矩阵(A [i] [j] = w(连接Vi-Vj的边缘,如果存在),否则为0

d)边缘矩阵。(如果Ei连接节点Vj,则A [i] [j] = 1)