上次有位同学在坛子里问,博弈论在现实中有什么应用?言下之意,大概是想说博弈论没有用。其实,我们经常说,某某知识学来没有用,恐怕还是学得不到位造成的偏见居多。就我自己的经验来看,还真的没有太多知识是没有用的。譬如说相对论,不算太新,但也绝不浅显,你拿出一台手机用GPS功能定位的时候,是否知道在你头顶两万公里的轨道上,卫星随时要靠相对论来校准高速运动造成的时间偏误?哲学家还在通过不着边际的思辨论证时间的本质的时候,相对论的应用早就走进了我们的日常生活。
说回到博弈论,当时在那个帖子里,我提了P2P网络的上传策略,但是并没有说开去。今天刚好时间充裕,就把这个作为博弈论现实应用的一个例子往下说一说。懒得去翻资料,细节也就不太推敲了,如果技术上有说错的地方,万望各位海涵。
现在用的下载软件不少都采用P2P技术,简单说,BT就是其中一种。这个大家平时种子想必也都下过,你懂的,就不用多介绍了。P2P是Peer to peer对等网络的缩写,也有人说是Point to point点对点,反正,不同于客户端直接从服务器复制文件的传统下载方式,每一个客户端同时也上传自己当前已经下载到的数据。这样说可能有些抽象,具体点说,比如A和B各自从服务器下载1G的电影,那么服务器就要负担2G的流量。现在服务器把512MB的上半部分传给A,把下半部分传给B,然后A和B再互相交换上下部分,结果交换完成以后,服务器只负担了1G的流量,上传的压力分担给了客户端A和B,这就充分利用了A和B之间的带宽。这一块内容有一点统筹的味道,但是也是老生常谈,在此也就不再深究了。
说到这里,博弈论在哪里可以派上用场呢?关键就在于A和B之间的交互策略。我们设想这样一个P2P的网络,100台电脑连成网络,各自都拥有想要的文件的一小部分,它们需要互通有无,通过交换这些文件碎片,来最终得到完整的文件。那么,每台电脑向同伴(peers)发出文件请求,同时也收到其他电脑发来的请求,但是上传会造成自己的带宽被占用,网络减慢,所以看起来只下载不上传是个最好的选择。如果它只下载不上传,能不能实现自己的目的?它的“尽快”,是不是整个网络的“尽快”呢?
要是这时候没有想到General Equilibrium,你就整个逊掉了。所有电脑都希望自己尽快完成下载(所有人都希望自己的利益最大化),那么能不能它的意图能不能实现(能不能实现个体的最大化),这个最优是否又和集体的最优一致呢(所有市场一起出清)?我们看到,学习的东西都是串在一起的。Nash一早就告诉我们,如果都只顾着自己下载而不上传,最后结果就是谁也下不到。换言之,你的电脑只冲着“赶快下载”的目标奔去,只会得到最差的结果,也就是囚徒困境。
只下载不上传既然行不通,那么现在,仍然是上面的情景,但是最终的问题转变了:这100台电脑各自采取不同的上传策略,采取哪一种策略的电脑能够在这个网络里始终下载到东西?这个问题我不打算直接解答,因为你如果看过平迪克的中微的话,应该对这么一个实验有印象:研究人员用程序模拟了100家(或者随便几家,我就不翻书了)公司,每家公司有不同的策略,比如有的就是骗子,有的就是老好人,然后这些公司彼此进行一轮又一轮的交易。在多轮交易过去之后,采取哪一种策略的公司可以最终存活下去?答案是:Tit for tat,以牙还牙。
就这么简单,现在一般的P2P客户端就这么设计:如果上次你向我上传文件,那么对于你的请求我就予以响应。如果你一贯只下载不上传,那么我就不会浪费带宽上传给你。迅雷之所以被许多电骡用户称为“吸血骡”,就是因为它在技术上想方设法通过少量的上传或者不上传而完成下载。总之,这个策略行动可以内化在软件里,也有的把部分选项交给用户;对于用户可能做出的选项调整,软件可能也有针对性的设计,比如强制上传等等。一切就是为了确保在一个可以接受的限度内,软件在P2P网络上体现出一个一致的策略,最后在多轮博弈里存活下去(得到一个稳定的下载能力)。
说穿了并不高深,以牙还牙四个字中原自古有之;但是,要让这个想法最终用来确保你下毛片的速度是最优的,至少程序员们要知道一点博弈论。或许你这辈子也不需要去设计一个下载软件,但是你起码要知道,在那么多个孤独的深夜,是博弈论在陪伴你躁动的灵魂……扯远了,还是那句话,没有多少知识是没用的。人文背景的同学最好还是多了解一些理工的知识,才能知道在历史和社科之外,这一百年来,世界发生了什么样的变化。