算法与追MM

最近在研究A*寻路算法,在网上看见一篇对各种算法,非常形象的描述。觉得很有意思,就转载了下来……

 

P vs NP
  
    P类问题和NP类问题是算法设计的两个基本问题,就像年轻MM也分为两种,一种好追,一种不好追。很明显,P类MM比较容易追到,而NP类MM也许穷尽终生也能以被打动。
    P类MM好追并不是说会主动投怀送抱,而是说也许努力几个月或几年会有收获(在多项式时间内会有结果);而NP类MM不好追也并非是说绝无成功的可能,而是指成功机会很小,难以在多项式时间内解决掉。假如你又帅又有money的话,也许能够解决NP类MM,就像你有超级计算机或指数级时间的话,NP类问题也是可以解决掉的。但一般人没有这种资源,于是请远离NP类MM,尤其是NP-complete类MM,已经有无数人失败过了,所以你也很难成功。
  
    有时候,有些既无才又无财的GG追到了NP类MM,何也?
    1 可能对NP类问题进行了限定,比如这个GG可能是NP类MM的同学或熟人,因而容易搞定。
    2 可能采用了近似解法。比如事前约定,不能干涉NP类MM的私人空间,因而也解决掉了,虽然不是完全解决,仅仅找到了次优解。或者,你对MM说,做不了情人,就做朋友吧,于是你俩认识了。这也叫做近似解决。
--------------------------------------------------------------------
动态规划
    如果你要追求一个MM,就要把这一问题分解开来,各个击破,才能最终赢得美人归,这叫动态规划(当然,有时间要求,一般数月解决)。记住,并非追求每个MM都能用这套方法解决,比如有些MM天生独立性强,不受其他人蛊惑。要使用这个方法有两个条件,第一,最优子结构(即如果子问题得到最优解决,那么追MM就解决了),第二,子问题重叠(即某些子问题不需要重复解决,只要解决一次就可以了)。
    以追MM为例,要追到MM,必须把这个复杂问题进行分解,分解为多个子问题,比如宿舍室友问题、MM个人情感问题、MM的爹妈问题等等。如果把这些问题都解决好的话,那么MM也就到手了。如果有哪个子问题解决不好的话,人家就会诋毁你、毁谤你,到时你就玩完了。另外,在子问题中,也可能包含子子问题。比如MM的个人情感问题,可能会分解为过去情感受挫、个人情感取向等等。子问题的解决也依赖于子子问题的解决。
    再看第二个,子问题重叠。如果MM有过去的情感纠葛,而且一直放不下的话,你就要解决这个小问题。你要解决这个问题,也许会通过宿舍室友旁敲侧击的解决,也许会直接了当地和MM交流来解决,也许会通过MM父母来解决,记住不要让所有人都来解决这一个问题,那就重复了,浪费时间。这叫子问题重叠。这样你就能在最短的时间内追到MM了。

beam search
    beam搜索方式与动态规划大体一致,但是在处理子问题时不是一味地退让,而是有个限度,这叫beam size。就好比是追MM时,不要一味地迁就其他人,而要有所节制或底线,超过了底线,就要彻底舍弃。
--------------------------------------------------------------------
贪心算法


    要是每个女孩子都要用动态规划方法追求的话,估计很多男生宁愿单身。
    上面提到并非每个MM都是一个样子,有的人喜欢直来直去,有的人喜欢转弯抹角。但对于大部分MM来说,如果能够一种努力追求的话,追到手还是不会很困难的话。这种方法叫做贪心法。
    贪心法和动态规划有相似之处,也有不同之处。相似之处在于,都要对问题进行分解,找到最优子结构。不同点在于,它没有子问题重叠。对于MM,从认识之初开始即展开猛烈进攻,每一步都采取最好的处理方式,采用最能打动MM放心的策略。目标是在最短的时间内确立两人的关系。
    这个方法对于大部分女生比较合适,但也不能绝对。有些MM喜欢慢慢来。所以贪心法并非往往能够找到最优解。它在对时间要求比较高、同时对最优解并非非常在意的问题上比较有效。
