《欧拉图相关的生成与计数问题探究》 - 学习笔记

欧拉图的判定:都会。

求任意一条欧拉回路:都会。

求字典序最小的欧拉回路/路径

考虑从一个点开始任意走,为什么走不出一条欧拉回路/路径。这是因为走了若干步之后图会被分成若干个边双,这些边双形成了一条链的结构,当前点和终点在链的两头。此时如果走了桥边,那么同一个边双的其他边就走不到了。

但是补救的方法也是有的,可以走完之后再回过头来把这个边双组成的环塞回去。

所以就可以这么做:每次选择出边中编号最小的走过去,最后一定可以走出一条路径/回路,然后再倒着往回看,见到一个点还有未遍历的出边时就说明这一步走了不合法的桥边,所以再把这个点双塞回去即可。容易证明这样的字典序一定是最小的。

De Bruijn序列

如果把每一个长度为 \(n\) 的 01 串看做点,那么就转化为求一条哈密顿回路,这显然不太能做。

所以把它看做边,把长度为 \(n-1\) 的串看做点,就转化为求欧拉回路了。

混合图欧拉回路

先把无向边任意定向,然后反转就可以使得两个点的 \(in-out\) 分别加减 2 。

这显然可以网络流求解。

中国邮递员问题

这显然可以转成费用流求解。

欧拉回路计数

给一个有向半欧拉图,求以 1 为终点的欧拉路径个数。

整一个神奇的映射:任意找一棵以 1 为根的内向树,再把每个点其他的出边任意排序,那么这样的方案与欧拉路径一一对应。

方案转欧拉路径:走到每一个点的时候,如果还有非树边没有走那就按照定的顺序走,否则走树边。只需要证明这样走在任意时刻都只有一个弱连通分量和一堆孤立点即可。考虑第一次走树边的时候,这个点的出度恰好比入度大 1 ,所以它已经没有入度了,所以走了树边之后就变成孤立点,没有问题。

欧拉路径转方案:把走出每个点的最后一条边作为树边即可。如果有环那么就没办法从环里出来了。

得到式子 \(T_{1} d_{1} ! \prod_{i=2}^{n}\left(d_{i}-1\right) !\)

有向欧拉图求任意一个欧拉回路也和这个类似,但是要钦定走的第一条边是从 1 出发的编号最小的边,所以方案数是 \(T_{1} \prod_{i=1}^{n}\left(d_{i}-1\right) !\) 。由此也证明了 \(T_1=T_2=\cdots=T_n\)

posted @ 2021-02-07 20:49  p_b_p_b  阅读(375)  评论(0编辑  收藏  举报