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

Hamilton问题

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

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

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

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

  单词游戏

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

  这道题有两种解法:

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

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

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

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

  

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

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

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

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

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

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

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

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

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

  ---shzr

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

时间: 2024-08-29 15:52:11

Hamilton问题的一些假做法和一种真做法的相关文章

你在做哪一种项目管理

小编今天才知道原来项目管理还分模式的.对于一些项目管理小白的小编不知道项目管理的典型模式还是可以原谅的.但是,作为业内人士的项目经理们,你在做哪一种项目管理,如果你也说不出来,以后容易给项目管理菜鸟笑话哦.据说项目管理过程分为两大类,学过项目管理理论知识的,应该都知道吧.项目管理模式就是基于这两分类而产生的. 项目由过程组成,项目过程可以分为两大类:一类是创造项目产品的过程(Project oriented Processes),另一类是项目管理过程(Project Management Pro

HDU - 1248 寒冰王座(完全背包做法和暴力优化做法)

题意:完全背包裸题 每件物品的cost就是它的value. 1.完全背包法 1 #include <iostream> 2 using namespace std; 3 4 const int maxn=11111; 5 int dp[maxn]; 6 7 int main(){ 8 int t; 9 cin>>t; 10 int value[4]={0,150,200,350}; 11 while(t--){ 12 int n; 13 cin>>n; 14 for(i

js去重的es6做法和es5做法

1.es5做法var array=[1,3,4,5,2,3,4,5,5,5];var ob={};var result=[];array.forEach(function (a) { var key=(typeof a)+a; console.log(key) if(!ob[key]){ ob[key]=true; result.push(a) } console.log(result)})2.es6做法let array = [1, 1, 1, 1, 2, 3, 4, 4, 5, 3]; le

7亿美元融资是假 外卖刷单是真 美团自打脸

对于美团而言,本周的日子并不好过.先是被点评.糯米.满座联合调戏一番,随后又被红杉资本站出来否定领投7亿美元,最后号称外卖业务单日突破150万单也被挖出刷单的证据,左一巴掌,又一耳光,再来一个劈头盖脸,美团真心背到了极点. 年终将至,业界对美团的质疑声此起彼伏,且越来越尖锐,而美团暴露出来的问题也越来越明显,尤其在业务困境与财务压力问题上.7亿美元融资的消息似真而假,这背后的小道消息运作不免让人怀疑是美团暗中推动以达到抬高自家身价的目的,毕竟这种手段在互联网行业很常见,尤其对于处在业绩较好但资金

博牌旗舰店售卖假皮包,无耻商家真不要脸!

我是一名资深的淘宝买家,过去几年来,我一直有很好的网购体验,而这一次却伤透了我的心,2015年5月28号,我在天猫博牌旗舰店购买了一个"真皮"公文包,首先就被博牌旗舰店的海报所吸引,上面郑重承诺,这是绝对真皮,进口的头层牛皮,……我看了下价格,298元,当时我觉得298元买一件头层牛皮的公文包,确实很划算, 我一时冲动,毫不顾忌的就下单了,物流确实也挺快的,2天后我收到产品,当时确实很高兴,一开始我从没有怀疑过是假皮,直到有一天,大约是收到货的第8天,一个偶然的,我的皮包被我刮了一下,

要加薪,就要做这几种人,看看有没有你

在职场中,总有那么一些人显得比较与众不同.当然,对于他们来说,总会是老板潜在认为的加薪升职对象,这些人会是哪类人呢?架构师米洛带你看看. 1.头脑灵活的人 读书学习好与坏与工作做的好完全是两码事,书读的好,工作不一定做得好,头脑灵活多变的人,总有办法帮老板搞定问题,自然会获得青睐. 2.效率高的人 办事能力和办事效率很强的人,能承担更多的任务,搞定更多的问题,敢做.敢干,只有这样才能抓住机会. 3.不安于现状,不断努力的人 "一天三顿饱,老婆孩子热炕头",一辈子捧着"铁饭碗&

转:什么叫做“假学习”?什么叫做“真学习”?

什么叫做"假学习"? 一.QQ群      一天上班开始看QQ群,聊到下班.里面争论的火热.美其名曰在学习,实际上你什么都没学到.好记性不如烂笔头.争论百变,不如看则帖子.  因为你在QQ群里争论的都是你会的东西(不会的东西,你也不会争论).所以你永远学不到新的东西.不如看看看一则你能学到的贴子.  二.看书     买一堆书,有空看看.看书,这是典型的假学习.看书看不懂还在看,就是假学习,欺骗自己,安慰自己正在学习而已.专业书都写得很好,但大都是写给已经懂的人看的.看书的最大作用就是

中科红旗假竟拍与国有资产真流失

6月30日,新浪科技刊文"国产操作系统厂商中科红旗開始拍卖旗下资产".读后有感. 文章说:6月27日,中科红旗公布公告,宣布拟以公开竞价方式转让公司所有注冊商标.所有软件著作权等资产.文章还说:中科红旗为资产竞买人提出了四项条件,并要求有意向的竞买人在2014年7月8日前提交书面竞买意向书.而兴许公开竞价转让安排则会另行通知竞买人. 文章说:如今.中科红旗的股东们最终达成一致,允许拟通过出售资产以偿还公司债务,对外正式公布公告,宣布拟以公开竞价方式转让公司所有注冊商标.所有软件著作权等

在职场上,千万不要做这四种人

来郴州找工作的人越来越多,形成了职场竞争力的加剧,让很多在职人员都很没有安全感,想要过得比较轻松呢,就只能做一辈子底层,这类人在生活工作方面是比较安逸,但是如果公司出现什么裁员,你就会成为第一个.你要保持住这个职位,就必须要凸显出自己的价值来. 不做职场中的“龙套”的首要条件,就是胸怀大志.首先,想要在职场上做大事的人,你必定要有个目标,而且要先从小事做起.目标很重要,比如说你想要成为销售经理,就必须从普通的销售业务开始做,你有个一个伟大的目标是好事,但是千万不要暴露出太多缺点,要不然,没等你目