邻接表和邻接矩阵是计算机科学中表示图的两种常见方法。
邻接列表:
- 邻接表将图表示为链表数组。
- 数组的索引代表一个顶点,其链表中的每个元素代表与该顶点形成边的其他顶点。
优点:
- 表示稀疏图(边较少的图)的空间效率。
- 添加顶点更容易。
缺点:
立即学习“Java免费学习笔记(深入)”;
邻接矩阵:
- 邻接矩阵将图表示为二维数组,其中第 i 行第 j 列的单元表示顶点 i 和 j 之间的边。
优点:
- 易于理解和实施。
- 对于密集图(具有更多边的图)非常有效。
- 快速检查两个顶点之间是否存在边。
缺点:
立即学习“Java免费学习笔记(深入)”;
- 需要更多空间(o(v^2),其中v是顶点数)。 添加顶点的时间复杂度为 o(v^2),可能比邻接表慢。
重要提示
- 事先告知面试官你将采用哪种方法,并告诉他/她的优点和缺点。
图遍历
找到最短路径bfs会更好
*有向图与无向图:*
-
有向图,也称为有向图,是每条边都有一个方向的图。边从一个顶点指向另一个顶点。
-
无向图是边没有方向的图。边 (x, y) 与边 (y, x) 相同。
加权与未加权图表:
-
加权图是为每条边分配权重或成本的图。这对于某些边具有不同重要性或长度的问题很有用。
-
未加权图是所有边的权重或成本相等的图。
自循环:
- 自环是将顶点连接到自身的边。
稀疏图与密集图:
-
稀疏图是边数接近最小边数的图。换句话说,顶点之间的边很少。
-
稠密图是边数接近最大可能边数的图。换句话说,顶点之间有很多条边。
循环图与非循环图:
-
循环图是一种至少包含一个循环的图(一条边和顶点的路径,其中顶点可以从自身到达)。
-
非循环图是没有循环的图。一种特殊类型的无环图称为树,是一种无环的连通无向图。
1 2 3 4 5 6 7 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
|