1701020055
1701020056
这个数字到底有多么令人绝望,我们用计算速度为10太Flops的计算机(1秒钟能演算1013次小数点浮动的计算机。顺便告诉大家,playstation 4的运算速度是1.84太Flops,地球模拟程序的运算速度是35.86太Flops),想要运算出所有的组合需要25万兆年以上。宇宙诞生已经经过了137亿年,却无法跟这项运算所需的时间相比。
1701020057
1701020058
隐藏在生活中的“排列组合最适化问题”
1701020059
1701020060
就像“费马大定理”一样,正因为这是个绝对性的难题,所以关于它的解法才得以进化。以“巡回推销员”为例的“排列组合最适化问题”是一个非常现实的问题。
1701020061
1701020062
超市的商品配送;
1701020063
1701020064
快递等的配送计划问题;
1701020065
1701020066
汽车导航系统的路径检索;
1701020067
1701020068
手机的频率分配;
1701020069
1701020070
铁路、航空乘务员的分配;
1701020071
1701020072
制作体育比赛日程表等的调度……
1701020073
1701020074
以上都是与我们日常生活息息相关的活动,而这些都是“排列组合最适化”的问题。“巡回推销员问题”自身已经被应用到了配送计划制订和电子线路板上安装零件时挖洞的顺序决定问题上。
1701020075
1701020076
十进制算法会遗传吗?
1701020077
1701020078
在“巡回推销员”的问题中,如果城市数很多的话,想求得最适答案简直难如登天。高效又严谨的求解方法还没有确立,因此求得近似解的方法就显得尤为重要了。其中有一种有效的近似值解法被称为“遗传算法”(Genetic Algorithm)。
1701020079
1701020080
“十进制算法”是一种决定计算顺序、旨在解决问题的阶段式方法。用特定的编程语言(C、Basic、Java等)来记述算法就叫作程序。
1701020081
1701020082
遗传算法是1975年由密歇根大学的约翰·霍兰德(1929~)提出的。生物的进化依赖于遗传因子的重组,他从生物的“进化过程”中得到启示,得出了“最适化算法”,即从遗传因子中选择复数的个体(解的候补)组成集团,再利用这个集团将解的候补一个个重组,以探索最合适的答案的计算方法。
1701020083
1701020084
1701020085
1701020086
1701020087
遗传算法
1701020088
1701020089
将问题当作物种遗传因子序列的进化来谋求最适解。遗传算法中会用到“选择”(适应环境的后代个体会增加,不适应的物种则会减少)、“交叉”(按一定的概率将两个物种的遗传因子序列组合起来形成其他物种)、“突变”(遗传因子序列的特定存储单位发生了反转)等遗传学范畴内的概念来进行操作。
1701020090
1701020091
如果在网上搜索“巡回推销员问题Java”,我们会找到很多程序。
1701020092
1701020093
实际上,在网上能看到很多关于“巡回推销员”问题的解法。
1701020094
1701020095
DNA计算机的诞生
1701020096
1701020097
遗传因子本属于生物学,但是却出现在了数学和计算机的世界,真是有趣极了。而且,它还有更深的妙趣,那就是利用遗传因子而诞生的超高速计算机——DNA计算机。
1701020098
1701020099
令人震惊的是,信息学家杰拉尔德·埃德尔曼(1929~)研读了DNA双螺旋结构的发现者——美国生物学家詹姆斯·沃森(1928~)的《遗传因子的分子生物学》后,产生了将DNA应用到计算机中的灵感。1994年他制作出DNA计算机,并为大家演示了其对“巡回推销员”问题的解答。
1701020100
1701020101
运用DNA算法解答巡回推销员的问题时,首先将各个城市及连接的路径用DNA的四个碱基A(腺嘌呤)、T(胸腺嘧啶)、G(鸟嘌呤)、C(胞嘧啶)表示出来。
1701020102
1701020103
东京={CGCATT}、大阪={CTAGAT},像这样将DNA人工合成,然后放到试管中混在一起让它们发生反应。这样一来,由于DNA的特性是只有“A和T”“C和G”这两种组合,从东京和大阪的碱基序列中就可以创造出{TAAGAT}这样的新DNA。这也就成了东京和大阪之间路径的一个候补项。
1701020104
[
上一页 ]
[ :1.701020055e+09 ]
[
下一页 ]