Mais conteúdo relacionado Semelhante a JOIss2020 発表資料 (20) JOIss2020 発表資料16. デカルト木
配列A = {2, 4, 3, 5, 1, 8, 6, 7, 9}
{2, 4, 3, 5}, {8, 6, 7, 9}
16
①
17. デカルト木
配列A = {2, 4, 3, 5, 1, 8, 6, 7, 9}
{2, 4, 3, 5}, {8, 6, 7, 9}
17
①
↑ ↑
② ⑥
18. デカルト木
配列A = {2, 4, 3, 5, 1, 8, 6, 7, 9}
{2, 4, 3, 5}, {8, 6, 7, 9}
{4, 3, 5}, {8}, {7, 9}
18
①
② ⑥
19. デカルト木
配列A = {2, 4, 3, 5, 1, 8, 6, 7, 9}
{2, 4, 3, 5}, {8, 6, 7, 9}
{4, 3, 5}, {8}, {7, 9}
19
①
↑
② ⑥
↑ ↑
③ ⑧ ⑦
20. デカルト木
配列A = {2, 4, 3, 5, 1, 8, 6, 7, 9}
{2, 4, 3, 5}, {8, 6, 7, 9}
{4, 3, 5}, {8}, {7, 9}
{4}, {5}, {9}
20
①
② ⑥
③ ⑧ ⑦
21. デカルト木
配列A = {2, 4, 3, 5, 1, 8, 6, 7, 9}
{2, 4, 3, 5}, {8, 6, 7, 9}
{4, 3, 5}, {8}, {7, 9}
{4}, {5}, {9}
21
①
② ⑥
③ ⑧ ⑦
↑ ↑ ↑
④ ⑤ ⑨
25. RMQをLCAに帰着
A = {2, 4, 3, 5, 1, 8, 6, 7, 9}
25
x:a[s]に対応
y:a[t]に対応
z:a[lca(s,t)]に対応
x
y
z
26. RMQをLCAに帰着
A = {2, 4, 3, 5, 1, 8, 6, 7, 9}
26
x:a[s]に対応
y:a[t]に対応
z:a[lca(s,t)]に対応
x
y
z
29. 計算量
A = {2, 4, 3, 5, 1, 8, 6, 7, 9}
末尾に8を追加したい
29
単調減少
30. 計算量
A = {2, 4, 3, 5, 1, 8, 6, 7, 9}
末尾に8を追加したい
8 < 9 なのでNG
30
8
↓
❌
31. 計算量
A = {2, 4, 3, 5, 1, 8, 6, 7, 9}
末尾に8を追加したい
8 < 9 なのでNG
8 > 7 なのでOK
31
8
↓
⭕
32. 計算量
A = {2, 4, 3, 5, 1, 8, 6, 7, 9}
末尾に8を追加したい
8 < 9 なのでNG
8 > 7 なのでOK
32
⑧
⑨
40. 超過配列
E={0, 1, 2, 3, 4, 3, 4, 3, 2, 1, 2, 3, 2, 3, 4, 3, 2, 1, 0}
40
43. LCAをRMQに帰着
A={2, 4, 3, 5, 1, 8, 6, 7, 9}
E={0, 1, 2, 3, 4, 3, 4, 3, 2, 1, 2, 3, 2, 3, 4, 3, 2, 1, 0}
43
dx(x)<dy(y)
z=lca(x,y)
m=RMQ(d(x),d(y))
44. LCAをRMQに帰着
A={2, 4, 3, 5, 1, 8, 6, 7, 9}
E={0, 1, 2, 3, 4, 3, 4, 3, 2, 1, 2, 3, 2, 3, 4, 3, 2, 1, 0}
44
dx(x)<dy(y)
z=lca(x,y)
m=RMQ(d(x),d(y))
x
y
m=d(x)の時 z=x
m = 2
45. LCAをRMQに帰着
A={2, 4, 3, 5, 1, 8, 6, 7, 9}
E={0, 1, 2, 3, 4, 3, 4, 3, 2, 1, 2, 3, 2, 3, 4, 3, 2, 1, 0}
45
dx(x)<dy(y)
z=lca(x,y)
m=RMQ(d(x),d(y))
x
y
m=f(w)となるzの子ノードwが存在
m=12
z
f(x)=12
52. ±1RMQ問題
超過配列 E[0...2n] は ±1配列
E[i] = E[i-1] + 1 → B[i] = 1
E[i] = E[i-1] - 1 → B[i] = 0
とすることで長さ 2n のビット列 B[1...2n]で表現できる!
53. ±1RMQ問題
超過配列 E[0...2n] は ±1配列
E[i] = E[i-1] + 1 → B[i] = 1
E[i] = E[i-1] - 1 → B[i] = 0
とすることで長さ 2n のビット列 B[1...2n]で表現できる!
E = {0, 1, 2, 3, 4, 3, 4, 3, 2, 1, 2, 3, 2, 3, 4, 3, 2, 1, 0}
B = {1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0}
61. 計算量
サイズ n の ±1RMQ問題において、サイズ n のRMQ問題の計
算量を〈s(n),f(n),q(n)〉とすると以下のようになる
61
データ構造のサイズ n + O(n lg lg n / lg n) + s(O(n/lg n))
データ構造の構築時間 O(n / lg n) + f(O(n / lg n))
問い合わせの時間 O(1) + q(O(n/ lg n))