总体框架-思维导图
图的存储结构
邻接矩阵法
#define MAXSIZE 100
typedef struct Graph{
int G[MAXSIZE][MAXSIZE];//矩阵
int Vertex[MAXSIZE];//定顶点表
}Graph;
邻接表法
typedef struct Arc{//边
int v;//邻接点的信息
struct Arc *next;//下一个邻接顶点的边指针
}
typedef struct VNode{//顶点
int data;//顶点信息
struct Arc *first;//第一个邻接的顶点边指针
}VNode;
typedef struct Graph{
struct VNode G[MAXSIZE];//链接表
int ArcNum;//边数
}Graph;
部分习题错题
- P236 T6
A简单路径:顶点不重复出现,为了实现最短的路径,肯定是不会有环的,而没有环,那么就不会有重复的顶点出现,因此A正确
B/C肯定错的,DJ本来就是用来算最短路径的,但是不适合有负权值的图
D:未必是其子集,如果通过中转点实现顶点到另一个顶点的距离缩短,那么path就会更新,所以未必是其子集
- P237 T14
I有环图是找不到入度为0的顶点的,使得无法进行拓扑排序,因此有环图必定不存在拓扑排序
III拓扑图唯一,其图形未必唯一,可能有多种结果
在这个图中,拓扑排序为1,2,3,但是顶点3的入度为2,推翻iii的说法
- P237 T13 T15
如果的得不出拓扑排序,说明该图存在环,而存在环在环内必定即有任意一个顶点到另一个顶点的路径,也有从另一个顶点到该顶点的路径,因此该环必定是强连通的,所以肯定含有顶点数>1的强连通分量
- P238 T21【2013年统考真题】⭐
由此图我们可以看书,b+d+e+h=27;
b+f+h=27;
b+d+c+g=27
有三条一样最长的最长路径,没法判断哪个是关键路径
法1:画表
因此关键活动有 b,c,d,e,f,g,h
关键路径有:①1,3,5,6 对应关键活动:b,f,h
②1,3,2,5,6 对应关键活动:b,d,e,h
③1,3,2,4,6 对应关键活动:b,d,c,g
共三条关键路径,需要缩短整个工程的时间,必须缩短所有关键路径上活动总时间都减少,即只有C选项满足对三个关键路径的总的活动时间都缩小了
- P238 T23
I关键路径上改变关键活动,使关键活动时间延长,那么整个工程的时间将延长,且关键路径不变,但如果是使得关键活动时间减少,就有可能使得产生不同的关键路径
II正确
III缩短关键路径的时间可能会影响关键路径使其发生变化
Ⅳ正确,使得所有关键路径的总时间都缩短,那么整个工程的工作时间就会缩短
- P239 T29【2019年统考真题】
方法:找有多少个不同的操作符和操作数,注意的是操作数可能会有隐含的操作符,如乘法