Re: [中譯] Projecteuler (280) Ant and seeds

看板puzzle (益智遊戲 - 數獨,拼圖,推理,西洋棋)作者 (天道)時間16年前 (2010/03/01 10:10), 編輯推噓3(308)
留言11則, 3人參與, 最新討論串3/5 (看更多)
1.我先講怎麼拆成單獨的小問題,這個部分我和 LPH66 與 jurian0101 想得一樣。 這整個過程必定歷經 初始狀態 → 駝第一顆豆 → 放第一顆豆 → 駝第二顆豆 → ... → 放第五顆豆 這樣 11 階段的狀態。扣掉最後已達終點的階段,每一階段的每一種可能組合, 都是一個我們要算的 process。 (1251 是這樣算出來的) 例如某一個狀態它長這樣 (紅格是螞蟻) ‧豆‧‧ ‧‧‧‧‧ ‧‧‧‧‧ ‧‧‧‧‧ 豆‧豆‧豆 它之後可能的進程必然是 ‧豆豆‧‧ ‧豆豆‧‧ ‧豆豆‧‧ ‧‧‧‧‧ ‧‧‧‧‧ ‧‧‧‧‧ ‧‧‧‧‧ ‧‧‧‧‧ ‧‧‧‧‧ ‧‧‧‧‧ ‧‧‧‧‧ ‧‧‧‧‧ ‧豆‧豆 豆‧‧豆 豆‧豆‧ 其中一種 這相當於一個醉漢跌入洞的問題 (求跌入各洞的機率 & 步數期望值) ‧‧醉‧‧ ‧‧‧‧‧ ‧‧‧‧‧ ‧‧‧‧‧ 洞‧洞‧洞 2.每一個 Markov process 的機率與步數期望值怎麼算 以上述的醉漢跌洞問題為例,我們要先算機率。先算最左邊的洞A。 假設每一格上都有一個機率 p(x,y) 表示跌入洞A的機率, 那麼 a) 洞A上的機率是 1 b) 另外兩洞上的機率是 0 c) 其他格上的機率是相鄰格機率的算術平均 p(1,5) p(2,5) p(3,5) p(4,5) p(5,5) p(1,4) p(2,4) p(3,4) p(4,4) p(5,4) p(1,3) p(2,3) p(3,3) p(4,3) p(5,3) p(1,2) p(2,2) p(3,2) p(4,2) p(5,2) 1 p(2,1) 0 p(4,1) 0 解22元聯立方程式去算每一格的機率,再算完另外兩洞在每一格上的機率。 接下來算步數期望值。假設每一格上路入洞A的期望值是 s(x,y), 那麼 a) 洞A上的期望值是 0 b) 另外兩洞上的期望值不重要 (也無意義) c) 若其他某格的機率為 p, 期望值為 s, 相鄰格機率為 p1..pn, 期望值 s1..sn 則有 s = 1 + (p1s1 + ... + pnsn)/p*n (條件機率) 一樣解聯立,再算完其他兩個洞。 但是現在我們只要保留每一個洞的 p(3,5) 和 s(3,5) 就可以了。 有了這些數據的算法後之後就可以一步一步算那 1251 個狀態的達成機率與步數期望值 最後算那五個最終狀態的機率與期望值,加權平均即可。 好大的工程啊。 XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.167.98.148

03/01 10:16, , 1F
c) 其他格上的機率是相鄰格機率的算術平均
03/01 10:16, 1F

03/01 10:16, , 2F
↑要考慮1/2 1/3 1/4 的差異?
03/01 10:16, 2F

03/01 10:24, , 3F
還有,駝著種子的螞蟻應該是可以走到已經有種子的格
03/01 10:24, 3F

03/01 10:24, , 4F
所以其他兩洞的期望值應該也要列入聯立
03/01 10:24, 4F

03/01 10:25, , 5F
算前一步與算後一步都可以列式, 我是算後一步
03/01 10:25, 5F

03/01 10:27, , 6F
只是因為用後一步來列的話式子會比較乾淨
03/01 10:27, 6F

03/01 11:53, , 7F
就是2D醉漢沒錯,可以用解差分方程的概念處理(類似微分方程)
03/01 11:53, 7F

03/01 11:55, , 8F
我看到題目,就想要 import scipy,不過沒時間碰電腦 coding
03/01 11:55, 8F

03/01 12:02, , 9F
用手解的話,就先解方塊邊界的離散Poisson equation
03/01 12:02, 9F

03/01 12:09, , 10F
然後用這題的條件,把邊界放進去,再列式,這樣未知數較少
03/01 12:09, 10F

03/01 13:08, , 11F
喔喔! 這個專業!
03/01 13:08, 11F
文章代碼(AID): #1BYo8WAB (puzzle)
文章代碼(AID): #1BYo8WAB (puzzle)