我想知道实现图形数据结构及其相关算法的最佳和最快方法。
但是当我想找到两个顶点v1
和v2
我将不得不遍历数组O(n)
。
我的理解是否正确,或者有更好的方法来完成这项工作。
答案 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)