--------------------------------------------------------------------
深度优先算法

追一个MM,但也许你还是情窦初开的新手,不知道如何才能讨得MM的欢心,于是你只好一条路一条路的试,比如写情书、请吃饭、一起K歌、出去旅游。MM不开心了,你就回溯回去换另一种方式。当然其间你也许会从某些失败途径得到一些经验,能够判断哪些路径不好,会剪枝(这就是分支估界了),比如MM不喜欢人多的地方,你就千万不要去旅游了。你也可以随机选择一些路径来实施,说不定能立杆见影(这就是回溯的优化了)但总的来说,这个方法最消耗时间,你需要一场持久战。。。。,而且容易陷入其中,比如追着追着,自己找不到自我,而目标还遥遥无期,这叫死递归。

该算法一般也能得到最优解,因为大多数MM会感动滴!(路遥知马力嘛)!但其缺点是开销大!除非你是非要谈一场恋爱不可,否则不推荐使用。

特别是你可能还有许多其他的事情要做,比如学习,比如事业。。。。
--------------------------------------------------------------------
广度优先算法

    为了追一个MM,你决定周一跟她跳舞(第一周跳慢三,第二周跳快三,第三周伦巴,...)、周二吃饭(第一周全聚德,第二周郭林,第三周肯德基,...),周三出去玩(第一周故宫,第二周圆明园,第三周颐和园,...),周四...,。。。。
    你定好了计划,于是按照计划实施。
    如果这个MM是个跳舞狂的话,你也许在三周过后能够追到她(即总能找到目标节点)。于是你想,假如星期一慢三,星期二快三,星期三伦巴的的话,不是只要三天就追到了吗,用得着三周吗?(这叫深度优先,即把一种方法发挥得淋漓尽致)
    问题是,你对这个MM不了解,所以你只能用广度优先的方法。这个方法会确保你最终追到MM,因为你尝试了所有的方法,而且这些步骤是一步步实施的。
--------------------------------------------------------------------
A*算法
  
    A*算法是深度优先和广度优先的结合物。实施A*算法之前,你并没有固定的安排,比如周一干什么,周二干什么,你的策略是随机应变。在你跟MM接触的过程中,你发现MM喜欢跳舞,于是你就经常安排去舞厅。后来你发现她喜欢旅游同时有些厌恶跳舞时,你赶紧和她到处玩。再后来你发现MM有心事,于是你赶紧开导,进行心理干预 ......
    于是,你追到了MM,而且在最优的时间内追到了她。
    A*算法才是聪明人喜欢的方法。
--------------------------------------------------------------------
二叉树的前序、中序和后序周游
  
    前序就是直接搞定MM,然后搞定她爸妈(左)和你自己爸妈(右)
    中序就是先搞定未来岳父岳父,然后搞定她,最后告诉你爸妈
    后续就是,让未来的岳父岳母和自己爸妈都觉得你们合适之后,才对MM下手,这个时候就没有障碍了啊
--------------------------------------------------------------------

动态规划,基本上就是说:     你追一个MM的时候,需要对该MM身边的各闺中密友都好,这样你追MM这个问题就分解为对其MM朋友的问题,只有把这些问题都解决了,最终你才能追到MM。     该方法适用于聪明的MM,懂得“看一个人,不是看他如何对你,而是看他如何对他人。”的道理,并且对付这样的MM总能得到最优解。     该方法的缺点是开销较大,因为每个子问题都要好好对待。。。。

--------------------------------------------------------------------

 贪心算法,基本上就是:     你追一个MM的时候,从相识到相知,每次都采用最aggressive的方式,进攻进攻再进攻!从不采用迂回战术或是欲擒故纵之法!目标是以最快的速度确立两人关系。     该法优点是代价小,速度快,但缺点是不是每次都能得到最优解。。。。。

