n個漢字兩兩組成常見詞語,求n的最大值?
這個問題太好玩了!無論是用人腦去想,還是用電腦去算,都很有趣味。我這個答案也就分成「用人腦想」和「用電腦算」兩部分。
============= 用人腦想 =============
從最簡單的N=3開始。要想三個字,兩兩能組成詞,怎麼入手呢?
我的思路是:想一對「反義字」,反義的字往往能組成詞。然後讓這兩個字同時去修飾第三個字,或者同時被第三個字修飾,就能用三個字組成三個詞了。
按此思路,不難想出如下的例子:
大小、最大、最小
黑白、黑色、白色
除了「反義字」,「近義字」也能達到類似的效果:
道路、大道、大路
寒冷、寒氣、冷氣
下面想N=4。沿襲剛剛的思路,可以想兩對「反義字」或「近義字」,互相修飾。比如:
大小、寒暑、大寒、小寒、大暑、小暑
春秋、風雨、春風、春雨、秋風、秋雨
甚至可以這樣:
東西、南北、東南、東北、西南、西北
最後這個例子,正好給了我向N=5進軍的啟發:「東南西北」可以算同一組字,再找一個字跟這四者分別組詞!
這樣的字,很容易想到:
方:東方、南方、西方、北方
面:東面、南面、西面、北面
正:正東、正南、正西、正北
向:向東、向南、向西、向北
巧的是,「方面」「方向」「面向」也都是常用詞,於是「東、南、西、北、方、面、向」就是一組N=7的答案了。「方正」「正面」也是常用詞,「正向」嘛……其實它也算個詞(跟「反向」相對),如果這麼認為的話,「東、南、西、北、方、面、正、向」就是一組N=8的答案了。
就到這裡,下面開掛~
============= 用電腦算 =============
原問題可以抽象成一個圖論問題:把每個漢字看成無向圖中的一個頂點,若兩個字可以組成詞,則在兩個點之間連一條邊,求圖中最大的「團」(clique,即頂點全部兩兩相連的子圖)。
首先,構造圖的數據從哪兒來呢?我從網上找了一個《現代漢語常用辭彙表》,用其中的所有雙字詞建了一個圖。
然後,就要找圖中的團了。不幸的是,Clique problem是一個NP-complete問題,無法在多項式時間內求解。但是,我們的圖有它的特殊性,即裡面不太可能有很大的團。為何不試試運氣呢?而且演算法都不需要我親手實現,有現成的庫可以用:
Clique — NetworkX 1.9.1 documentation
代碼如下:
哇,居然只需要0.3s就跑出結果了!
程序找到的最大的團大小為6,共有15個,包括:
東京北南海西
東北南方西面
東北南洋海西
東北南海西邊
東北南海西面
東北南海西風
東北南西部面
東北向方西面
人前後頭年來
人動心手機身
人後頭年來過
會全國大有都
全軍大部長隊
力地場外用電
力水熱電能量
果然「東南西北」大片出現!但其實另外幾組詞也很有意思呢:以「人」開頭的那幾組很通俗,以「會」「全」開頭那兩組很共產,以「力」開頭那兩組很物理。當然,這裡面有「人年」「會有」「水量」這些值得商榷的詞,還有「長」這樣的多音字亂入了。
等下,剛剛用人腦不是找到了一組N=7的「東南西北方面向」么?為什麼這裡沒有呢?
原來,《辭彙表》中漏掉了「向南」這個詞……
另外,觀察上面的15個大小為6的團可以發現,「東西南北海洋」和「東西南北海面」只差一個字,而「洋面」也可以算是個詞(天氣預報……)。把「向南」和「洋面」補充進《辭彙表》,就可以找到兩個大小為7的團了:
東北南向方西面
東北南洋海西面
(「正東、正南、正西、正北」都沒有出現在《辭彙表》里,那就算了吧……)
是否有存在的價值?
如何看待環形正負電子對撞機 CEPC 項目?
不和諧音程使人感到不和諧的原理是什麼?
總是走不出抑鬱怎麼辦?
為什麼大洋地殼中沒有硅鋁層,而陸地地殼含有硅鋁層呢?
TAG:知乎 |
※「二百五」這個數字在中國為什麼會成為罵人的詞語?
※詩詞中常用的44個借代詞語,收了漲姿勢!
※用最簡單的詞語分別概括: 這些星座最大特點及弱點!,你了解你的弱點嗎?
※十個詞語 十段經典 十種情懷
※「三八」是罵人的話,但是你知道這個詞語的來歷么?最早的說法要追溯到宋代
※漲知識:古建築里兩個最基本的詞語,卻蘊含著大大的智慧和美
※邊緣還是邊際?一個高冷到字典也無法翻譯的詞語
※屬於別離的四個詞語!
※看見他,才知道有一個詞語叫「可愛帥」,又被宋仲基圈粉了!
※看見她,才知道有一個詞語叫「可愛帥」,又被宋仲基圈粉了!
※《萬曆十五年》中那些我們不熟悉的詞語
※六個詞語的扎心故事,哪個戳中了你?
※描寫春天的四字詞語,描寫春天的成語
※這些詞語別搞混了
※新詞說澳門:這幾個詞語都懂的話,你才是正宗本地人
※這些詞語原來都是這麼來的,那些不為人知的冷知識
※這些詞語「十個人九個讀錯」,自己認準了再教,別再誤導孩子!
※七個人聊七個詞語
※NBA常用的英文詞語,你知道哪些呢?過來收藏吧!