随笔分类 - { 图论 { 欧拉路\哈密顿路 } }
摘要:题目大概说给一张有向图,要从0点出发返回0点且每条边至少都要走过一次,求走的最短路程。 经典的CPP问题,解法就是加边构造出欧拉回路,一个有向图存在欧拉回路的充分必要条件是基图连通且所有点入度等于出度。 而这题,果断联想到混合图欧拉回路的做法,用最小费用最大流解决: 先只考虑所有边都只走一次,计算出
阅读全文
摘要:题目求从某点出发回到该点经过所有边至少一次的最短行程。 这个问题我在《图论算法理论、实现及应用》中看过,是一个经典的问题——中国邮递员问题(CPP, chinese postman problem)也称为中国邮路问题,是我国数学家管梅谷教授于1962年首次提出的,引起了世界不少数学家的关注。例如19
阅读全文
摘要:求一个图的哈密顿路径的最大权及其路径数。显然状态压缩+DP。 dp[v][u][S] 表示从v走到当前顶点 u且走过的顶点集合是S的 最大权值和方案数 这题我用记忆化搜索,从终点开始递归进行,感觉这样比较容易转移。 就是搜索一个状态可以从哪些状态转移过来,顺便统计方案数。搜索时要注意一些细节,转移要
阅读全文
摘要:n位密码,要用尽可能短的序列将n位密码的10n种状态的子串都包括,那么要尽量地重合。 题目已经说最短的是10n + n - 1,即每一个状态的后n-1位都和序列中后一个状态的前n-1位重合。 这题是经典的欧拉路径问题吧,用n位数字10n种状态来作为边,而用重合的n-1位数字表示点。 具体的建图,每个
阅读全文
摘要:我把单词当作点,然后这样其实是不对的,这样就要判定是否是哈密顿通路。。 这题应该把单词的首尾单词当作点,而单词本身就是边,那样就是判定欧拉通路了。 有向图包含欧拉通路的充要条件是:首先基图连通,然后是所有点的入度=出度 或者 有且只有一点出度=入度+1(起点)且有且只有一点入度=出度+1(终点)。
阅读全文
摘要:有向连通图存在欧拉回路的充要条件是所有点入度=出度。 首先随便给定所有无向边一个方向(不妨直接是u->v方向),记录所有点的度(记:度=入度-出度)。 这时如果有点的度不等于0,那么就不存在欧拉回路,就需要改变那些无向边的方向。 而改变一个无向边的方向,相当于边上两个端点的入度和出度都变化了1,它们
阅读全文