第一百章 101号选手提前交卷?
相比起詹永枢院士的惊讶,郝云在考虑这个问题的时候倒是没有想的特别复杂,纯粹是挠头的时候灵机一动想出来的这个方法。
程序首先猜测了一个接近1/sqrt(number)的值,然后运用牛顿迭代公式进行了迭代运算。
单从算法逻辑上来讲,其实他改写之后的代码,和之前那个Q_Sqrt函数的代码并没有太大的区别。冰川引擎在math.c文件中定义的Q_Sqrt函数,事实上也是采用的这个思路。
而要说唯一哪里不同,大概就是在那个神秘的数字——0x5f375a86上了。
根据牛顿迭代算法的原理,猜测值距离最终结果越接近,迭代的次数越少。而神秘的数字0x5f375a86,便是用来计算猜测值的。
而郝云在尝试了几次之后意外地发现,如果使用“0x5f375a86”这个数,得到的y将非常接近1/sqrt(n),以至于最终执行牛顿迭代算法时,只需要2次代法就可以达到他所需要的精度!
至于这个数是怎么得出来的?
郝云也没办法解释。
毕竟他只是遵循着自己的数学直觉,觉得原来那个程序中选取的数字不够好用,然后试着换了个更好用的数字试试。
一开始他也试了好几次,发现更改的数字都没有原先那个数好用,直到后来灵机一动试到了这个0x5f375a86,发现居然只需要两次迭代就能完成整个计算过程。
老实说,他自己也惊讶的不行。
可能……
这也和他的数学属性达到了精通有点关系?
总而言之,采用了0x5f375a86这个特殊的数字之后,单从运算步数来看,整个函数的运算效率将比原本math.c文件中定义的Q_Sqrt函数快上足足两倍!
至于这个结果会产生怎样的效果……
老实说郝云也没有一个准确的概念。
毕竟他对这款冰川引擎的了解,远远没有达到业内人士的高度。
之前他虽然做过游戏,但其实也就只做过2048这一款游戏而已。神殿逃亡算是运用到了和冰川引擎同源的一款开发软件,但那款游戏基本上都是李宗正一个人完成的,郝云压根儿就没参与到开发环节中,就算参与进去了八成也不会研究引擎的源代码。
这个世界的游戏开发工具已经进化到足够傻瓜的程度,除开那些大制作之外,绝大多数的中小型游戏都是能够单纯的依靠开发工具,以及二级程度的编程水平来实现的。
“……话说到底咋测试引擎效率提升了多少?这电脑上就没有一个打分软件,或者测试用的游戏吗?”
郝云在电脑上仔细搜寻了一番,然而根本没有找到那种能够用来给引擎打分的工具软件,也没找到能测试引擎性能的游戏。
事实上,主办方确实没有准备这种东西。
毕竟从一开始,他们压根儿就没考虑过有人能真的完成这道送命题。
“我去,这是搞毛线啊?”
搜索了一番之后仍然没有找到检测工具,郝云哭笑不得地看着屏幕,彻底没辙了。
总不能当场开发一款游戏来跑分吧?
虽然也不是不行,但手边一点素材都没有,电脑更是不能联网,总不能从最基础的素材开始做起吧?
一番纠结之后,最终郝云还是放弃了。
算了。
反正自己也想不到更好的优化方法了……
如此想着,郝云叹了口气,伸手点了下考试程序中的提交选项,然后便双手离开了键盘。
考试只设置了三天的最长时限,并没有设置最低交卷时间,提交了答案随时都可以离场。
因为即便是提前交卷也不会加分,所以大多数人就算提前做完了也会选择熬到饭点再交卷,和一起来参赛的朋友出去吃饭。
郝云一开始也是这么打算的,但奈何他的隔间里啥也没有,除了干坐着等之外根本没事情可干,于是只能从自己的隔间里出来了。
离开考场的时候,站在安检口的还是那个保安小哥。
郝云看了他一眼,他也盯着郝云看了一会儿。
“上厕所?你走错方向了。”
“没,我考完了。”
“考,考完了?”
“嗯,”郝云点了下头,指了指体育馆的出口,“我可以出去了吗?”
总算是从愣神中回过了神来,保安小哥木木地点了下头,解开了拦在入口处的隔离带。
两年前的希望杯也是在夏东师范大学比的,当时的他也是站在这里维持秩序。如果他没记错的话,当时最早交卷的考生,也是下午五点钟的事情了。
然而现在,距离九点钟考试正式开始还没一个小时……
这特么是交了白卷吗?
好歹也是从几万份作品中入围的决赛强者,不至于交白卷吧?!
事实上,惊讶的不只是站在考场入口的几名保安小哥。
站在考场后台的主试委员会们,远远比这里的所有人都要惊讶。
尤其是张存浩教授。
在看完了郝云重写的代码之后,整个人都傻掉了。
盯着草稿纸上密密麻麻的算式,不信邪地笔算了无数遍的张存浩教授,终于忍不住爆了一句粗口。
“卧槽!这家伙……是怎么想到这个数字的?”
这……
这也太不可思了!
仅仅只更改了一个猜测数,就让整个函数的运算效率提升了足足两倍?!
站在张存浩教授的旁边,龙威集团软件开发部门的冯正青经理,悄悄拉了他一把,小声问道,“如果将它运用在冰川引擎上能提升多少运行效率?”
“保守估计百分之二十,3D引擎中针对反平方倒数的相关运算还是不少的……”
“怎么会这么多?”冯经理微微动容。
身为外行人的他并不懂那么多门道,也不懂什么是牛顿迭代算法,只是觉得这简直是不可思议!
冰川引擎虽然不是龙威集团的核心研发项目,但该项目组里的计算机大牛也绝对不少。然而这么多人都没有发现这个改进方法,却被一个学生给发现了?
换谁也特么的没法信啊!
满对着写满的草稿纸,张存浩教授扔在苦思冥想着,虽然他已经渐渐感觉到这个东西超出了他所熟悉的研究领域。
站在他旁边的是一名来自首都国防大学的老教授,只见这位老教授在沉默许久之后,也是发出了一声由衷的感慨。
“不可思议……没想到居然让这家伙在最不可能找到突破口的地方找到了突破口。我之前一直认为math.c文件中的函数已经足够完美了,就像加减乘除这些工具一样可以直接使用。没想到居然还有如此神奇的方法,能够让完美的边界再向上一步。”
“这小子是个人才啊!”
不知心里头在想着些什么,张存浩教授沉默的表情中忽然浮起了一丝纠结。
挣扎了许久之后,他看向了自己的老师詹永枢院士。
“不过恕我直言,这样的答案真的没问题吗?”
詹永枢院士看了他一眼。
“你还不服气吗?”
“倒是没有不服气,我只是觉得……有点儿憋屈,”张存浩教授憋了好久,才说出了心里话,“这根本不是程序意义上的解法,他甚至压根儿就没有修改哪怕一行代码。无论是谁都能看得出来……这特么,根本就是数学!”
是的,这特么根本就是数学!
那个参赛者只不过是修改了一个随机数,结果凑巧地让计算“反平方倒数”的底层函数少做了几次牛顿迭代,然后就这么“积少成多”地实现了对引擎的优化?
说到底为什么偏偏是这个数字啊?!
毕竟不是数学家,张存浩想的都快崩溃了,也没想出来。
看着一脸抓狂的学生,詹永枢院士忽然笑了。
“谁说不是呢?”
他也没想到这个数字到底是怎么算出来的,而且是完全一点头绪都没有的那种。
完全依靠直觉?
类似的情况倒也不是没有过,有些数学常数其实最开始也是依靠经验猜出来的,直达十几年年甚至是几个世纪之后才被证明其中的数学原理。
想到这儿,看着那个正在离开考场的考生,詹永枢院士不禁在心中轻声感慨。
可能……
这就是天才吧。