对于什么是P和NP问题,简单地说,P就是在多项式时间内可以解决的,比如你对这个程序的输入量为N,那么那可以在N^k(N的k次方)解决,并且k是一个固定的常数,而剩下的问题你暂且可以归为NP问题,当然这不是讨论NP等于P还是不等于P的问题,我只是想把NP问题的旅行商问题有一点点概率变成是P,为什么说是一点点概率,这只是我最初步的构想,我相信在不断定点优化遗传算法,一定可以在比较大的概率解决这个问题。
我们先来看看什么是旅行商问题:
一个售货员必须访问N个城市。如果把问题模型化一个具有N个顶点的完全图,就可以说这个售货员想做一次巡回旅行,或经过哈密顿回路,恰好访问每个城市一次,并最终回到了出发的城市。从城市i到城市j的费用记做C(i,j),当然了,旅行商希望整个旅行的费用最低。
哈密顿回路:
在一个无向图中,通过每个顶点一次的简单回路。
我们先考虑按照普通的方法,首先,我想大家都会考虑到贪心算法,是,贪心算法我曾经也考虑到过,但是,他有一个陷阱,你贪心的到底是什么?如果你贪心的是经过每条路径的费用,那么,你怎么确定你在到最后一个城市的时候在回去的费用也是最小的?如果你都要贪整体的费用,那么,递归调用会很适合,但是,这种的效率还是没有解决的,不是多项式的时间内可以解决的,如果你都要贪,那么,你该又如何权衡这两者的利弊?做人,还是不要太贪了!
但是,如果你要是用遗传算法,这个得到最优染色体的效率还不如贪心算法,但是,遗传算法的模拟生物进化才产生的,当然,抉择是交给大自然,如果你不符合大自然的条件,就会被淘汰,但是在算法中,我想,能不能人为的干预这种选择,就像农田一样,我们只要我们想要的,“杂草”是不会让你和粮食来分享化肥的,就好比不想要的基因,我们不会让你占用计算机的资源的!
目前还在思考,望此余生,可以解决这个NP问题,也不枉我在人世间走一趟!