作者snobbery (egoist)
看板CSSE
標題[問題] 陣列的替代品
時間Tue Mar 17 17:10:20 2009
如果我有一個n items的陣列A,
每個item都是0 ~ q之間的數值,
那可以知道要存下這個陣列要花O(n)的儲存空間,
(嚴格來說, 是log(q)*n bits)
然後每次我要查詢第i個位置的item的話, 我需要花的時間是O(1),
(反正下個A[i]的指令就馬上取到i-th item的值)
現在, 如果我想把儲存空間降到o(n),
但是也許可以允許查詢item有錯誤, 或是查詢時間可以不是constant time的話,
不知道有沒有這樣的data structure可以完成這樣的事情?
thx
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.25.90
1F:推 TroyLee:log(q) 已經是常數不是嗎? 03/17 19:59
2F:→ snobbery:但是log(q)*n仍然是O(n)啊~ 03/17 22:08
3F:推 Huangs:如果 q < n 那用 counting sort 的方式來存 03/17 22:21
4F:推 ksmrt0123:既然允許查詢item有錯誤, 那都回0吧... constant time! 03/17 23:04
5F:→ ksmrt0123:且不需什麼 data structure 03/17 23:05
6F:推 ledia:壓縮 / 解壓縮呢 ? 如果允許存一個 fix size lookup table 03/18 12:01
7F:→ ledia:那對於特徵明顯的資料應該是可以壓到小很多的 03/18 12:02
8F:→ ledia:要查時再 runtime 一個一個解出來 03/18 12:02
9F:推 macbuntu:ksmrt0123 強者 XD 03/21 11:53