V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
greatdk
V2EX  ›  问与答

程序的自我进化?

  •  
  •   greatdk · 2014-11-23 21:00:26 +08:00 · 6944 次点击
    这是一个创建于 3632 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这几天一直在看『失控』,里面讲了一些很神奇的事情

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

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

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

    我糊里糊涂也学过一些编程,但是还是觉得这些太神奇了,不知道有没有大神来深入解释一下,或者推荐一些类似的程序代码?
    第 1 条附言  ·  2014-11-23 21:50:13 +08:00
    有个叫 元细胞自动机 的东西,大家可以搜搜看
    第 2 条附言  ·  2014-11-24 08:13:55 +08:00
    感谢V2EXer,主要涉及的是遗传编程,我已经写了一篇文章: http://www.wdk.pw/734.html
    28 条回复    2014-11-24 10:59:33 +08:00
    bugmenott
        1
    bugmenott  
       2014-11-23 21:01:43 +08:00
    好神奇的样子
    fha520
        2
    fha520  
       2014-11-23 21:19:11 +08:00
    这是在扯蛋吧
    ovear
        3
    ovear  
       2014-11-23 21:19:50 +08:00 via Android
    变异是不定向的
    选择是定向的
    进化是生物基因频率的定向改变
    greatdk
        4
    greatdk  
    OP
       2014-11-23 21:22:10 +08:00
    @fha520 你可以看看凯文凯利的《失控》,这本书有些地方写得很实在,有些地方又写的很抽象。所以我也搞不太清楚
    rrfeng
        5
    rrfeng  
       2014-11-23 21:23:32 +08:00
    那本书看了一半没看懂什么意思,放弃了。
    greatdk
        6
    greatdk  
    OP
       2014-11-23 21:24:57 +08:00
    @rrfeng 我觉得这本书是我看过的最牛逼的书,越看越有感觉
    zenozeng
        7
    zenozeng  
       2014-11-23 21:36:06 +08:00
    不是有GP嘛。
    greatdk
        8
    greatdk  
    OP
       2014-11-23 21:49:34 +08:00
    @zenozeng GP是什么
    zenozeng
        9
    zenozeng  
       2014-11-23 22:01:19 +08:00
    @greatdk 遗传编程
    ysjdx
        10
    ysjdx  
       2014-11-23 22:27:03 +08:00
    元胞自动机?

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

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

    http://susefood.u.qiniudn.com/jzdxb.jpg
    txlty
        13
    txlty  
       2014-11-23 22:42:11 +08:00
    akfish
        14
    akfish  
       2014-11-23 22:57:26 +08:00   ❤️ 1
    这是说的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
        15
    greatdk  
    OP
       2014-11-23 23:17:34 +08:00
    @akfish 是的,就是Thomas S. Ray
    sandideas
        16
    sandideas  
       2014-11-24 10:03:02 +08:00 via Android
    那前提是有一个运算能力接近无穷大的计算机。
    因为每个程序想进化那么他必须是独一无二的,而且他的一切行为都是随机的。也就是得为每个程序分配一个独立的核心。。
    greatdk
        17
    greatdk  
    OP
       2014-11-24 10:07:08 +08:00
    @sandideas 不用啊,每个程序遵守的规则都很简单,也不一定唯一,变异只发生在繁衍和复制之中。
    wy198656
        18
    wy198656  
       2014-11-24 10:09:43 +08:00
    leopanhf
        19
    leopanhf  
       2014-11-24 10:14:32 +08:00
    楼上这。。。
    sandideas
        20
    sandideas  
       2014-11-24 10:23:34 +08:00 via Android
    @greatdk 那变异后的程序得什么规则,假如说一个亿的程序有一亿种行为方式,就比如其中一个要0.1m内存,1cpu做事。另外一个需要0.2m内存.2cpu。他们对不同资源的获取造成的行为是不一样的,所以他们必须一直占有着那个内存和cpu。就像word,你必须保存着他的内存和cpu,才能保证她的思维是连续的,才会自我改变外貌。
    说的有点乱,大概就是说假如一个人有了三只手,你就不能以两只手的规则运行着,你必须保存着三只手这个人才能知道他对其他人的影响。你还得保存着三只眼睛的,三条腿的,三只耳朵的。这些所有的人都得同时存在,你才能确定其中一个或者多个变异后的人有优势的,他才能把自己的性状遗传下去。你最终才能获得你想要的程序
    takato
        21
    takato  
       2014-11-24 10:31:30 +08:00
    我记得曾经有过一个游戏,两位玩家在模拟寄存器里面写寄存器指令,最后完全消灭对方程序的获胜

    那些东西简直就是太神奇的存在了。。
    takato
        22
    takato  
       2014-11-24 10:31:52 +08:00
    那个世界,真的和我们的现实世界的生态体系有得一拼
    greatdk
        23
    greatdk  
    OP
       2014-11-24 10:39:02 +08:00
    @takato 你说的那个是不是叫『磁芯大战』?那个好象是计算机病毒的原型吧?
    greatdk
        24
    greatdk  
    OP
       2014-11-24 10:39:20 +08:00
    @wy198656 你什么目的。。。。
    takato
        25
    takato  
       2014-11-24 10:44:22 +08:00
    @greatdk 对的,就是这个。非常赞。。。自己随便写了一个简直是被别人秒干的节奏。。
    greatdk
        26
    greatdk  
    OP
       2014-11-24 10:46:09 +08:00
    @takato 那时候玩的都是科学家,我当年还想自己试试,后来完全没有头绪,就放弃了
    wy198656
        27
    wy198656  
       2014-11-24 10:54:08 +08:00
    @greatdk 我本来是想发一个网站的结果手滑复制错了~
    greatdk
        28
    greatdk  
    OP
       2014-11-24 10:59:33 +08:00
    @wy198656 发图不留种,XXXXX
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2785 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 13:25 · PVG 21:25 · LAX 06:25 · JFK 09:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.