文章目录
1 基础算法
- BFS
- DFS
- Kosaraju:通过图遍历来确认连通性
有向图和无向图不一样,有向图要正反遍历两遍 - 最小生成树:Kruskal:适合稀疏图、Prim算法:适合稠密图
2 最短路径
2.1 单源最短路径:Dijkstra算法要把
路径规划:A*算法:贪心算法,不一定总能给出最优算法
f(n)=g(n)+h(n)其中h(n)是估计函数,可以自定义
Bellman-Ford:带负权图,所以要跑完所有的可能性
2.2 双源最短路径
Floyd-Warshall:带备忘的动态规划
Johnson:新加一个结点,跑Bellman-Ford单源最短路径,转化成路径,这样将负权图加减势能就可以转成正权图
3 最大流最小切
用 x i j x_{ij} xij表示每个边实际的流量,用 c i j c_{ij} cij表示每个边的流量限制
3.1 网络流需要满足的约束条件
- 容量约束条件
对于每个边 ( i , j ) ∈ E (i,j) \in E (i,j)∈E, 0 ≤ x i j ≤ c i j 0 \leq x_{ij} \leq c_{ij} 0≤xij≤cij - 流量守恒要求
∑ ( j , i ) ∈ E x j i = ∑ ( i , j ) ∈ E x i j \sum_{(j,i) \in E} {x_{ji}}=\sum_{(i,j) \in E} {x_{ij}} (j,i)∈E∑xji=(i,j)∈E∑xij
3.2 残量网络与可增广路
对于流网络
G
=
(
V
,
E
)
G=(V,E)
G=(V,E),对点i,j定义残存容量
c
f
(
i
,
j
)
=
{
c
(
i
,
j
)
−
x
(
i
,
j
)
i
f
(
i
,
j
)
∈
E
x
(
j
,
i
)
i
f
(
j
,
i
)
∈
E
0
o
t
h
e
r
w
i
s
e
c_f(i,j)=\left \{\begin{matrix} c(i,j)-x(i,j)&if(i,j)\in E\\ x(j,i)& if(j,i) \in E \\ 0& otherwise \end{matrix} \right.
cf(i,j)=⎩⎨⎧c(i,j)−x(i,j)x(j,i)0if(i,j)∈Eif(j,i)∈Eotherwise
所有大于0的残量弧所构成的网络称为残量网络,残量网络的每条s-t的路称为增广路
当某个边有流量的时候,相当于残存网络上就会有一个反向边
3.3 最大流满足的性质
- **最大流最小载量定理:**任意网络中,最大流的流量=最小割集的载量
- **增广路定理:**流量f是最大流当且仅当残量网络中不存在可增广路
3.4 Ford-Fulkerson算法
每次迭代中,寻找某条增广路径,然后使用p对流量进行修改,直到残量网络中不存在可增广路。
据说还有Edmonds-Karp算法
4 文献书写指南
作者、文献名、发表地点(期刊/会议)、卷期号、页码、年份
论文题目大小写规则:仅句首字母大写、首字母大写、全大写
虚词(介词、冠词、连词)和不定式的to首字母小写,但是超过5个字母的虚词如between、without应该大写
复合词如well-know的大写形式是Well-Know,一般不加标点符号,但是如果是问句一般加问好。
期刊会议:正规书写期刊全称,并在全称后括号标注期刊简称
注意不要乱序,IEEE Transactions on Computer(TOC)
卷期号:卷是从创刊开始累计的,期号是每年循环
在bibtex在源代码加{},这样避免只有首字母大写的情况
绘图:16:9,尽量节省纵向面积,尽量提高利用率
图片和正文要分开,否则不够正式