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

关灯 护眼     字体:

上一页 目录 下一页

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

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

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

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

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

    江临先验证。

    一百二十种乱序,全过。

    两个数相等的情况,过。

    缺失数据的隔离,过。

    然后才看速度。

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

    他反而长长松了口气。

    这才正常。

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

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

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

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

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

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

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

    这个最简单,穷举就行。

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

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

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

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

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

    第三个台阶,最麻烦。

    让它明白机器认不认。

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

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

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

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

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

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

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

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

    这一套,最快。

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

    爆炸。

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

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

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

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

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

    搜索也是一样。

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

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

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

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

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

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

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

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

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

    比较次数一样多。

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

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

    全过。

    再上秒表。

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

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

    百分之二点几。

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

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

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

    就这么点东西。
本章未完,请点击下一页继续阅读>>

『加入书签,方便阅读』

上一页 目录 下一页