码迷,mamicode.com
首页 > 其他好文 > 详细

Hamilton问题的一些假做法和一种真做法

时间:2018-12-23 20:49:45      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:起点   解法   介绍   target   https   重复   一点   判断   需要   

Hamilton问题

  Hamilton回路/路是指从某个点出发,不重复的经过每个点,最后回到起点/随便停留的路.

  从刚开始学OI买了信息学一本通,这个问题就常常出现.由于它题面的简洁性,看起来无比优美的性质和欧拉回路的高度相似性,它看起来很像一个好算法,可惜,这是一个NP-hard问题.

  因为可能会有不明真相的人点进来看,我首先介绍一下一种真实的做法:状压dp,似乎也不需要介绍了,当然搜索也是可以的,总之都是指数级算法了.

  但是它却如幽灵一般给人解决它的希望...见到这种事情已经很多次了,今天决定写一写.

  单词游戏

  给定$n$个单词,求一种排列顺序使得相连单词首尾相接.$n<=10^5$

  这道题有两种解法:

  1.将单词作为点,如果两个单词可以首尾相接,那么连一条边,要求不重复的经过每一个点,是一个哈密尔顿路问题,于是这就得到了一个非常优秀的$2^{10^5}$的做法!

  2.将字母作为点,对于每个单词,将它的尾字母向首字母连边,要求不重复的经过每一条边,是一个欧拉路问题,于是这就得到了一个更加优秀的$10^5$的做法!

  这道题深刻的阐述了建图策略对于时间复杂度的影响,然而...这两种建图的复杂度都不是很高,如果可以设法进行一番逆变换,把一个普通图的哈密尔顿路转化为这个问题,再转化为欧拉路做,可以吗?

  这个想法极大的鼓舞了我,不过经过一段时间的尝试,我发现这个逆变换实际上是无法在多项式时间内出解的,反向构图同样需要指数级时间。

  

  今天学习网络流的时候又看到了一种新的假解法:

  无源汇上下界网络流. 无源汇上下界网络流. 无源汇上下界网络流.

  好高端啊,虽然还是假的.但是这个算法想要证伪可就不那么显然了.

  对于每个点进行拆点限制流量上下界均为为1,对于原有的边下界为0上界正无穷.

  看起来是不是非常对呀...

  但是这种算法可能会把明明不符合条件的图也判断成满足条件,为什么?因为解决无源汇问题时,往往是通过转化为多源多汇再进一步转化为超级源汇来解决的,所以求出的可能不是一条路,而是一些无法相连的路。

  至此妄想解决哈密尔顿问题的这个尝试彻底宣告破产了.

  有的东西就是这样,看起来好像就差一点了,其实差的很远,可能总是会觉得还有希望,但其实根本就没有希望。

  人生是不是也是这样呢?(语文老师说加上这一句作文就能再高五分)

  ---shzr

Hamilton问题的一些假做法和一种真做法

标签:起点   解法   介绍   target   https   重复   一点   判断   需要   

原文地址:https://www.cnblogs.com/shzr/p/10165374.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!