谁是真英雄!PageRank能给三国武将排名

茶余饭后说三国,最有争议也最有乐趣的话题便是武将排名了,无论是《三国志》、《三国群英传》等经典游戏,还是各位著名小说评论家,甚至在我们每一个人的心中,都有一个三国武将的排序。众说纷纭之下,到底哪种排名最靠谱、最全面呢?

小编搜集、筛选了《三国演义》原著中有关武将PK的数据片段,通过原文片段中对战的胜负关系,探索三国武将那些鲜为人知的“秘密”,并对三国武将进行了较为客观的排名。

首先,要确定选取哪些PK片段,也就是样本的选择。此次初选了341条PK片段。然而,我们发现:有些片段是无法判断对战双方武力强弱的,比如一方中伏、暗箭伤人、旧伤未愈等非正常水平下进行的PK和多对多的PK。

其次,我们要对已选取的PK片段进行处理,包括对片段的修改和每一片段中胜负关系的判断。片段的修改包括两方面,一方面把多V1的PK片段,拆分为多个1V1片段,单独判断拆分后每个片段中两个武将的胜负关系。例如《三国演义》中的经典片段“三英战吕布”:

“吕布见了,弃了公孙瓒,便战张飞。斗五十合,众见张飞枪法散乱,飞大喝一声,抖擞精神,酣战吕布。

云长见了,把马一拍,舞八十二斤青龙偃月刀,来夹攻吕布。三匹马丁字儿厮杀。战到三十合,战不倒吕布。

刘玄德掣双股剑,骤黄鬃马,刺斜里也来助战。这三个围住吕布。转灯儿般厮杀。

八路人马,都看得呆了。吕布架隔遮拦不定,看着玄德面上,虚刺一戟,玄德急闪。吕布荡开阵角,倒拖画戟,飞马便回。三个那里肯舍,拍马赶来。八路军兵,喊声大震,一齐掩杀。”

另一方面将多次重复PK的两位武将的多次胜负关系合并成一次PK。如:

“维自引兵到侯河搦邓艾交战。艾引军出迎。两军对圆,二人交锋数十余合,不分胜负,各收兵回寨。

又赶到十里,鼓声大震,一枝兵截住去路,旗上大书“征西将军邓艾”六字。两军混战,蜀兵人困马乏,强与力生军交战,威风已挫。维抖擞精神,与艾战十余合,不分胜负。”

在合并之前需要进行战果判断,如果两武将多次交战战果相同,则将多次PK合并为一次PK。事实上,在公平PK情况下,两武将多次交战战果均相同。

对于胜负关系的判断,我们有三大法宝——“原文字样”、“多V1原则”和“前后文语境”。“原文字样”,即根据原文评判。如果以某武将为主语的句子中出现“斩”、“杀”、“生擒”、“提头”、“胜”等字样,认为该武将取胜;出现“不分胜败”、“诈败”、“不敢恋战”等,认为对战双方平手;出现“败走”等,认为该武将战败。

例如“关公温酒斩华雄”片段,认为关羽胜华雄。

“(关公)出帐提刀,飞身上马。众诸侯听得关外鼓声大振,喊声大举,如天摧地塌,岳撼山崩,众皆失惊。正欲探听,鸾铃响处,马到中军,云长提华雄之头,掷于地上。其酒尚温。”

再如“许褚战徐晃”片段,认为许褚平徐晃。

“操出马视之,见徐晃威风凛凛,暗暗称奇;便令许褚出马与徐晃交锋。刀斧相交,战五十余合,不分胜败。”

多V1原则是我们自己制定的判断原则,除混战情况,在任何对阵中,无论单方输赢,多方任意一人均弱于单方。(不然为什么群殴啊?)。如“三英战吕布”拆分为1V1的战果为:吕布胜张飞、吕布胜关羽;吕布胜刘备。

对于一些难以判断胜负的对决,我们通过前后文语境给出战果判断。如:

”吕布见了,弃了公孙瓒,便战张飞。斗五十合,众见张飞枪法散乱,飞大喝一声,抖擞精神,酣战吕布。”

判断结果是:吕布胜张飞。再如:

“(关兴)横刀勒马大叫曰:“张郃休赶!有吾在此!”郃就拍马交锋。不十合,兴拨马便走。郃随后追之。”

判断结果是:关兴平张郃。

然而,这341条PK片段中,有些武将之间并没有直接或间接对决,致使难以评定他们的武力水平。我们使用武将对战关系的连通子图进行了二次筛选,剔除了最大连通子图之外的武将。(科普一下:网络上直接或者间接相连的节点的集合称作连通子图,包含节点数最多的连通子图叫做最大连通子图。)

