返回第九十一章 让程序去找程序  这个学霸疑似巨额知识来源不明首页

关灯 护眼     字体:

上一页 目录 下一页

说清楚我要什么,什么绝对不能出错。

    造枪的活儿,交给机器。

    那这东西在生活里能干嘛?

    答案是,几乎所有动作不难,却要重复亿万次的地方,背后都藏着这样一条可以被改造的流水线。

    你滑手机相册,几千张照片唰一下按时间排好,是排序。

    你网购时商品按价格从低到高一列,是排序。

    地图给你算最近的路,外卖给你派最近的骑手,游戏里每一帧成百上千个物体重新排先后……

    这些你天天在用,却从不留意的瞬间,底层全是同一批被重复了千万上亿次的小动作。

    平时没人在乎它们快一点还是慢一点,因为单看一次,都是眨眼的事。

    可一旦放到重复上亿次的尺度上,这眨眼的差距,就会变成实打实的电费、服务器和等待时间。

    江临要做的机器,就是钻进这些没人留意的角落,把那些还能更快的小动作,一个个揪出来,定做,替换,提速。

    而且它不挑活儿。

    今天能给五个数排序,明天就能优化别的小动作。

    这个项目用得上,下个项目照样用得上。

    一念及此,江临越来越兴奋。

    因为排序,只是个敲门砖。

    真正让他头皮发麻的,是这道门缝背后那个更大的东西。

    如果连找最优程序这件事本身,都能交给机器去做呢?

    那么在废土世界里,他就不必再为每一个设备,每一种控制顺序,每一套观测流程,都亲手去写最好的方案。

    他一个人,精力有限。

    但如果有一天,机器能替他搜出一部分小程序,小流程,小动作。

    那么它就不再只是一个排序工具,而是一个单人科研系统的增幅器。

    过去,人写程序,是亲手给出每一步。

    第一步比这两个数,第二步比那两个,第三步交换……

    一步步把答案铺出来。

    这要求写的人脑子里先有答案,再把答案翻译成代码。

    江临现在想做的,是反过来。

    他不再亲手给答案,只告诉机器三件事。

    什么是起点——一堆乱掉的数。

    允许做什么动作——挑两个位置,比一下,错了就换。

    什么算赢——所有可能的乱序,最后都被捋顺。

    然后,让机器自己去试。

    说白了,就是把排序这件事,变成了一个游戏。

    乱掉的数,是棋盘。

    每一次比一下,该换就换,是落子。

    把所有乱序都捋顺,是通关。

    机器要做的,就是自己去玩这个游戏,一步步试,直到找出一套能通关的走法。

    这个想法有个让人头皮发麻的地方。

    人,从此不必知道答案了。

    人只负责定义这个游戏。

    画好棋盘,定好规则,标好胜利的样子。

    至于具体怎么走,走哪条路最快,交给机器去穷举,去试错。

    江临新建了一个文档,敲下三行注释,作为这个游戏的全部规则。

    有一堆乱掉的数。

    每一步,挑两个位置比一下,错了就换。

    直到所有数都被捋顺。

    很短。

    短到不象一个程序的开始。

    但他盯着这三行看了将近一分钟。

    因为这三行的意思,已经不再是手写排序,而是让机器自己搜索排序程序。

    第一个要解决的问题是,机器怎么知道自己试对了?

    这恰恰是这条路最干净的地方。

    五个数,所有可能的乱序,一共只有一百二十种。

    一百二十种,小到可以一种不漏地全列出来。

    所以机器根本不需要猜某套走法对不对。

    它可以把这一百二十种乱序全部丢进去,让那套走法挨个跑一遍,只要有一种没被捋顺,这套走法就当场判死,扔掉。

    这是数学意义上的干净。

    不是我觉得它应该对,而是我把所有可能都试过了,它就是对的。

    人靠直觉,会漏,会错。

    机器靠穷举,一种都不会放过。

    凌晨,第一版找程序的程序跑了起来。

    它很笨,几乎不会偷懒,只是从所有该比哪两个的选择里,一层一层往下试。

    每走一步,就回头看看那一百二十种乱序,还剩多少没被捋顺。

    哪条路让混乱减少得最多,就顺着那条往下走。

    江临给它定了个朴素的评判标准。

    
本章未完,请点击下一页继续阅读>>

『加入书签,方便阅读』

上一页 目录 下一页