香书小说

最新地址不迷路:www.xbiqugu.com
香书小说 > 这个学霸疑似巨额知识来源不明 > 第91章 让程序去找程序

第91章 让程序去找程序

但他盯著这三行看了將近一分钟。

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

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

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

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

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

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

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

这是数学意义上的乾净。

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

人靠直觉,会漏,会错。

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

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

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

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

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

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

剩多少没排对,用了几次比较,有没有引入岔路,有没有破坏两个数相等时保持原顺序的规矩,有没有把缺失的数据提前隔离出去。

没有什么玄乎的智能模型。

只有最原始的三样东西:挨个试,及时砍掉死路,把所有可能都验一遍。

这是他这台机器现在跑得动的全部。

第一轮结果出来,屏幕上列印出一串走法。

江临先验证。

一百二十种乱序,全过。

两个数相等的情况,过。

缺失数据的隔离,过。

然后才看速度。

没比他自己手写的快多少,某个设定下甚至更慢。

他反而长长鬆了口气。

这才正常。

第一版找程序的程序,怎么可能一出来就碾压一个人熬了一整夜的经验。

但它已经证明了那件最重要的事。

机器,可以自己找到正確的程序。

快不快,是下一层的问题。

能不能找到,才是这扇门开没开。

接下来的时间里,江临一点点餵养这个还很笨的东西。

第一个台阶,是让它分清对不对。

这个最简单,穷举就行。

五个数的一百二十种,八个数的几万种,机器都能一种不漏地验完。

第二个台阶,是让它分清值不值。

同样能把数排对,可能有十几套不同的走法,它们不是一样好的。

有的比较次数多,有的岔路多,有的要占用更多临时空间。

江临得把这些代价一项项写进机器的评判標准里,让它在一堆都对的走法里,挑出最划算的那个。

第三个台阶,最麻烦。

让它明白机器认不认。

同样一套走法,写在纸上看著差不多,可一旦真的跑起来,换一台电脑,换一种翻译方式,快慢竟然会不一样。

因为最终真正执行的,不是纸上那几行字,而是机器把它翻译成的更底层的一长串指令。

一套看起来比较次数最少的走法,翻译到机器里,未必就是跑得最快的那个。

到了这一层,纸笔和直觉彻底失效。

人根本算不清,哪一套走法在真实的机器里会更快。

而这,恰恰是让程序去找程序最大的价值所在。

人算不清的事,机器可以一套一套地真跑,用秒表去量。

它不需要理解为什么快,它只需要把成千上万套候选走法挨个跑一遍,然后告诉你。

这一套,最快。

但江临也很快撞上了这条路的天敌。

爆炸。

数字稍微多一点,可能的走法就成倍再成倍地往上翻。

五个数还能全试,到了更大的规模,哪怕机器一刻不停地试到宇宙尽头,也试不完所有的路。

这时候,砍就比试更重要了。

江临想起之前解过的一道竞赛题。

那道题的关键,不是把所有可能的答案都算一遍,而是先证明哪些答案根本不可能是最好的,然后整批整批地划掉,只在剩下的小范围里找。

搜索也是一样。

机器不可能走完所有的路,但它可以先证明,一大批路,从某一步开始就註定不可能更好了。

於是这些路,连试都不必试,整批扔掉。

把这件事干好,需要的不是更快的机器,而是更聪明的放弃。

在每一个岔路口,提前算出往这边走,最好也只能到这个程度,一旦发现这个上限还不如手里已经有的答案,立刻掉头。

省下的,是天文数字般的无用功。

某个深夜,第一个真正有分量的结果,出现了。

带著脏数据规矩的的五个数排序。

允许有相等的数,允许有缺失的空洞,还要保证排完之后,相等的数维持原来的先后。

机器找出来的那套走法,和江临亲手写的,不完全一样。

比较次数一样多。

但岔路更少,结构更规整。

他把所有的脏情况一种种餵进去验。

全过。

再上秒表。

比手写版快了百分之二点几。

换一台机器,换一种翻译方式,领先的幅度变小了,但没有消失。

百分之二点几。

听起来甚至有点可怜,没有谁会为这个数字鼓掌。

事实上,最后留在硬碟里的,也只是一个不起眼的小文件,旁边附著一份自动生成的验证报告。

所有乱序通过,相等值通过,缺失值通过,与標准做法零差异,速度中位数快百分之二点七。

就这么点东西。

但江临心里清楚它和昨天那个手写版的本质区別。

这一次,那套漂亮的走法,不是人写的。

是机器自己,从茫茫的可能性里,捞出来的。

標准库里的通用流程,被无数工程师打磨过很多年。

而现在,它在一个特定的场景里,被比了下去。

哪怕只是一点点,哪怕没人鼓掌。

动手的,也不再是某个天才的脑子,而是一台肯把所有可能都试一遍的机器。

他没有为这百分之二点几高兴多久,反而很快皱起眉。

太小了。

不是嫌弃这个结果,而是这个结果在告诉他一件事。

方向是对的,方法还很粗。他给机器定的游戏规则太简单,让它放弃的本事太弱,能让它玩的盘面太小。

机器现在像个刚学会规则,只会埋头硬试的新手。

它能贏,但贏得笨拙。

而江临已经看到了这条路真正的尽头在哪里。

现在的机器,是按死规矩去试。

但如果有一天,它能从自己过去试过的成千上万套走法里,回头去学。

哪一类结构容易快,哪一类机器特別喜欢,哪一类看著比较次数少,跑起来却慢,那它就不再是埋头硬试的新手了。

它会开始有直觉。

人定义游戏,机器去玩,再从玩过的每一局里,长出自己的偏好。

到那时候,让程序去找程序这件事,才算真正长出了牙齿。

但江临没有立刻去碰那一步。

现在还太早。

他手里只有一个笨拙的找程序的程序,一个快了百分之二的小文件,几份测试报告。

这不是成果,只是门缝。

可很多最终会改变一切的东西,一开始,都弱得可笑。

『记住本站最新地址 www.xbiqugu.com』