最大连通子图之外的武将包括卑衍、曹髦、陈就、成济等(确实都是战五渣,我一个都不认识……你说什么?吕蒙?这里我要说明一下,吕蒙的官职名称叫都督,也就是周瑜那个官,你觉得周瑜是武将吗?当然不是啦,所以吕蒙不能算武将的,而且他全文就打过一场,你还认为他是武将吗?)。最终,我们处理得到的数据有326条PK片段,参与武将260人。

描述性分析

整理完了数据,我们先做些有趣的分析,探索一下三国武将那些鲜为人知的“秘密”。

首先是最简单的频数统计,得到的便是每一个武将的出场频数。和预想中的一样,子龙同学果然是三国武将第一劳模,想当初在长坂坡七进七出连战曹营五十多员大将,绝对是最苦逼的人没有之一。其他人不一一赘述,自己看图。

在第一个图的基础上,将武将战绩按照战果的“胜”、“平”、“负”用不同颜色表示,再对胜局进行排序,我们得到了常胜将军条形图,从这个图中我们就能大概判断谁强谁弱。可以看出,吕布、赵云靠实力,魏延、张郃靠演技。

说到演技,NENU小组成员八卦之心愈发强烈,赶紧马不停蹄的查找原文,对武将在PK中的诈败次数进行了统计,并做出了如下的条形图。结果一出来,令人大跌眼镜,魏延同学真的是戏精,不管打得过打不过都要诈败——来一个我败一阵,来两个我败两阵,来十五个我败十五阵,套路啊,全是套路!怪不得网上都说魏延是诈败之王,果然名不虚传。只可惜,三国没有奥斯卡,演得再好也没奖。

接下来,我们统计了每两位武将的PK次数,找出了三国武将中的几大死对头。概括起来,这真是——吕布张飞天天打,张飞张郃是本家,魏延张郃来回演,姜维邓艾难上下。

最后,我们试图寻找最有精力的小伙纸,作为描述性分析的收官。通过对五十回合以上PK次数的统计,我们授予许褚、张飞、关羽、马超、张辽五位小伙子“最佳运动员”称号。

以上就是三国武将那些鲜为人知的“秘密”了。如果各位熊孩子们还有哪些想八卦的三国武将“秘密”,不妨自己动手做一做,结果肯定也很有趣~~

建模排序

PageRank算法:搜索引擎对网页排序的经典算法。该算法计算每一个网页的PageRank值,再根据这个值的大小对网页的重要性进行排序。

基本原理:如果一个网页被很多其他网页链接到,说明这个网页比较重要,其PageRank值会相对较高;如果一个PageRank值很高的网页链接到一个其他的网页,那么被链接到的网页的PageRank值也会相应地提高。

在这里,我们用PageRank算法来进行武将排名是合理的:把武将看成网页,把武将两者的PK结果看成是网页的指向,战果数值(下文定义为钦佩度)就是网页链接有向图中边的权重。因此类比网页排序的PageRank算法,求出武将武力值得分。

接下来的问题就是,如何构造有向图的邻接矩阵?这里把根据武将对战结果构造出来的邻接矩阵称为钦佩度矩阵。我们给出量化准则:(1)在一场单挑中,若武将甲胜了武将乙,则武将乙对武将甲的钦佩度定义为1,同时武将甲对武将乙的钦佩度定义为0 ;(2)若武将甲与武将乙战平,则相互之间的钦佩度各为0.5;(3)若武将甲和武将乙没正面PK过,则相互之间的钦佩度均为0;(4)武将的自钦佩度定义为其他交手武将对其钦佩度的平均值。

通过对PK片段建立钦佩度矩阵,并使用PageRank算法排序,我们得到了如下的三国武将排名图(其中武将的武力值是PageRank值的线性变换)。

可以看出,利用PageRank得到的武将排名和很多经典排名有一定的出入,对此,需要说明以下几点:

1. 本排名是以《三国演义》原文的武将PK片段作为数据源,并使用PageRank算法计算而得,由于数据可能无法完全地反映实力(如孙坚、孙策等公认实力极强但出场极少的武将)以及算法的局限性,导致了本排名与其他排名存在差距。

2. 本算法中,胜场次数越多、战胜实力武将越多的武将排名越高,这对于一些文中描述为“强力”但出战次数少的武将十分不利,如典韦。典韦虽然被一些小说评论家誉为“曹营第一武将”,但是他作为曹操的贴身侍卫长,要时刻保护主公的安全,故极少出战,且交战的武将大多不是名将,这导致在本排名中典韦处在一个相对较低的位置。而有些武将名气虽然不大,却因为与几个知名武将有一番交战而成功“偷鸡”。

接下来,是一份上榜感言:

研究结论

总结一下,武将想要排名靠前大概具有如下3个特征:

勤:对阵次数多,勤快。

虎:对阵名将多,挑硬柿子捏,有股子虎劲。

强:对阵败绩少,靠实力说话。

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();