看板 java 關於我們 聯絡資訊
※ 引述《AmosYang (LetMeGoogleThatForYou)》之銘言: : LolAI 的設計 [略] 一開始覺得自己沒空所以沒參與,後來看大家討論到心很癢,於是就試寫了一下... 後來寫上癮了,所以多撥出一些預定外的時間來做這個,但發現還真的是沒什麼時間, 搞到現在覺得有點心神不寧,一直隱隱約約在想這個議題 = =" 雖然想說真是害人不淺,不過回到以前這種解題的感覺也滿有趣味的,很久沒這樣了 anyway, 其實我只是想說,寫完 minei 0.1.0 後,回頭來細看討論,之前都沒細看 是因為不希望影響自己的設計方法。發現 LolAI 的計算法幾乎跟我一樣 @@" 不過用的名詞不太一樣,我不知道是否應該有正確的名詞? 裡面的 clause 我是命名為 clue, 而我另外有個 clue set, 大致是表達一個 block (cell) 可以得到一個 clue set. 而 N1 則是 clue set 的 overlap (intersection), N2 N3 則是 clue set 在計算機率過程中會產生的。 看到那段 min/max 實在是很眼熟啊 XDDDD 雖然我不是很肯定兩者是不是完全一樣? (scala code) http://github.com/godfat/minei/blob/minei-0.1.0/Minei.scala#L111-117 val min: MineSize = (set.map((clue) => clue.amount - (clue.poses.size - overlap.size) ) + 0).max val max: MineSize = (set.map((clue) => clue.amount ) + overlap.size).min 很不幸的是,經過 tkcn 測試,0.1.0 輸 Tkcn4AI 很慘,沒贏過 XD 而這版的機率確實計算很不完全,沒考慮很複雜的重疊狀況, 只假設一個 clue set 裡面只會有唯一一個重疊。我自己試玩的感覺是還行, 這證明了我不太會玩這個遊戲 XD 後來想試著加大搜尋範圍,一方面是跑得變很慢,另一方面則是因為搜尋範圍 變廣了,複雜重疊的狀況也增加,導致這種簡易的機率的準確度大降, 反而會讓他變成白痴。用了一些搭乘捷運的時間,好不容易想出考慮所有重疊 狀況的組合,不知道這個週末有沒有時間實作出來... 本來上週想詳細說明計算方法的,結果一直拖到現在都還沒寫。 還是乾脆等全部想法實作完再寫? XD 目前暫定計畫是這樣... 1. 寫完說明 2. 釋出 0.1.1, 基本上演算法一樣,只是調整了內部實作,希望有跑快一點 3. 寫好調整 input 的 adapter, 還有一些利於 debug 的 methods. 4. 寫好一些比較容易實作的想法,釋出 0.2 5. 視情況調整,看有沒有放 0.2.1 的必要 6. 完成比較困難的實作,釋出 0.3 不知道 tkcn 所提到的考慮剩餘地雷有沒有辦法做進去?因為我原本的想法是 完全忽略剩餘地雷,假設我們在一個廣大的平原上,地雷總數未知。但這似乎影響 也滿大的。考慮極端情況,原本 1/2 的可能,由於剩餘地雷只有一個,當然不會 有需要兩個地雷的情況。再考慮 stimim 提到的考慮對手的盤面,這樣就真的是 minimax 的演算法了,看來這可以發展成做很久的計畫 XD 我最早的想法真的太天真了 XD 本來是想說算得差不多應該就很強了... 像是我現在跟 0.1.0 玩就沒有 100% 的勝算... == 其實我原本真的只是想講幾句話,說 minei 跟 LolAI 很像.. -- 「行け!Loki!」(rocky ロッキー) -Gurumin ぐるみん 王子? XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.160.129