[問題] Almost Pi, 記憶體問題

看板Python作者 (梓)時間11年前 (2014/07/12 00:57), 編輯推噓1(106)
留言7則, 2人參與, 最新討論串1/2 (看更多)
Problem: http://projecteuler.net/problem=461 Code: https://gist.github.com/anonymous/967924f40bb3345d466f 我的演算法大概是 1. 找出最大的 k, 使 f_n(k) 不超過 pi (depend on n) 2. 造 dictionary f,使 f = f_n(k)|k=0,..,l 3. 造 two sum dictionary d, 過程中如果碰到兩個的和 >= pi 就丟掉 4. lst = list(d) 抓出來 sort 5. 前半 lst 的每一個元素和pi的差做 binary search & 找 minimal value n = 200 的話沒什麼問題 但是 n = 10000 實在是太大了 會在 line 31~33 出現 MemoryError 請問要怎麼解決這種問題? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.231.60.18 ※ 文章網址: http://www.ptt.cc/bbs/Python/M.1405097833.A.8A6.html

07/12 21:51, , 1F
三種解法,越上面的越好
07/12 21:51, 1F

07/12 21:54, , 2F
1. 使用Banyan 的 SortedDict 取代內建的 dict
07/12 21:54, 2F

07/12 21:54, , 3F
2. 自己實作一個類似 dict ,其特性能夠將資料暫存到硬碟
07/12 21:54, 3F

07/12 21:56, , 4F
3. 將 dict 的資料存到 redis(其他或nosql)
07/12 21:56, 4F

07/12 21:57, , 5F
python 的內建 dict 實作方式是 hashtable,太吃記憶體。
07/12 21:57, 5F

07/12 22:18, , 6F
1.5 找其他不是使用 hashtable 來實作dict 的 library
07/12 22:18, 6F

07/13 11:05, , 7F
謝謝
07/13 11:05, 7F
文章代碼(AID): #1Jm1TfYc (Python)
討論串 (同標題文章)
文章代碼(AID): #1Jm1TfYc (Python)