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

1 基本概念

好多都没用。

欧拉图:存在欧拉回路。

半欧拉图:不存在欧拉回路但存在欧拉路径。

2 欧拉图的判定

小学奥数。

3 欧拉回路的生成

3.1 Fluery 算法

实在不想学这玩意……

3.2 Hierholzer 算法

相信大家都会。如果觉得自己不会,那么大概率是不知道叫这个名字。

问题 3.5:字典序最小的欧拉回路。字典序按照点的序列比较。

显然从最小的点开始。每个点的出边按出点从小到大排序。然后直接跑。

正确性大概注意到回溯过程中又走了别的边(也就是拼上了另一条路径/回路),那肯定是无法避免的(不然回不去了)。所以每次都是尽可能选了最小的路径/回路拼了进去。

4 欧拉图相关的性质

说些看起来都是废话但就是会降智的东西,我能怎么办。

5 欧拉图的生成问题

5.1 De Bruijn 序列

还是杂题选讲。

不过就是给出一个思路:看起来哈密顿的,可以反客为主把表示成点变成表示成边,然后欧拉。

5.2 混合图欧拉回路

实际上就是对无向边定向使得每个点出入度相等。

随便钦定每条边的方向,然后调整。记录每个点的出入度之差,反转一条边相当于入点 \(-2\),出点 \(+2\)

只保留原图中的无向边(且按钦定的方向连边),然后一开始差为正的从源点连,差为负的连向汇点。跑最大流,如果满流就调整成功了,然后通过每条边有没有流满还原方案。否则无解。

5.3 中国邮递员问题

每条边至少经过一次,考虑钦定每条边的经过次数,仍然要使得每个点出入度相等。

同样记录出入度之差,添加一条边的经过次数,相当于入点 \(-1\),出点 \(+1\)

类似 5.2 的方法建图即可,不过由于要最小费用,变成费用流。同样是不满流无解。

5.4 冲国邮递员问题(?)

无向图也一样。不过只需要每个点度数变成偶数就行。但不能拆点,所以直接看成每个度数是奇数的点两两匹配,权值是最短路。然后写奇怪的一般图匹配算法。

6 欧拉图相关的计数

6.1 欧拉图计数

我寻思着这和欧拉回路有什么关系。

6.2 欧拉子图计数

我寻思着这和欧拉回路有什么关系。

我还以为是什么导出子图,结果来个这。

6.3 欧拉回路计数

正 片 开 始

6.3.1 有向图欧拉路径

给定一个有向欧拉图 \(G = (V, E)\) ,求以 \(1\) 号点为终点的欧拉路径的数量,其中保证 \(1\) 号点出度比入度小 \(1\)(此处论文只讨论了欧拉图,实际上个人认为半欧拉图也可以求,若有不对请指出)

(若是欧拉图,就从 \(1\) 开始,具体过程差不多。)

搞一个人类智慧双射。答案是 \(T_1d_1!\prod_{i\ne 1}(d_i-1)!\)。其中 \(T_1\) 是以 \(1\) 为根的内向树个数,可以用矩阵树定理求。

其意义是选出一个内向树,然后对每个点不在树上的出边,定顺序。

\(\leftarrow\):从起点(显然唯一确定)开始,按顺序走没被走过的最小的非树边,若没有就走树边。要证这是一条欧拉回路,只需证明走非树边 \((u,v)\) 时它们两个弱联通即可(论文中说要 Fluery 算法?还是不想学,实际上因为前面从起点走出一条路径,应该是显然等价于欧拉图的判定条件的)。因为 \(u\) 还在走非树边,说明树边没被走过。其父亲因为不是最后一次到达,也说明它的没被走过。同理可以从 \(v\) 也推到 LCA。

\(\rightarrow\):除了 \(1\) 号点,把每个点最后一次走的出边设成树边。要证明这是一棵树,也就是没有环。反证。如果有环,那么就死在这个环上了。而 \(1\) 显然不在环上,和 \(1\) 是终点矛盾。

6.3.2 有向图欧拉回路

与上面几乎一样,不过要对 \(1\) 走出的第一条边进行区分,也就是除掉 \(d_1\),得到 \(T_1\prod(d_i-1)!\)

这就是 BEST 定理。同时也可看出欧拉图上 \(T_i\) 相等。

(写到这里突然发现讨论了半欧拉图的路径数量,可以直接转成欧拉图欧拉回路。不过式子一样,应该没问题)

6.3.3 无向图欧拉路径/回路

NPC。

就这?

7 总结

正 片 结 束

posted @ 2021-05-25 21:39  ATS_nantf  阅读(318)  评论(0编辑  收藏  举报