无向图的邻接矩阵和邻接表和最小生成树的格式怎么写
时间: 2024-03-04 07:49:53 浏览: 99
Prim算法计算最小生成树(无向图&邻接矩阵)_算法_数据结构_
5星 · 资源好评率100%
邻接矩阵:
假设有 $n$ 个节点的无向图,邻接矩阵可以用一个 $n \times n$ 的矩阵 $M$ 来表示。其中,$M_{i,j}$ 表示节点 $i$ 和节点 $j$ 之间是否有边相连,如果有则为边的权重,如果没有则为无穷大。邻接矩阵的表示如下:
$$
M=
\begin{bmatrix}
0 & w_{1,2} & w_{1,3} & \cdots & w_{1,n} \\
w_{2,1} & 0 & w_{2,3} & \cdots & w_{2,n} \\
w_{3,1} & w_{3,2} & 0 & \cdots & w_{3,n} \\
\vdots & \vdots & \vdots & \ddots & \vdots \\
w_{n,1} & w_{n,2} & w_{n,3} & \cdots & 0 \\
\end{bmatrix}
$$
其中,$w_{i,j}$ 表示节点 $i$ 和节点 $j$ 之间的边权重,如果节点 $i$ 和节点 $j$ 之间没有边相连,则 $w_{i,j}=\infty$。
邻接表:
邻接表是一种更加紧凑的表示方法,对于每个节点 $i$,我们用一个链表来存储该节点与其它节点之间的边。具体来说,对于节点 $i$,我们维护一个链表 $L_i$,链表中的每个节点表示节点 $i$ 与某个节点之间的一条边。邻接表的表示如下:
$$
\begin{aligned}
L_1 &= [(2,w_{1,2}),(3,w_{1,3}),\cdots,(n,w_{1,n})] \\
L_2 &= [(1,w_{2,1}),(3,w_{2,3}),\cdots,(n,w_{2,n})] \\
L_3 &= [(1,w_{3,1}),(2,w_{3,2}),\cdots,(n,w_{3,n})] \\
&\cdots \\
L_n &= [(1,w_{n,1}),(2,w_{n,2}),\cdots,(n-1,w_{n,n-1})]
\end{aligned}
$$
其中,$(i,j)$ 表示节点 $i$ 和节点 $j$ 之间的边,$w_{i,j}$ 表示边的权重。
最小生成树:
最小生成树是一种用于无向图的算法,其目的是寻找一棵树,使得该树连接了图中的所有节点,并且边权重之和最小。最小生成树可以使用 Prim 算法和 Kruskal 算法来实现。
最小生成树的格式通常是一个包含 $n-1$ 条边的集合,其中 $n$ 是图中节点的个数。每条边都表示为 $(u,v,w)$ 的形式,表示节点 $u$ 和节点 $v$ 之间有一条边,边权重为 $w$。
阅读全文