已知有6个顶点(顶点编号为0 ~ 5)的有向带权图G,其邻接矩阵A为上三角矩阵,按行为主序(行优先)保存在如下的一维数组中。 4 6 ∞ ∞ ∞ 5 ∞ ∞ ∞ 4 3 ∞ ∞ 3 3 (1)写出图G的邻接矩阵A; (2)画出有向带权图G; (3)给出一个拓扑序列; (4)求图G的关键路径,并计算该关键路径的长度。
时间: 2024-01-25 21:03:53 浏览: 32
(1)矩阵A为:
```
0 4 6 ∞ ∞ ∞
∞ 0 5 ∞ ∞ ∞
∞ ∞ 0 ∞ ∞ ∞
∞ ∞ ∞ 0 4 3
∞ ∞ ∞ ∞ 0 3
∞ ∞ ∞ ∞ ∞ 0
```
(2)画出的有向带权图如下:
```
4 6
0 ----> 1 ----> 2
| \ |
| \ | 5
4| v v
| 3 |
| / |
v / v
3 ----> 4 <---- 5
3
```
(3)一个拓扑序列为:0, 1, 2, 3, 4, 5。
(4)求图G的关键路径:
首先,我们需要求出每个顶点的最早开始时间(即最早完成时间的最小值)和最晚开始时间(即最晚完成时间的最大值)。最早开始时间可以通过拓扑排序和动态规划求解,最晚开始时间可以通过逆拓扑排序和动态规划求解。
根据拓扑序列,得到最早开始时间和最晚开始时间如下:
| 顶点 | 最早开始时间 | 最晚开始时间 |
| ---- | ------------ | ------------ |
| 0 | 0 | 0 |
| 1 | 4 | 4 |
| 2 | 10 | 10 |
| 3 | 10 | 12 |
| 4 | 14 | 14 |
| 5 | 17 | 17 |
然后,我们计算每条边的活动时间(即完成时间的差值),并选择活动时间最长的路径作为关键路径。计算活动时间和关键路径如下:
| 路径 | 活动时间 | 是否为关键路径 |
| ---- | -------- | -------------- |
| 0 -> 1 -> 2 -> 4 | 10 | 是 |
| 0 -> 1 -> 5 | 5 | 否 |
| 1 -> 2 -> 3 -> 4 | 6 | 否 |
| 1 -> 2 -> 3 -> 5 | 9 | 否 |
因此,图G的关键路径为0 -> 1 -> 2 -> 4,长度为10。