金庸人物戰斗力的建模與計算

jopen 9年前發布 | 6K 次閱讀 計算

文/@王漫如

金庸筆下人物武功的強弱,經常被大家拿來討論,這也是因為金庸的小說有兩個得天獨厚的優勢。第一,人物發揮比較穩定。金庸兩次修訂自己的小說, 書里人物的戰斗力有一個相當清晰合理的分級。像第一版《神雕》里的神雕能和金輪法王戰成平手;《倚天》里謝遜一出場,張翠山覺得武當七俠聯手也無法戰勝 他,這些不合理的地方在后面的版本都作了修改。相較之下,古龍溫瑞安筆下人物的戰斗力就比較混亂了。四大名捕的鐵手,在《會京師》里只能和楚相玉(曾敗于 鐵手的師父)走二十五招,在《少年鐵手》里,少年鐵手的內力卻反而超過自己的師父。這樣想要評估鐵手以及楚相玉的戰斗力,就難免顧此失彼,自相矛盾。第 二,金庸的武功便于量化。滅絕師太是用了三成內力,還是七成內力,都從上帝視角說的清清楚楚;兩個人拆了三十招還是五十招也都很明確,這就給評估金庸人物 的戰斗力創造了很好的條件。

但是諸如“五絕的武功在倚天里相比三渡怎么樣”這種問題,每次都會掀起爭論。究其原因,畢竟還是因為沒有一個定量的戰斗力指標,可以用來量化不 同書中人物的戰斗力。鑒于金庸武功有這樣兩個極為便于量化的優勢,本文建立了一種評價人物戰斗力值的數學模型。通過這個模型,可以比較某一人物的所有戰績,對每個人物給出一個可信的戰斗力數字。甚至能依據相同的標桿,跨越不同作品進行人物戰斗力的比較,平息人物之間戰斗力強弱的爭論。

(注:金庸小說前后一共三版。本文所有的戰斗力評估,如果不特別指出,均以第二版為基準。在需要的時候,也可以參考第一版和第三版的內容。)

一、戰斗力數學模型

要建立這樣一個戰斗力的數學模型,必須考慮到金庸人物的這樣一些特點:

1, 招數和內力需要分開考慮。金庸人物中,經常會有一個人不大懂武功招數但是內力超常的情況。這樣的人物,最起碼可以反彈內力不足者的所有攻 擊,比如段譽對宗贊王子;再高一級,則能自動感知物理攻擊,比如張無忌在光明頂躲開何太沖夫婦的“無聲無色”。而到了最高境界,就可以“隨心所欲,無不如 意”,和武功精強的一流高手戰成平手,比如覺遠對何足道,石破天第二次對丁不四。在少數情況下,如果人物內力很弱但招數精妙,一樣可以克敵制勝,比如無內 力的令狐沖對內力全開的任我行,學會辟邪劍法的林平之對余滄海和木高峰,何太沖失去內力時對趙敏的武士。

2, 陣法的加成作用。從最開始碧血劍里的五行陣,到射雕系列中的七星北斗大陣,金剛伏魔圈,武當七俠的真武七截陣,都能夠明顯提升戰斗力。但是這些陣法對戰斗力的提升也各不相同。這些都要在建模里有所反映。

為此,可以建立這樣一個戰斗力的數學模型。每個人物一共有三個參數,分別為“戰斗力”、“內力”和“招式”。戰斗力值是用來衡量人物之間勝負關系的主要參考指標,而這個值,由他的內力值和招式值決定,三者之間的函數關系如下

金庸人物戰斗力的建模與計算

這個式子看起來有點復雜,實際上就是一個加權平均。如果一個人的內力和招式一樣都是a,那么

金庸人物戰斗力的建模與計算

也是a。對于大多數人來說,內力和招式一般是成正比的,即內力越強的人招數越強(這個假設很合理,因為一個人內力越強,一般說明他修煉的時間越 久,修煉的功夫更高明,所以招數自然也越精),那么可以認為他們的三個數值是一樣的,可以簡單用一個值a來表示。但是對于一些在招數或內力上有強烈優勢的 人,這個公式就可以用來很好的解釋他的戰績。以覺遠對何足道為例,假設何足道的內力和招式都是 80,他的戰斗力就是 80。覺遠基本不會武功,可以認為他的招式為0。但是他能和何足道基本打個平手,戰斗力也是 80,那么他的內力是:

金庸人物戰斗力的建模與計算

是何足道的四倍。九陽神功滿級的張無忌和三渡內力之和相當(“張無忌九陽神功之強,不輸 于三僧聯手”),所以同樣九陽神功滿級的覺遠是何足道內力的四倍,是一個很合理的估計。完全沒有內力的令狐沖能和內力全開的任我行打成平手,那么令狐沖的 招式水準也大約為任我行的四倍。考慮到獨孤九劍是一種“敵強愈強”的武功,這個估計也是合理的。

二、內力取值的計算

模型建立之后,人物的具體戰斗力值怎么確定呢?這個需要通過人物互相之間的戰績來決定。首先討論對內力值的估計:

用A和B代表兩個對手。假設A被B擊中,在金庸的書中會有一些代表性的反應。在其中一些情節中,又能給出兩人內力的一個典型比例關系,可以作為內力評估的參照。

1)A被B擊中,只是一陣劇痛,但沒有受傷。

一個典型戰例是張無忌和三渡的交手中,張無忌被三渡之一擊中。考慮到張無忌的內力等于三人之和,則B≈ 0.33A(注意到三渡的實力是有差別的。但是這里的區間是一個近似估計,而且可以想象,不論三渡中的哪一位打中張無忌,效果都相差不大)。

2)A被B擊中,嘔血受傷,但不致命。

這個有幾次出現。一次是滅絕師太用七成功力打飛張無忌,張無忌重傷嘔血。考慮到之前張無忌震飛靜玄的時候,滅絕師太暗暗吃驚,想自己也沒這樣的 功力。那么假設張無忌內力是滅絕師太的 1.5 倍,滅絕師太用三成功力將張無忌打至吐血,那就是1/1.5*0.3= 0.2 倍張無忌的內力。這個值低于前面推出的 0.33 的閾值。但考慮到張無忌當時對內力的運用還不太成熟,而滅絕師太則極為老辣,所以這一掌的效果比正常情況下更突出。因此,A嘔血受傷的下限應該是 0.33A< B。然后再考慮上限。有一個例子是《俠客行》里白自在和丁不四交手,一掌將丁不四打吐血。白自在的內力明顯強于丁不四,就算是 1.5 倍丁不四。

綜上,這種情況下 0.33A < B  < 1.5A

3)A被B擊中致命。

比如梅超風被歐陽鋒擊中的情況。這種情況下至少有B>1.5A。

4)A完全反彈B的攻擊

考慮到1)的情況,B <0.33A. 但是這個條件還不夠。張無忌在光明頂上對空性,心想“恐怕無法不動聲色地令空性知難而退”。空性的內力應當略低于三渡。如果張無忌 能完全反彈空性的攻擊,就沒必要打的這么辛苦,所以反彈攻擊的上限應該會再低一些。假設空性有 80% 三渡的內力,那就是 80%*33.3% = 26.7%,那么完全反彈攻擊,應該是 20% 左右。

綜上,這種情況下 B < 0.2A

5)A和B対掌平手。

這個很顯然 A ≈ B.

6)A和B対掌,A倒退1-3 步。

這里有一個很有意思的例子。在武當山上張無忌和阿二対掌,最開始兩人都晃了一晃,然后阿二分別退出一步和三步,最后完全被張無忌彈飛。如果單看 張無忌完全反彈阿二的攻擊,豈不是說阿二內力= 0.2 張無忌內力?但注意到阿二被彈飛是張無忌運了半天氣的結果。本文中說的內力,是指人物所擁有的內力,也指他一擊能夠打出的內力,這兩者一般成正比。但張無 忌蓄力之后,再加上乾坤大挪移的潛力,可以一次迸發出更大內力。假設他的內力是阿二的x倍,而全力一擊的力量可以認為是 x2,這個內力值完全反彈阿二的內力。那么1/x2 ≈ 0.2,阿二內力 ≈ 0.45 張無忌,甚至已經超過了三渡的內力,確實厲害。所以張三豐對阿二的評價也是“內力渾厚,武林中甚是罕見”。

說了這么多,其實只是想說明張無忌和阿二対掌,除了最后一擊外,阿二倒退1-3 步,“感到氣血翻涌”,才是兩人內力比例下正常的反應。綜上,在這種情況下,0.45B< A < B.

7)A和B対掌,A倒退多于三步,或受傷嘔血。

這種情況下B的內力應當低于“対掌倒退”的情況,即 0.45B> A。

綜上,可以整理出兩人內力關系如下表所示:

金庸人物戰斗力的建模與計算
 

由此,金庸書中所有包含內力比拼的情節,均可以根據上表估計出交手人物之間的內力關系。 

三、戰斗力與交手回合數的關系

上面推算了內力值的計算方法。內力是戰斗力值的一部分。兩個人交手的戰績,除了硬拼內力的情況外,都由他們總的戰斗力值決定。而反應其戰斗力值最直接的參數就是兩人的交手回合數。這里采用雙曲正切函數 tanh,建立戰斗力值與交手回合數的關系如下:

實力比 =tanh (0.02*x)

X 是兩人的交手回合數。這個函數的圖畫出來就是下面這樣。橫軸表示兩人交手回合數x,縱軸表示戰斗力的比值。例如A在 50 回合時被B擊敗,由圖上可知,A的戰斗力約為B的 0.76。

金庸人物戰斗力的建模與計算

有了這樣的函數,就能直接推算很多人之間戰斗力的比值,例如:

如果A能在 3 招內擊敗B,那么B的實力大約為A的 0.06;

丁不四第一次和石破天交手,覺得二十招擊敗他有點困難,說明他預估石破天的實力不低于他的 0.4 倍;

射雕后期郭靖和歐陽鋒交手三十余招被擊敗。但考慮到郭靖領悟“飛絮勁”后,馬上將回合數提升至五十余招,所以他那時的實力大約是歐陽鋒的 0.76。華山論劍時,黃藥師和洪七公與郭靖交手,都保留了實力。但根據洪七公所想“如果在一百招之內擊敗靖兒,黃老邪面上須不好看”,說明他有一百招內 擊敗郭靖的實力(當然,郭靖當時手拿兵刃,戰斗力反而有所下降),可見當時郭靖的實力大約相當于 0.9-0.95 的黃藥師和洪七公;

張無忌在大都對空手的鹿杖客鶴筆翁,三十招便擊敗了兩人。所以兩人空手戰力之和,是張無忌的 0.6 左右(下一節會說明如何計算兩人戰力之和);

從圖上看,如果兩人交手超過 150 招未分勝負,說明兩人實力基本相當。

以上推算出的戰斗力比值,和我們的直觀印象是相符的,說明了本文所提出的雙曲正切函數模型的有效性。

四,聯手戰斗的戰斗力計算與陣法加成

一般戰斗力計算的文章都認為,幾個人聯手作戰的戰斗力,等于其各自的戰斗之和。這個算法對內力是可行的,即內力可以進行線性疊加。但如果據此計 算人物的戰斗力會帶來很大問題!比如黃藥師和全真七子的天罡北斗陣打成平手。就算不考慮陣法的加成效果,這七位老道的平均實力最多只有 0.14 黃藥師。考慮到丘處機、馬鈺、王處一的實力比其他人都強,那么武功最弱的孫不二豈不是遠低于 0.14?再加上陣法加成的效應,堂堂全真七子之一的孫不二的實力只有雜魚程度,豈不是很不合理?

因此,本文大膽提出一個假設。在沒有陣法的情況下,聯手作戰的戰斗力由以下式子決定:

金庸人物戰斗力的建模與計算

這個式子的意思是,聯合戰斗力,等于每個參展者戰斗力平方之和再開根號,實際上就是一個2-范數。舉例來說,戰斗力 30 和 40 的人聯手,其聯合戰斗力不是 70,而是 50,低于他們戰斗力的直接加和。又比如,如果張無忌的戰斗力是 100,按照前面的推算,鹿杖客鶴筆翁的空手戰斗力約為 60,那么他們每人的單獨實力約為 42,也符合我們的直觀印象(注意前面推出阿二的內力為 45。但是他的招數未必也有這么強,所以總的實力應該會低于鶴鹿二人)。

這個算法很好的解決了前面提到的戰斗力問題。但是最妙的地方在于,這個定義還有助于計算陣法的加成效應。我們先來考察一下武當七俠的“真武七截 陣”。書里寫道,武當七俠如果使用這個陣法,“四人相當于八位高手,五人相當于十六位,六人相當于三十二位,七人相當于六十四位當世一流高手同時出手”。 這種實力指數增長的陣法,堪稱金書中的最強陣法,甚至強的很不合理。但是按照本文的公式來推算,假設每位“當世一流高手”的戰斗力是1,武當七俠每人戰斗 力也是1。那么六十四位當世一流高手同時出手的戰斗力是多少呢?——是8!不是 64。和武當七俠戰斗力之和基本相當。這就意味著真武七截陣將武當七俠的聯合戰斗力,從2-范數增長為接近線性加和。這樣就很合理了。

鑒于真武七截陣堪稱金庸書中的最強陣法,那么其他陣法的加成作用應當小于等于真武七截陣,但是大于無陣法時的聯手作戰。所以像天罡北斗陣一類陣法,均可以由此進行推算。

五,總結

本文基于嚴格的數學推導,提出了完整的金庸人物武功的建模方式。在這個武功模型下,只要建立一個標桿(比如設學會太極拳后的張無忌招數內力均為 100),理論上就可以計算出所有人物的戰斗力值。計算的方式有(但不限于)以下兩種:

1,按照第二部分的方法,推算出人物內力值,再根據“招式值和內力值相當”得出人物整體的戰斗力;

2,按照第三部分的方法,通過人物交手回合數,直接推算出戰斗力值。

金庸里人物極為繁多,如果想推算出所有人的戰斗力值,其工作量大概相當于完成一篇博士論文。鑒于筆者已經不想寫博士論文,所以這里只提模型,不再做進一步具體計算。

有一些問題有待進一步討論:

1, 是否使用武器對戰斗力的影響。雖然《射雕英雄傳》里寫過,武功到了極高境界,有無兵器差別不大,但絕大多數時候,兵器能提升人物的戰斗力。為避免復雜,在計算每個人物戰斗力的時候,最好只算他的巔峰戰斗力,而不用區別他有兵器和沒兵器時的戰斗力。

2, 戰斗力隨年齡的變化。這個問題在射雕系列中比較突出。理論上講,射雕里的五絕隨時間推移,功力會有提高,但他們在神雕后期都接近百歲, “年老力衰”,戰斗力又會下降。但是鑒于百歲周伯通仍然能和楊過酣戰上百招,七十歲左右的金輪法王戰斗力仍然處在巔峰,所以在計算的時候,或許可以做簡化 處理,認為某個人物的武功練到巔峰之后,就不再隨年齡的變化而變化。

3, 不同書中人物戰斗力的橫向比較。這個問題比較困難,特別是對兩部完全不相干的書,但是仍然有蛛絲馬跡可循。可能是兩部書的人物做了類似的 行為,比如蕭峰和覺遠都用腳擦去石上的痕跡。也可以通過數學上進行計算,比如胡斐力量的極限是抱起七百斤的水缸,而張無忌可以消解十層高塔上跳下來的人。 如果計算一下他們使力大小,應該可以得出兩人的內力之比。而一旦兩部書中有一對人物建立了上述聯系,則這兩本書中其他所有人物,都可以由本文的模型推算出 統一的戰斗力數值。

來自: weibo.com

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!