--------------------------------------------------------------------

回溯算法,基本上就是:     追一个MM,但也许你还是情窦初开的新手,不知道如何才能讨得MM的欢心,于是你只好一条路一条路的试,MM不开心了,你就回溯回去换另一种方式。当然其间你也许会从某些途径得到一些经验,能够判断哪些路径不好,会剪枝(这就是分支估界了)。你也可以随机选择一些路径来实施,说不定能立杆见影(这就是回溯的优化了)但总的来说,你都需要一场持久战。。。。     该算法一般也能得到最优解,因为大多数MM会感动滴!!但其缺点是开销大!除非你是非要谈一场恋爱不可,否则不推荐使用。特别是你可能还有许多其他的事情要做,比如学习,比如事业。。。。

--------------------------------------------------------------------

老赵提问:假如一个mm对应NP完全问题,老大给个有效解法     eshow回答:呵呵,那你为什么那么贱,非要去追呢?记住:“天涯何处无芳草!”不过如果你“非如此不可”的话,建议升级你的硬件,好好学习,好好工作,加强实力,人到中年的时候也许你能解开NP难。。。。     强哥补充:这种MM可遇而不可求了,也就是eshow的终极目标。eshow其实已经开发出了 解决NP完全问题的对数级算法,但是不愿意告诉偶们……     在认真研读思考之后,calf mm举一反三,对深度优先和广度优先也做了总结:深度优先就是追一个mm追到底,直到失败然后换个mm继续追……广度优先就是同时追多个mm,一起发展……

--------------------------------------------------------------------

大家都开始集思广益……     老马:二叉树的前序、中序和后序周游:     前序就是直接搞定MM,然后搞定她爸妈(左)和你自己爸妈(右); 中序就是先搞定未来岳父岳父,然后搞定她,最后告诉你爸妈;后序就是,让未来的岳父岳母和自己爸妈都觉得你们合适之后,才对MM下手,这个时候,就没有障碍了啊!

--------------------------------------------------------------------

 网络流:     追MM的时候总避免不了送礼物,但是你老是直接送礼物就会给MM造成很大的压力,于是你就想到了通过朋友来转送的方法。你希望送给MM尽可能多的礼物,所以就是需要找到一中配送方案,就是最大流了。然而你请别人帮忙并不是不要开销的,你让A同学拿去给B同学可能需要一些花费,自然你不是一个大款,想最小化 这个花费,那么就是最小费用最大流了……

--------------------------------------------------------------------

 在你追了若干美女都失败告终后,你发现有一批美女追起来是一样困难的,如果你能追到其中任何一个就能追到其他所有的美女,你把这样的女人叫作NP-Complete。P=NP:这是一个美好的猜想,追美女和恐龙的难度其实一样。APX与Random:NP的美女难追,你无法完全占有她。你只好随机的去靠近她,装作若无其事;或者用一种策略,追到她的一个approximation ratio,例如50%。APX-hard:这样的女人,连一个固定的百分比都不给你,还是另谋高就吧。

--------------------------------------------------------------------

    匹配:从初中到高中到大学大家追来追去,就是个二分图匹配的过程...."和谐社会"应该就一个最大匹配... 可是后来有某些MM同时跟>1个人发展,违背了匹配的基本原则...大家都很BS之...然后最近断背山很火,人们惊奇得发现原来还可以是 任意图匹配...     STL:某位贝尔实验室的大牛在追了N个MM后,为了造福后来人,总结了自己的经验, 出了本《 追MM求爱秘笈大全》,英文名叫Standard  courTing  Library,缩写为 STL广大同学在使用STL后,惊喜地发现追MM变得异常方便,大大缩短了时间和精力...

 

转载于:https://www.cnblogs.com/gino/archive/2010/07/28/1786935.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值