Trie(改编自孔乙己)

字符串王国酒店的格局,是和别出不同的:都是当街一个”C”形或”S”的大柜台,柜台里预备着热水,可以随时温酒。虽然“C”形柜台略嫌小,但”S”形柜台又过大,以至于没法把那块“&”招牌摆出来。虽是如此,做工的人散了工,不用告诉他们地址,闻着酒香也能找到。每每花一个bit币,买一碗酒,靠着柜外站着,热热的喝了休息。如肯多花一文,便可买一叠茴香豆”\0″之类的豆子,但盐煮笋”\”多半却是免费的。如果财务自由空间大,多花出几十bit,那就能享受到S柜台的特殊服务。但这些做工的顾客,多是短衣服帮,大抵没这样阔绰,只有穿长衫的,才踱进店面隔壁的房子里,要酒要菜,慢慢地坐喝。

我从十二岁起,便在镇口的string酒店里当伙计,掌柜说,样子太傻,怕侍候不了长衫主顾,就在外面做点事罢。外面的短衣主顾,虽然容易说话,但唠唠叨叨偏爱暴力的也很不少。他们往往要亲眼看着黄酒从坛子里舀出,得把黄酒密度,重量,坛子材质,深度所有数据都告诉他们,他们自己一个个输出调试,然后放心喝酒。在这严重监督之下,想打表取点水也很困难。所以过了几天,掌柜又说我干不了这事。幸亏推荐我的人情面大,辞退不得,便改为专管温酒的一种无聊职务了。

我从此便整天的站在柜台里,专管我的职务。虽然没有什么失职,但总觉得有些单调,有些无聊。掌柜是一副凶脸孔,主顾也没有好声气,教人活泼不得;只有Trie到店,才可以笑几声,所以至今还记得。

Trie是站着喝酒而穿长衫的唯一的人。他身材很高大,青白脸色,皱纹间时常夹着伤痕。穿的虽是长衫,却补满补丁,皱印满满,又脏又破。身体也总是这儿突出一块,那儿凹下一块,似乎像一棵老树的树皮。最让人好笑的是,他身上刚好有26块大肿块,穿着衣服也能看到,我猜多半是被别人打出来的吧。他对人说话,总是满口fail,loser,教人半懂不懂的。因为他姓T,别人便从描红纸上的“数据结构Trie”这半懂不懂的话里,替他取下一个绰号,叫作Trie。Trie一到店,所有喝酒的人便都看着他笑,有的叫道,“Trie,你那26个瘤子还在那肿着?”“Trie,脸上又添新伤疤了,是不是又fail了几次?”他不回答,对柜里说,“温两碗酒,要一碟茴香豆。”便排出九个bit。他们又故意的高声嚷道,“你一定又偷了人家的东西了!”Trie睁大眼睛说,“你怎么这样凭空污人清白……”“什么清白?我前天亲眼见你抢别人的钱包,又抢不过人家,被吊着打。”Trie涨红了脸,争辩道:“暴力….暴力的事,能算抢么?”接着便是难懂的话,什么“记忆化搜索”,什么“剪枝”之类,引得众人哄笑,店内外充满了快活的气氛。

听人家背地里谈论,Trie原来也也读过树族的小学,但脑袋愚笨,别人两下就学会了,他非得学26下,又不会营生;于是愈过愈穷,被迫离开树族,弄到将要讨饭了。幸而他异乡朋友KMP研究AC自动机器正需要杂工,便跑去替人家算算开支,递递螺丝之类的,换一碗饭吃。可惜他又有一样坏脾气,便是整天愁眉苦脸,好喝懒做。坐不到几天,便大发牢骚,说什么这也不好那也不好,总是fail来fail去,最简单的开支和查错也被弄得一团糟,简直成了TLE自动机。如是几次,别人便再也不敢叫他了。Trie没有办法,便免不了偶然做些偷窃抢劫的事。但他在我们店里,品行却比别人都好,就是从不会把赊账给忘掉,虽然间或没有现钱,暂时记在粉板上,但不出一月,定然还清,从粉板上拭去了Trie的名字。

Trie喝过半碗酒,涨红的脸色渐渐复了原,旁人便又问道,“Trie,你当真认识字么?”孔乙己看着问他的人,显出不屑置辩的神气。他们便接着说道,“你怎的连半个秀才也捞不到呢?”Trie立刻显出颓唐不安模样,脸上笼上了一层灰色,嘴里说些话;这回可是全是fail,loser之类,一些不懂了。在这时候,众人也都哄笑起来:店内外充满了快活的空气。

