【图论】欧拉路和哈密顿图
欧拉路的部分包括代码,哈密顿图是离散数学的内容
欧拉道路&欧拉回路
经过每条边且一个边只走一遍,区别是一个是回路一个是道路
理论
- 无向连通图的充分必要条件
- 欧拉道路:度数为奇数的节点数=0或2
- 欧拉回路:没有奇数度的节点
- 有向连通图的充分必要条件
- 欧拉道路:所有点入度=出度 or 有一个点入度=出度+1,有一个点出度=入度+1,其余入度=出度
- 欧拉回路:所有点入度=出度
- 构造:不断删边直到成为零图,删边的原则是若只有割边走割边,否则绝不走割边
方法
dfs(非递归版)
1 | stack<int> stk, ans; // dfs栈和答案栈 |
Hierholzers
求欧拉道路,倒序输出,字典序最小
1 | // 将起点设为1,若找到奇数度的节点就设它为起点 |
Fluery
1 | stack<int> stk; |
哈密顿图
-
哈密顿道路:经过每个节点的基本道路
-
哈密顿圈:经过每个节点的回路
-
哈密顿图:具有哈密顿圈的图
-
必要条件:
- 哈密顿图$G=(V, E)\Rightarrow V$ 的非空子集 都有
- 哈密顿圈 , ,其中 和 分别是含在圈 内部和外部的 度面的数目。
-
充分条件:
- 的简单图, 哈密顿图
- 阶简单图 图中有哈密顿道路
-
充要条件:简单图是哈密顿图图的闭包图是哈密顿图
分枝界定法
精确解,不复杂的图
- 消去操作:每行找最小元,同行减去;每列找最小元,同列减去;减去的数累和得到下界。
- 第一行找最小元,分类讨论:
- 包含在最优解中:
- 将所在行列删去,最小元对称位置(指原矩阵中的对称位置)的元设为正无穷
- 继续操作剩下的矩阵
- 不包含在最优解中:查看当前值是否最优,不是的话暂停搜索
- 将该元设为正无穷
- 对剩下矩阵进行消去操作
- 包含在最优解中:
- 重复以上操作,每次都选取当前的最优解