第91章 让程序去找程序(6 / 8)
有的比较次数多,有的岔路多,有的要占用更多临时空间。
江临得把这些代价一项项写进机器的评判標准里,让它在一堆都对的走法里,挑出最划算的那个。
第三个台阶,最麻烦。
让它明白机器认不认。
同样一套走法,写在纸上看著差不多,可一旦真的跑起来,换一台电脑,换一种翻译方式,快慢竟然会不一样。
因为最终真正执行的,不是纸上那几行字,而是机器把它翻译成的更底层的一长串指令。
一套看起来比较次数最少的走法,翻译到机器里,未必就是跑得最快的那个。
到了这一层,纸笔和直觉彻底失效。
人根本算不清,哪一套走法在真实的机器里会更快。
而这,恰恰是让程序去找程序最大的价值所在。
人算不清的事,机器可以一套一套地真跑,用秒表去量。
它不需要理解为什么快,它只需要把成千上万套候选走法挨个跑一遍,然后告诉你。
这一套,最快。
但江临也很快撞上了这条路的天敌。
爆炸。
数字稍微多一点,可能的走法就成倍再成倍地往上翻。
五个数还能全试,到了更大的规模,哪怕机器一刻不停地试到宇宙尽头,也试不完所有的路。
这时候,砍就比试更重要了。
江临想起之前解过的一道竞赛题。
那道题的关键,不是把所有可能的答案都算一遍,而是先证明哪些答案根本不可能是最好的,然后整批整批地划掉,只在剩下的小范围里找。
搜索也是一样。
机器不可能走完所有的路,但它可以先证明,一大批路,从某一步开始就註定不可能更好了。
於是这些路,连试都不必试,整批扔掉。
把这件事干好,需要的不是更快的机器,而是更聪明的放弃。
在每一个岔路口,提前算出往这边走,最好也只能到这个程度,一旦发现这个上限还不如手里已经有的答案,立刻掉头。
省下的,是天文数字般的无用功。
某个深夜,第一个真正有分量的结果,出现了。
带著脏数据规矩的的五个数排序。
允许有相等的数,允许有缺失的空洞,还要保证排完之后,相等的数维持原来的先后。
机器找出来的那套走法,和江临亲手写的,不完全一样。 ↑返回顶部↑
江临得把这些代价一项项写进机器的评判標准里,让它在一堆都对的走法里,挑出最划算的那个。
第三个台阶,最麻烦。
让它明白机器认不认。
同样一套走法,写在纸上看著差不多,可一旦真的跑起来,换一台电脑,换一种翻译方式,快慢竟然会不一样。
因为最终真正执行的,不是纸上那几行字,而是机器把它翻译成的更底层的一长串指令。
一套看起来比较次数最少的走法,翻译到机器里,未必就是跑得最快的那个。
到了这一层,纸笔和直觉彻底失效。
人根本算不清,哪一套走法在真实的机器里会更快。
而这,恰恰是让程序去找程序最大的价值所在。
人算不清的事,机器可以一套一套地真跑,用秒表去量。
它不需要理解为什么快,它只需要把成千上万套候选走法挨个跑一遍,然后告诉你。
这一套,最快。
但江临也很快撞上了这条路的天敌。
爆炸。
数字稍微多一点,可能的走法就成倍再成倍地往上翻。
五个数还能全试,到了更大的规模,哪怕机器一刻不停地试到宇宙尽头,也试不完所有的路。
这时候,砍就比试更重要了。
江临想起之前解过的一道竞赛题。
那道题的关键,不是把所有可能的答案都算一遍,而是先证明哪些答案根本不可能是最好的,然后整批整批地划掉,只在剩下的小范围里找。
搜索也是一样。
机器不可能走完所有的路,但它可以先证明,一大批路,从某一步开始就註定不可能更好了。
於是这些路,连试都不必试,整批扔掉。
把这件事干好,需要的不是更快的机器,而是更聪明的放弃。
在每一个岔路口,提前算出往这边走,最好也只能到这个程度,一旦发现这个上限还不如手里已经有的答案,立刻掉头。
省下的,是天文数字般的无用功。
某个深夜,第一个真正有分量的结果,出现了。
带著脏数据规矩的的五个数排序。
允许有相等的数,允许有缺失的空洞,还要保证排完之后,相等的数维持原来的先后。
机器找出来的那套走法,和江临亲手写的,不完全一样。 ↑返回顶部↑