在这些时候,我可以附和着笑,掌柜是决不责备的。而且掌柜见了Trie,也每每这样问他,引人发笑。Trie自己知道不能和他们谈天,便只好向孩子说话。有一回对我说道,“你学过算法么?”我略略点一点头。他说,“学过算法,……我便考你一考。次方乘法是怎样写的?”我想,只会暴力的人,也配考我么?便回过脸去,不再理会。Trie等了许久,很恳切的说道,“不能写罢?……我教给你,记着!你以后做掌柜,将要会用到的。”把手在口袋里里翻了半天,也没翻到什么。我暗想,他多半是要用他的mathematics1.0,只是说不定在哪次偷窃中赔给人家了,况且我们掌柜从不用普通的次方乘法,从来都是用快速幂。我又好笑,又不耐烦,懒懒的答他道,“谁要你教,次方乘法不就是将一个数乘很多次么。Trie显出极高兴的样子,将两个指头的长指甲敲着柜台,点头说,“对呀对呀!……不过次方乘法不太稳妥,有时又要龟速乘,你知道么?我愈不耐烦了,努着嘴走远。Trie终于没找他的mathematics1.0,只好用指甲蘸了酒,想在柜上写,见我毫不热心,便又叹一口气,显出极惋惜的样子。

有几回,邻居孩子听得笑声,也赶热闹,围住了Trie。他便给他们茴香豆吃,教他们次方乘法。一人一颗。孩子吃完豆,仍然不散,眼睛都望着Trie身上那个稀奇古怪的身体。Trie着了慌,莫不是孩子们想把自己衣服扒走?于是伸开五指将自己身上上26个瘤子都罩住,弯腰下去说道,“26个不多,我已经不多了。”直起身又看一看衣服上那26个瘤子,自己摇头说,“不多不多!多乎哉?不多也。”于是这一群孩子都在笑声里走散了。

Trie是这样的使人快活,可是没有他,别人该AC的也能AC,该过的也还是过。

有一天,大约是NP-hard国际会议前的两三天,掌柜正在慢慢的结账,取下粉板,忽然说,“Trie己长久没有来了。还欠几十个bit呢!”我才也觉得他的确长久没有来了。一个喝酒的人说道,“他怎么会来?……他打折了腿了。”掌柜说,“哦!”“他总仍旧是偷。这一回,是自己发昏,竟偷到路过旅游的线性代数上去了。线性代数家的东西,碰的得么?光是那些转置矩阵逆矩阵,都能把Trie吊打得天旋地转,打得两眼昏花,认不出父节点。”“后来怎样?”“怎么样?先写检讨,后来是打,打了大半夜,打烂身上几个瘤子。”“后来呢?”“后来几个瘤子被烂掉了。”“打折了怎样呢?”“怎样?……谁晓得?26个瘤子被打烂几个,又没钱去医院,许是死循环了。”掌柜也不再问,仍然慢慢的算他的账。

NP-hard会议开始之后,秋风是一天凉比一天,看看将近初冬,我整天靠着火,穿着棉袄,看报纸上说NP-hard会议开了这么多天,到底P是不是NP也没讨论出个结果来。一天的下半天,没有一个顾客,我正合了眼坐着。忽然间听得一个声音,“温一碗酒。”这声音虽然极低,却很耳熟。看时又全没有人。站起来向外一望,那Trie便在柜台下对了门槛坐着。他脸上黑而且瘦,已经不成样子;穿一件破夹袄,盘着两腿,下面垫一个蒲包,用草绳在肩上挂住;见了我,又说道,“温一碗酒。”掌柜也伸出头去,一面说,“Trie么?你还欠几十个bit呢!”Trie很颓唐的仰面答道,“这……下回还清罢。这一回是现钱,酒要好。”掌柜仍然同平常一样,笑着对他说,“Trie,你又暴力去抢东西了!”但他这回却不十分分辩,单说了一句“不要取笑!”“取笑?要是不去暴力抢劫,怎么会打断腿,又把26个瘤子给打掉几个呢?”Trie低声说道,“参数…参数…参数传错了…”他的眼色,很像恳求掌柜,不要再提。此时已经聚集了几个人,便和掌柜都笑了。我温了酒,端出去,放在门槛上。他从破衣袋里摸出四个bit,放在我手里,见他满手是泥,原来他便用这手走来的。不一会,他喝完酒,便又在旁人的说笑声中,坐着用这手慢慢走去了。

自此以后,又长久没有看见Trie。到了年关,掌柜取下粉板说,“Trie还欠几十个bit呢!”到第二年的端午,NP-hard会议也还没有个定论,掌柜又说“Trie还欠几十个bit呢!”到中秋可是没有说,再到年关也没有看见他。

我到现在终于没有见——大约Trie的确死循环了。

后记:自己看了觉得还挺不错的,只是没学过这类算法的人可能根本看不懂吧。但或许喜欢计算机的人会对这个感兴趣?

Leave a Reply