📅  最后修改于: 2023-12-03 15:42:11.244000             🧑  作者: Mango
本章是GATE CS 2008考试中的第67章,主要涵盖以下内容:
本节主要介绍离散数学中的基本概念和术语,包括:
下面是一个关于集合论的例子:
集合是由若干个元素组成的一个整体,用大括号括起来表示。例如:{1, 2, 3} 表示三个元素 {1, 2, 3} 组成的集合。集合中的元素可以是任何对象。
本节主要介绍图论的基础知识和算法,包括:
下面是一个关于最短路径算法的例子:
- Dijkstra算法是一种用于查找图中最短路径的算法。它是贪心算法的一种,只需要记住从起点到每个顶点的最短距离,而无需为每个顶点存储它们的前驱。
- 下面是Dijkstra算法的伪代码:
```python
1.初始化一个数组dist[],表示起点到i节点的距离,dist[s] = 0,其他节点距离赋值为inf(可以是一个较大数)
2.初始化一个长度为n的布尔数组visited[],visited[i]表示i节点是否已被访问过,visited[s]=1
3.循环n次,每次选择一个最短距离的节点u,并将visited[u]置为1
4.然后遍历图中的所有节点v,如果visited[v]=0,即v没有被访问过,并且dist[u]+w(u,v)<dist[v],则更新dist[v]=dist[u]+w(u,v)
5.最后的dist[]数组即为起点s到图中所有节点的最短距离
本节主要介绍网络流的基础知识和相关算法,包括:
下面是一个关于最大流算法的例子:
- Ford-Fulkerson算法是一种解决网络流问题的算法,它利用增广路的概念来不断增加流量,最终得到最大流。
- 下面是Ford-Fulkerson算法的伪代码:
```python
1.初始化一个空的流图。
2.找到一个增广路L。
3.如果L不存在,输出当前流的值,算法结束。
4.用L修改当前流。
5.重复步骤2。