张随机提供的图文资料当中,找出符合搜索要求的那部分。这在2003年来说可是一个相当有困难的题目,毕竟就是以星条国五角大楼的实力,在这方面投入了巨大的人力、物力,耗费了数年的时间,也依然没能取得突破性的进展。
梁虎不清楚其他参赛者会用什么样的办法来解决这个难题,不过他却知道谷歌公司最终采取了什么样的方案,以几十年后的眼光来看,这个方案当然还有着诸多缺陷,然而以这个时候的技术来说却已经是非常先进了。梁虎相信自己如果照抄一遍程序代码应该可以符合谷歌公司的要求,只是他却并不打算做这种没品的事情,抛开知识产权的什么事情不谈,身为一个技术优秀的黑客,又有着未来几十年的阅历,若是还不能拿出具有自己独特风格的程序代码,那还是趁早别碰电脑得了。
编写一个程序,最重要的就是确定算法和框架,一行行的代码只是在这个骨架基础上滋生出来的血肉,若是一开始就走错了方向,代码就算再多也都只是些毫无意义符号。做这件事情的时候,梁虎没有在电脑前cāo作,而是拿着一个笔记本和一支签字笔坐在了写字桌的旁边,他习惯先用文字理清自己的思路,这才仿佛“下笔如有神”那样飞快的打出一行行的代码。
根据前世的经验,五角大楼之所以一直难有突破,主要原因在于他们走了一条弯路,智力正常的大脑可以分辨出图画里面的内容,而计算机却没办法做到这一点,五角大楼将重心放在了编译程序来模拟大脑这方面功能,以现在的软硬件实力自然是事倍功半的结果。当然,五角大楼的做法是出于军事方面和政治方面的考虑,必然要无限制的追求搜索的精准度,一个细小的差别都很可能闹出大/麻烦来。
“嗯,一个图片在储存的时候会被记录它的尺寸和色彩,所以在计算机的眼中,这才是图片的真正内容,既然如此只需要按照计算机的思路去做就可以了!”梁虎一边自言自语,。一边拿着笔在本子上飞快的写道:“先把图片缩小到最基本的尺寸,我看8x8应该差不多了,反正是民用不必考虑精确度,有损就有损呗,还可以大幅度节约代码,减少程序的体积。然后再把像素转化到最基本的程度,避免数据太多影响使用速度。接下来把两个都缩小的图片数据放在一起比较,若是它们的数据相似的话,就表明压缩前的原图也比较相似。”
在确定下这个算法思路后,梁虎回到了电脑面前,他很快就将整个程序的初稿码了出来。看了看总共就80几行的代码,梁虎点下了“编译”的指令,在调整了几个bug之后,梁虎版图文搜索引擎的内部测试版就新鲜出炉了,不过接下来的事情才是整个工作当中最繁琐的,梁虎从互联网下载了一些图片,开始对程序的实用性等方面进行测试,同时也根据测试的结果来修正他在程序中设定的参数数值。
忙碌了两天时间,梁虎最终确定了所有的参数,这个版本的搜索引擎已经可以找出大部分相似的图片了,虽然偶尔会出现诸如把同是肌肉男的施瓦辛格当作是史泰龙的情况,不过出现概率之小却也还在梁虎可以接受的范围之内。梁虎知道若是想要继续改进还有极大的空间,比如以几何数值加大代码行数,用更为精细的算法来压缩和比较图片,或者花费更多的精力把互联网上能搜索到的图片都在事先一一做出索引,显然这可就不是他一个人能做的了的事情了。
到了这一步,梁虎就算是基本完成了参加挑战赛的作品,不过出于黑客的本能梁虎却还是对它再进行了第三次的编译,把本来就不多的程序代码进行了更进一步的优化,以提升静默执行时候的效率和略微减少程序在运行时候所占用的内存空间,谁让黑客自己的程序都往“快”和“小”这两个方向发展呢。
等到最终的参赛版本确定之后,这个被命名为“cool”的图文搜索引擎就算正式完成了,梁虎用事先申请好的“tiger”这个用户名把这个只有49行代码的程序上传到了谷歌网站之后,便将一切抛之脑后,接下来的事情已经不是他可以左右的,反正自己在这个程序上已经竭尽了全力,就算不行也没有遗憾了。