2017-03-22 83 views
0

它沒有指定它是什麼王國的拼圖遊戲。什麼是最好的算法來解決拼圖遊戲

我假設像標準件拼圖正常圖片。 q語句: 解決拼圖遊戲的代碼。數據結構是什麼?假設你有一些方法可以告訴你兩件是否合在一起。你將如何解決這個難題,最大限度地減少你需要調用這個函數的次數?

分而治之是最好的方法嗎?數據結構必須是根據我的二維數組,還有什麼?

回答

0

密碼和密碼被正式稱爲替代密碼。這是您在搜索有關此主題的更多資料時要使用的關鍵字。

替代密碼很容易中斷,無論是對個人還是計算機。

通常情況下,一個自動解算器將包括兩個部分:

  • ,可以採取文字,並評估它如何非常類似於在預期語言
  • 的算法,看起來對於 純文本的功能產生的 最好的冠冕堂皇的解密文本的加密密鑰(其中「最佳聲音」的意思,它是 在前面提到的項目函數的優化)

對於簡單的替換密碼,第二部分的一個不錯的選擇是任何一種啓發式局部搜索,例如Hill爬山:從隨機排列開始,然後應用小改動來提高破譯文本的得分。替代密碼具有解決方案空間是「平滑」的很好屬性:對密鑰的小改動(例如交換兩個字母的圖像)對解密的文本產生小的改變。已經有幾次迭代的最簡單的爬山通常足以找到全局最優。

至於評估解決方案的函數,對於加密引號和類似的難題,一個相當直接的方法是檢查解密的單詞是否可以在預期語言的單詞表中找到,並且可能使用它們的頻率來獲得更多精確的評估。這可以做到,因爲這種密碼的拼圖版本通常保留空格和標點符號。

另一種方法(我的首選方法,更通用,更健壯)是使用統計。使用您的語言預先計算tetragrams的頻率,而不是使用單詞列表。 (在這種情況下,tetragram =四個連續的字母)。這些可以用作隱馬爾可夫模型的概率,該模型生成與實際語言非常相似的字符串,並且我們可以將我們的評估函數定義爲所述(對數)概率發電機會產生我們正在評估的特定字符串。這個概率越高,字符串越「聽起來像我們的語言中的東西」。

  • 列表項
+0

這似乎並沒有回答這個問題,這是關於拼圖。 – m69

相關問題