中国邮递员问题CPP

中国邮递员问题(CPP)涉及到找到一条经过图中每条边至少一次并返回起点的最短路径。当图中所有点度数为偶数时,存在欧拉回路作为答案。若有两个奇度点,可以通过找到这两点间最短路径来构建欧拉图。若奇度点超过两个,则需转化为最小匹配问题,通常使用状压DP解决。对于有向图CPP,通过构建最小费用流网络来寻找解决方案。混合图CPP是NPC问题,意味着其复杂性较高。
摘要由CSDN通过智能技术生成


问题描述:Chinese poster-man  problem,简称CPP,给出一张连通图,问经过每条边至少一次且起点和终点相同,所需走的最小路程。

无向图CPP

1.考虑当所有点度数均为偶数时,该图是欧拉图,因此任意一条欧拉回路都是答案

2.当有两个点是奇度点的时候,只需找到这两点间的最短路径,将最短路径上的边计入到原图中,这是得到了一张欧拉图(poj 1237 The Postal Worker Rings Once

3.当奇度点个数大于2时,需要使每个点的度数均变为偶数,即在2n个点之间连n条路,于是变为了无向图的最小匹配问题(KM算法时错误的,因为无法保证解的正确性,带花树开花算法是正确的),一般采用状压dp解决该问题。(poj 2404 Jogging Trails)

对于每个奇度点,用一个二进制位表示,1代表尚未匹配,0代表已经匹配,寻找当前状态下尚未匹配的两点匹配同时更新状态,然后利用记忆化搜索寻找最优解。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值