程序的自我进化?

2014-11-23 21:00:26 +08:00
 greatdk
这几天一直在看『失控』,里面讲了一些很神奇的事情

在八九十年代,那时候有个生物学家写过一个80条指令的病毒,并把这条病毒放在计算机里面『培养』,这些病毒不断复制和变异,变化出了各种不可思议的变种,比如在几十亿次运行之后,出现了仅仅有22条指令却有完善功能的病毒,当时麻省理工的科学家尝试用最短的指令来写一只病毒,却还是用了31条指令。

指令的多少关系到对计算机资源的索取,所以45条指令的病毒比80条指令的病毒更具优势,所以这位生物学家调整了计算机规则,给不同指令的病毒分配不同的资源,以达到某种『平等』,但是在几十亿次繁衍之后,出现了一种33条指令的病毒,这个病毒很『狡猾』,他在末尾多占用了一个字节,以『骗取』了多一倍的运行资源,结果称霸了『世界』

这一章中还写了很多类似的东西,并提出一种设想,就是让计算机程序也在运行中做到生物那样的自我进化,非人为的变得越来越人性化,比如Word,在你每次用完它之后就会默默的自我更新以达到更漂亮的外观和更人性化的体验,当然,前提是你应该为这些『程序生物』的繁衍设定一些规则。

我糊里糊涂也学过一些编程,但是还是觉得这些太神奇了,不知道有没有大神来深入解释一下,或者推荐一些类似的程序代码?
6795 次点击
所在节点    问与答
28 条回复
bugmenott
2014-11-23 21:01:43 +08:00
好神奇的样子
fha520
2014-11-23 21:19:11 +08:00
这是在扯蛋吧
ovear
2014-11-23 21:19:50 +08:00
变异是不定向的
选择是定向的
进化是生物基因频率的定向改变
greatdk
2014-11-23 21:22:10 +08:00
@fha520 你可以看看凯文凯利的《失控》,这本书有些地方写得很实在,有些地方又写的很抽象。所以我也搞不太清楚
rrfeng
2014-11-23 21:23:32 +08:00
那本书看了一半没看懂什么意思,放弃了。
greatdk
2014-11-23 21:24:57 +08:00
@rrfeng 我觉得这本书是我看过的最牛逼的书,越看越有感觉
zenozeng
2014-11-23 21:36:06 +08:00
不是有GP嘛。
greatdk
2014-11-23 21:49:34 +08:00
@zenozeng GP是什么
zenozeng
2014-11-23 22:01:19 +08:00
@greatdk 遗传编程
ysjdx
2014-11-23 22:27:03 +08:00
元胞自动机?

跟LZ描述的还不是一个东东

元胞自动机是动力系统
看看生命游戏,跟程序的进化没关系吧。
ChanneW
2014-11-23 22:31:34 +08:00
1. 首先不明白 "他在末尾多占用了一个字节,以『骗取』了多一倍的运行资源" ,为什么是多一倍?
2. 这么短的程序,真的是自己进化,还是另外有一个程序在不停地枚举所有可能.
greatdk
2014-11-23 22:38:58 +08:00
@ChanneW 可能我的说法有误,原文在这:

http://susefood.u.qiniudn.com/jzdxb.jpg
txlty
2014-11-23 22:42:11 +08:00
akfish
2014-11-23 22:57:26 +08:00
这是说的Thomas S. Ray的Tierra Project嘛。
并没有那么神秘,就是GP
http://en.wikipedia.org/wiki/Thomas_S._Ray
http://en.wikipedia.org/wiki/Tierra_(computer_simulation)
http://life.ou.edu/tierra/
以上第三个链接是项目主页,有下载,有论文,自取。
greatdk
2014-11-23 23:17:34 +08:00
@akfish 是的,就是Thomas S. Ray
sandideas
2014-11-24 10:03:02 +08:00
那前提是有一个运算能力接近无穷大的计算机。
因为每个程序想进化那么他必须是独一无二的,而且他的一切行为都是随机的。也就是得为每个程序分配一个独立的核心。。
greatdk
2014-11-24 10:07:08 +08:00
@sandideas 不用啊,每个程序遵守的规则都很简单,也不一定唯一,变异只发生在繁衍和复制之中。
wy198656
2014-11-24 10:09:43 +08:00
leopanhf
2014-11-24 10:14:32 +08:00
楼上这。。。
sandideas
2014-11-24 10:23:34 +08:00
@greatdk 那变异后的程序得什么规则,假如说一个亿的程序有一亿种行为方式,就比如其中一个要0.1m内存,1cpu做事。另外一个需要0.2m内存.2cpu。他们对不同资源的获取造成的行为是不一样的,所以他们必须一直占有着那个内存和cpu。就像word,你必须保存着他的内存和cpu,才能保证她的思维是连续的,才会自我改变外貌。
说的有点乱,大概就是说假如一个人有了三只手,你就不能以两只手的规则运行着,你必须保存着三只手这个人才能知道他对其他人的影响。你还得保存着三只眼睛的,三条腿的,三只耳朵的。这些所有的人都得同时存在,你才能确定其中一个或者多个变异后的人有优势的,他才能把自己的性状遗传下去。你最终才能获得你想要的程序

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/148728

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX