? 天天天天躁天天爱天天碰2018,天堂在/线中文在线资源8,亚洲 欧美 国产 日韩 中文字幕

亚洲 a v无 码免 费 成 人 a v,性欧美videofree高清精品,新国产三级在线观看播放,少妇人妻偷人精品一区二区,天干天干天啪啪夜爽爽av

風(fēng)靡世界的猜詞游戲,有人迷上了它背后的數(shù)學(xué)

2022/05/05
導(dǎo)讀


撰文|antares

編輯|馬修


前段時間,以黃綠色塊矩陣圖為交互界面的猜詞游戲Wordle風(fēng)靡社交網(wǎng)絡(luò),隨后又誕生了各種變體游戲,比如中文成語變種、英語四詞變種。如今風(fēng)潮退去,讓我們一起來看看“留在沙灘上的貝殼”。

Wordle游戲的規(guī)則非常簡單,它要求玩家在6次之內(nèi)猜出一個由5個字母組成的單詞。每次輸入單詞時,如果輸入的字母在目標(biāo)單詞中,但是位置不對,那么格子會顯示成黃色;如果輸入的字母在目標(biāo)單詞中,且位置正確,那么格子會顯示成綠色;如果都不對,則會顯示成灰色。玩家需要根據(jù)每次猜詞后的反饋來調(diào)整自己的猜詞策略,最終猜出單詞。

雖然玩Wordle的大多數(shù)人都是自己乖乖猜詞,但心思活絡(luò)的人很自然就會想到:有沒有可能借助計算機,弄出一個神奇的算法幫自己猜詞呢?

玩Wordle時,一般人會先使用一兩個固定的詞打底,然后再猜符合之前提示的詞,不斷縮小范圍直到猜出正確答案。通常情況下,這種思路行得通。但是,如果你遇到過下圖中的情況,就會發(fā)現(xiàn)這種單純的策略并不合適。

下圖這種局面,在第4次猜測的時候,不能像圖中這樣,更換首字母來猜測,而是應(yīng)該把所有可能的首字母列出來,找一兩個詞涵蓋最多的首字母可能性,然后根據(jù)反饋盡可能多地排除掉不可能的首字母,確認(rèn)出首字母后,才能保證第6次有可能猜中。

一次開局驚艷、結(jié)果失敗的Wordle游戲

我們需要更高級的策略。在討論算法之前,我們先來看一下手頭可以使用的素材。

Wordle所使用的單詞表,可以在它的json代碼里直接看到。單詞表有兩個,一個是從游戲上線第1天開始之后的2000多天,全部正確答案的列表;另一個,是這些正確答案以外可以合法猜測的單詞列表,共10000多個。

兩個詞表加起來的12972個單詞,正好就是CSW19(Collins Scrabble Words,2019)中所有的五字母單詞?!癈ollins Scrabble Words”是英語國家中Scrabble錦標(biāo)賽(猜詞比賽)普遍使用的詞表,在英文的單詞類游戲里相當(dāng)權(quán)威。當(dāng)然,在我們討論Wordle猜詞策略的時候,是不能使用正確答案列表的,否則就可以根據(jù)日期直接翻出答案了。以下的討論,都應(yīng)當(dāng)基于我們手上只有CSW19詞表的假設(shè)來進(jìn)行。

有了詞表之后,初等的想法就是根據(jù)字母頻率來選擇單詞。字母在詞表里出現(xiàn)的次數(shù)越多,確定或排除之后就越好縮小范圍。如果你在網(wǎng)上搜索一下,絕大多數(shù)講Wordle猜詞策略的文章,都是按照這個思路推薦的。所以,元音或常見字母多的adieu或是aisle就是很好的第一猜測。當(dāng)然,這個算法相當(dāng)簡陋,但不需要電腦就可以做。

接下來,讓我們用數(shù)學(xué)化一點的思維,繼續(xù)對這個想法進(jìn)行分析。

從直覺上講,猜一個詞之后,顏色的提示根據(jù)黃綠灰3種顏色的不同,會有3^5=243種可能的組合。那么剩余的詞表,也會按照上一個詞的顏色提示拆成243個更小的詞表。要是這些拆分后的小詞表里,有一個包含的單詞數(shù)量特別大,萬一正確答案就在這個詞表里,那么接下來就會很難猜。反之,拆分得越均勻,就說明不管正確答案在哪個詞表里,都會相對好猜,這個第一次猜測的詞也就越有效。

那么,怎樣算是“拆分得均勻”呢?數(shù)學(xué)上的做法是使用信息熵,其定義是:每個事件發(fā)生概率的對數(shù)的期望值,單位為比特。信息熵滿足可加性,對一個猜測來說,“出現(xiàn)243種反饋的哪一種”這一隨機事件的信息熵越大,“正解位于剩余詞表中哪一個”的期望信息熵越小。而當(dāng)信息熵等于0的時候,就表明詞表只剩下一個詞,答案可以完全確定了。因此,每一步都應(yīng)當(dāng)尋找讓“出現(xiàn)243種反饋的哪一種”這一隨機事件的信息熵最大的猜測詞。這一算法的細(xì)節(jié),可以參考3blue1brown關(guān)于wordle的視頻,他以這套思路為算法策略,模擬出的平均猜測次數(shù)是4.124。

但是,這個策略是不是最優(yōu)的呢?事實上,它所考慮的僅僅是每一步的局部最優(yōu)策略,而局部最優(yōu)的組合不一定是整體最優(yōu)——就如同磨刀不誤砍柴工的道理。它甚至不能先驗地回答這樣的問題:該策略能否保證在6次之內(nèi)猜出任何Wordle的答案?滑鐵盧大學(xué)的前研究助理教授Laurent Poirrier在他的博客(blog)上對此進(jìn)行了一系列的討論。我們下面展開講講。

嗯?稍等一下。什么叫“保證在6次之內(nèi)猜出任何答案”?

我們可以先設(shè)想一下如何描述一個“解Wordle的策略”。如果有人聲稱自己有Wordle的必勝法,該怎么要求他證明?

甲:我有一套Wordle的必勝法。乙:那你把每一步該猜什么詞寫下來吧。甲:但根據(jù)反饋不同,每步猜的詞也不同啊。乙:第一個詞總是要在什么信息都沒有的情況下猜的,你把第一個詞寫下來吧。甲:好,我寫了。乙:第一個詞輸入以后有243種可能的反饋。對于每種可能的反饋,你的第二個詞分別是什么,寫下來吧。甲:好,我寫。啊,不過有些反饋(比如綠綠綠綠綠)這個游戲就結(jié)束了,還有些反饋(比如第一個詞猜apple,反饋是黑綠綠綠綠)根本沒詞可以滿足,那些就不寫了。乙:沒問題。在每種可能性下你猜完了第二個詞,然后你又有243種可能的反饋,對于每種反饋,你第三個詞會猜什么?

如此類推。對圖論熟悉的讀者立刻可以看出來,這樣寫下來的詞會構(gòu)成一個圖論里叫做樹的結(jié)構(gòu),也就是所謂“決策樹”。每一個“猜測”都相當(dāng)于是沿著決策樹往下走一層,這會縮小可能的詞表,直到可能詞表只剩下一個為止。

決策樹原本是一個運籌學(xué)分類算法里的概念,用來描述決策的流程,在機器學(xué)習(xí)中它則是分類算法的一種模型。在Wordle猜詞游戲這個場景里,我們的目的,是通過確定每個節(jié)點所猜的詞,來構(gòu)造一個“深度”盡可能少的決策樹。

Wordle決策樹 圖源:https://www.poirrier.ca/notes/wordle/#decision-trees


可以看出來,決策樹的最大層數(shù)(“深度”)表明了最差情況下的猜測次數(shù)。倘若存在一個深度5的決策樹,就說明按照這套策略,在6次猜測之內(nèi)(第1次猜測叫做深度0)一定可以猜中答案。同時,對于任何答案,也都可以“按圖索驥”地計算出,這個答案需要幾次可以被猜中。倘若需要求算“平均次數(shù)”是多少,也可以用這種方法算出來。

如何確定這種決策樹存在或是證明其不存在呢?當(dāng)然是靠試錯和枚舉。

具體說來,第一層有一個詞,這個詞有12972種可能性。第一個詞確定之后,第二層的詞有最多243個詞表,每一個詞表又有12971種可能性……如果枚舉完前5層所有可能的情況,就能找到一棵完整的樹,那就說明一定有一個可行策略可以保證6次內(nèi)猜中,如果沒有,那就說明6次不夠。

當(dāng)然,5層的決策樹,每層243個分支的話,最多會有243^5條分支,再考慮到每個分支下所猜測的詞最多有12972種可能性,計算量就會爆表了。不過,在適當(dāng)?shù)摹凹糁Α焙驼{(diào)整試錯優(yōu)先級的做法之下,所需要的時間可以大幅減少。

直覺上,我們會認(rèn)為,倘若一個猜測能在最差的反饋下盡量減少可能詞表的大小,那這個猜測就會更有效率。滑鐵盧大學(xué)的Laurent Poirrier采用了243種情況下剩余詞表的平方和作為這個衡量標(biāo)準(zhǔn),平方和越小的選項就越會優(yōu)先枚舉。

按照這一策略,Laurent Poirrier成功花了50個CPU小時的時間找到了一個5層的決策樹,第一個詞是spaer。也就是說,Wordle確實可以保證在6次之內(nèi)猜中(12972個詞中的)所有可能的答案。進(jìn)一步的分析,幫助Laurent Poirrier找到了平均(假設(shè)詞表中所有單詞以同樣概率為正解)猜測次數(shù)意義下的最優(yōu)算法,平均猜測是4.07771次,最多6次猜中。

之后,Laurent Poirrier試圖用同樣的方法,尋找4層的決策樹或證明其不存在,也就是說想看看5次猜測能否保證猜對。結(jié)果,他把自己在亞馬遜云上的計算時長燒空了也沒算出來。

在尋找可行的解法時,只要找到一個正解算法就可以停了——例如,在尋找6次保證能猜中的算法時,他將搜索空間分成了10組同時進(jìn)行,編號為9的那組的第一個詞就是發(fā)現(xiàn)有一個可行解的spaer,之后的詞也就不用試了。反之,如果燒了非常多的計算時長也沒有找到,就說明枚舉了非常多的決策樹,但沒有一個可行的。換句話說,5次保證猜對的算法很可能不存在——當(dāng)然了,這并不是一個嚴(yán)謹(jǐn)?shù)淖C明。

那么有沒有什么辦法,可以不需要枚舉所有可能性就證明這種算法不存在呢?山重水復(fù)疑無路,柳暗花明又一村。沒過兩天,就有名叫Alex Peattie的另一個人,換了個角度進(jìn)行嘗試。他在自己的Blog上簡潔而靈巧地證明了5次猜測是不夠的。

這套證明的核心是基于這樣一點:找詞表中有19個結(jié)尾是ills,只有首字母不同的單詞:bills, cills, dills, fills, gills, hills, jills, kills, lills, mills,nills, pills, rills, sills, tills, vills, wills, yills, zills

換言之,幾乎所有的輔音字母都可以配上-ills形成一個英語單詞。問題在于,即使預(yù)先就告訴你正確答案在這19個詞當(dāng)中,5次猜測仍然不夠用。

事實上,想要保證在第5次猜中的話,前4次的猜測就必須包含19個可能首字母中的18個,根據(jù)簡單分析,每個單詞只有5個字母,4個單詞20個字母,這樣減去18,只有2個字母的余地,那么我們可以知道,至少有兩個詞要完全由這19個首字母之中的五個組成,并且還不能有相同字母。

由于這19個首字母中并不包含“a e i o u”五個元音字母,y也只能用一次,因此,只有兩組詞符合這些條件。

另人非常意外的是,竟然真的有兩組存在——誰能想到竟然真的有crwth這種單詞呢?確定之后,再去遍歷嘗試,能否用兩次猜測排除掉剩余9個字母中的8個,答案是不行,因此就可以證明5次猜測不能保證猜中正確答案。

關(guān)于Wordle還有一些其他的進(jìn)階討論。例如,倘若已知正解在那個2000多的詞表里,則是最多5次猜中。在困難模式下,也就是每次猜的詞,必須符合此前的所有提示的模式下,則需要7次才能保證猜中,平均需要4.52629次。對于詞表甚至字母表都不同的變體(比如中文成語版本),找出多少步能保證猜中則是一個NP問題(Non-deterministic Polynomial,即多項式復(fù)雜程度的非確定性問題)。

游戲快樂,燒腦快樂。

參考文獻(xiàn):
【1】https://www.poirrier.ca/notes/wordle-optimal/#computational-complexity【2】https://alexpeattie.com/blog/establishing-minimum-guesses-wordle/

制版|小圭月
歡迎關(guān)注我們,投稿、授權(quán)等請聯(lián)系

saixiansheng@zhishifenzi.com


參與討論
0 條評論
評論
暫無評論內(nèi)容
《賽先生》微信公眾號創(chuàng)刊于2014年7月,創(chuàng)始人為饒毅、魯白、謝宇三位學(xué)者,成為國內(nèi)首個由知名科學(xué)家創(chuàng)辦并擔(dān)任主編的科學(xué)傳播新媒體平臺,共同致力于讓科學(xué)文化在中國本土扎根。
訂閱Newsletter

我們會定期將電子期刊發(fā)送到您的郵箱

GO