Paper Reading: TurboFlux
2025๋ ์ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฉ์ ์ปจํํ์ฌ ํ๋ถ ์กธ์ ์ฐ๊ตฌ ์ฃผ์ ๋ฅผ ๋ฐ์์ ์งํํ๊ณ ์์ต๋๋ค. ์ ์ ์ฃผ์ ๋ โContinuous Subgraph Matchingโ๊ณผ ๊ด๋ จํด ์ฝ๋๋ฅผ ์ต์ ํ ํ๊ณ ๊ฐ์ ํ๋ ๊ฒ์ผ๋ก ๊ทธ๋ํ ์ฟผ๋ฆฌ ๊ด๋ จ ๋ ผ๋ฌธ์ ์ฝ๊ณ , C++ ์ฝ๋๋ฅผ ํ๋ํ๊ณ ์์ต๋๋ค. ์กธ์ ๋ง์ง๋ง ํ๊ธฐ์ ๋ฃ๋ ์์ ์ธ๋ฐ ๋ง์ ๋ ธํ์ฐ์ ๊ฒฝํ์ ์๊ณ ์กธ์ ํ๊ธฐ๋ฅผ ๊ธฐ๋ํ๊ณ ์์ต๋๋ค ใ ใ
Kyoungmin Kim, In Seo, Wook-Shin Han, Jeong-Hoon Lee, Sungpack Hong, Hassan Chafi, Hyungyu Shin, and Geonhwa Jeong. 2018. TurboFlux: A Fast Continuous Subgraph Matching System for Streaming Graph Data.
๋ค์ด๊ฐ๋ฉฐ
์กธ์ ์ฐ๊ตฌ๋ฅผ ์งํํ๋ฉด์, Symbi(2021)์์ ๊ธฐ๋๋งํผ์ ์ฑ๋ฅ ์ฐจ์ด๊ฐ ์ ๋ณด์ด๊ฒ ๋์ด์ TurboFlux(2018) ๋ ผ๋ฌธ์ ๋ํด์๋ ์คํ์ ์งํํ๊ฒ ๋์์ต๋๋ค. ๊ทธ๋์ ๋ ผ๋ฌธ์ ๋ํ ํ์ ์ด ํ์ํ๊ฒ ๋์๋๋ฐ์! ์ด ํฌ์คํธ์์ ๋ ผ๋ฌธ์ ์ดํดํ๊ธฐ ์ํ ๊ณผ์ ์ ๊ธฐ๋ก ํฉ๋๋ค.
์ฐธ๊ณ ๋ก ์ ํ๋ธ์ TurboFlux์ ์ ์๊ฐ ๋ฐํํ 10๋ถ์ง๋ฆฌ ์์๋ ์๋๋ฐ, ์ฒ์์ ์ปจ์ ์ ์ก๋๋ฐ ๋์์ด ๋์์ต๋๋ค! [Youtube]
SJ-Tree
๋ ผ๋ฌธ์ SJ-Tree(2013)์ ๋ํ ๋ด์ฉ์ด ๋์์ ๊ฐ๋จํ๊ฒ ์์ฝํฉ๋๋ค! ๋ ผ๋ฌธ์ ์ดํดํ๋๋ฐ ๊ณ์ง์ ์ ๋๋ผ์ ์ปจ์ ๋ง ์ดํดํ๊ณ ๋์ด๊ฐ์ต๋๋ค.
์ผ๋จ SJ-Tree๋ ์ฃผ์ด์ง ์ฟผ๋ฆฌ ๊ทธ๋ํ๋ฅผ ์์ ์๋ธ ๊ทธ๋ํ๋ก โ๋ถํด(decomposition)โ ํฉ๋๋ค. ๋ถํดํ ์๋ธ ์ฟผ๋ฆฌ ์ฌ์ด์๋ ๊ณตํต ๋ ธ๋๊ฐ ์์ผ๋ฉฐ, ์ดํ ์ด๊ฒ์ ๊ธฐ์ค์ผ๋ก ๊ณ์ธต ์กฐ์ธ์ ์ํ ํฉ๋๋ค.
๋ถํด๋ก ๋ง๋ค์ด์ง ์๋ธ ๊ทธ๋ํ ๋ง๋ค ๋งค์นญ ๊ฒฐ๊ณผ๋ฅผ Partial Solution์ผ๋ก ์ ์ฅํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋ฐ์ดํธ ์ฐ์ฐ $\Delta o_i$๊ฐ ์๊ธธ ๋๋ง๋ค, ์ด Partial Solution์ ์ ๋ฐ์ดํธ ํ๊ณ , ์ด๊ฒ์ ๊ณ์ธต์ ์ผ๋ก ์กฐ์ธํ์ฌ ์ต์ข ์๋ฃจ์ ์ ์ฐพ์๋ธ๋ค๊ณ ํฉ๋๋ค. ์ด๋ฐ ์ปจ์ ์์ โSJ(Subgraph Join)โ-Tree์ ์ด๋ฆ์ด ์ ๋๋ ๊ฒ ์ ๋๋ค.
๊ณ์ธต์ ์ผ๋ก ์กฐ์ธ ํ๋ ๊ณผ์ ์ ์๋์ ๊ฐ์ต๋๋ค. ์์ ์บก์ฒ์์ $g_2$ ์ํฉ์ ๊ธฐ์ค์ผ๋ก ์ค๋ช ํ๊ฒ ์ต๋๋ค.
- ๋จผ์ ๊ฐ์ฅ ๋ฆฌํ ๋
ธ๋์ธ $q_{111}$๊ณผ $q_{112}$๋ฅผ ๊ณ์ธต ์กฐ์ธ ํ์ฌ $q_{11}$๋ฅผ ๊ตฌํฉ๋๋ค.
- ๊ฐ๊ฐ์ด $q_{111} \Join q_{112} = 2 \times 100 = 200 = q_{11}$์ด ๋ฉ๋๋ค.
- ๋ง์ฐฌ๊ฐ์ง๋ก $q_{11}$๊ณผ $q_{12}$๋ฅผ ๊ณ์ธต ์กฐ์ธํ์ฌ $q_1$์ ๊ตฌํฉ๋๋ค.
- $q_{11} \Join q_{12} = 200 \times 110 = 22,000 = q_1$
- ๋ง์ง๋ง์ผ๋ก $q_1 \Join q_2$ํ์ฌ ์๋ณธ ์ฟผ๋ฆฌ $q$์ ๋ํ ๋งค์นญ์ ์ฐพ์ต๋๋ค.
- ์ด๋๋ $q_1 \times q_2 = 22,000$๊ฐ ์๋๋ผ, $q = 200$์ด ๋ฉ๋๋ค.
- ์ด์ ๋ $B - D$ ์ฐ๊ฒฐ ์ค์์ ๋ฑ ํ ๊ฒฝ์ฐ๋ง $D - E$ ์ฐ๊ฒฐ์ ๊ฐ์ง๊ธฐ ๋๋ฌธ ์ ๋๋ค.
- ๊ทธ๋์ $q_{111} \times q_{112} \times 1 \times 1 = 200$์ด ๋ฉ๋๋ค.
๊ทธ๋ฐ๋ฐ, SJ-Tree์ ๋จ์ ์ ์์ฃผ ํฐ ๊ณต๊ฐ ๋ณต์ก๋๊ฐ ํ์ํ๋ค๋ ๊ฒ ์ ๋๋ค. ์ฟผ๋ฆฌ๋ฅผ ์๋ธ ์ฟผ๋ฆฌ๋ก ๋ถํดํ๊ธฐ ๋๋ฌธ์, ์ด ์๋ธ ์ฟผ๋ฆฌ์ ๋ํ Partial Solution์ ์ ์งํ๋ ๊ฒ๋ง ํด๋ ์์ฃผ ํฐ ๊ณต๊ฐ์ด ํ์ํฉ๋๋ค. ์บก์ณ์์๋ Partial Solution์ด $1$ ๋๋ $200$์ด๋ผ๋ ์ซ์๋ก ๋์์ง๋ง, ์ค์ ๋ก๋ (ํด์) ํ ์ด๋ธ๋ก ๊ด๋ฆฌํฉ๋๋ค.
SJ-Tree์ ๊ณต๊ฐ ๋ณต์ก๋๋ ์๋์ ๊ฐ๋ค๊ณ ํฉ๋๋ค.
\[O(\vert V(q) \vert \times \vert E(g) ^ {E(q)} \vert)\]TurboFlux๋ SJ-Tree์ ๋จ์ ์ ํด๊ฒฐํ๊ณ ์ โDCG(Data Centric Graph)โ๋ผ๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์๋กญ๊ฒ ์ ์ ํฉ๋๋ค.
์ด ์๋ฃ๊ตฌ์กฐ๋ SJ-Tree ๋ณด๋ค ๋ ์์ ๊ณต๊ฐ์ผ๋ก ๋์ํ๋ฉฐ, ์กฐ์ธ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ SJ-Tree์ ๋ฌ๋ฆฌ DCG๋ฅผ ๊ทธ๋ํ ์ํํ๋ ๊ฒ์ผ๋ก CSM์ ํด๋ฅผ ์ฐพ์๋ ๋๋ค.
Introduction to Data-centric method
๊ธฐ์กด์ ์๋ธ ๊ทธ๋ํ ๋งค์นญ์ ๊ฐ ์ฟผ๋ฆฌ ๋ ธ๋๋ง๋ค ํ๋ณด ๋ฐ์ดํฐ ๋ ธ๋๋ค์ ๊ธฐ์ต ํด๋์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ, TurboFlux์์๋ ๋ฐ๋๋ก โ๊ฐ ๋ฐ์ดํฐ ๋ ธ๋๋ง๋ค ์ด๋ค ์ฟผ๋ฆฌ ๋ ธ๋๊ฐ ๋งค์นญ ๊ฐ๋ฅํ์ง๋ฅผ ์ ์ฅํด๋ณด์โ๊ณ ํฉ๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก โData-centric methodโ ์ ๋๋ค!
์ฆ, ๋ฐ์ดํฐ ๋ ธ๋๋ง๋ค ๋งค์นญํ ์ ์๋ โcandidate query verticesโ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋งคํ์ ๊ณ์ฐํ๋ ์ค๊ฐ ๊ฒฐ๊ณผ ์ญ์ โdata-centricโ ๋ฐฉ์์ผ๋ก ์ ์ฅํ๋ค๊ณ ํฉ๋๋ค.
DCG Graph Nodes
์ด์ด์ง๋ ๋ถ๋ถ๋ถํฐ ์ฟผ๋ฆฌ ๊ทธ๋ํ $q$๋ฅผ ์ฌ์ดํด์ ์ ๊ฑฐํด ์ฟผ๋ฆฌ ํธ๋ฆฌ $qโ$๋ก ๋ง๋ญ๋๋ค. ๋ง์ฝ ์ฟผ๋ฆฌ ๊ทธ๋ํ์ ์ฌ์ดํด์ด ์๋ ๊ฒฝ์ฐ๋ ๋ ผ๋ฌธ์ ํ๋ฐํ์ ๋ค๋ฃฐ๊ฑฐ๋ผ๊ณ ํฉ๋๋ค.
์์ ๊ทธ๋ฆผ์ DCG ๊ทธ๋ํ์ ์์ ์ ๋๋ค. DCG๋ ๋ฐ์ดํฐ ์ค์ฌ์ ๊ทธ๋ํ์ด๊ธฐ ๋๋ฌธ์, ๋ฐ์ดํฐ ๊ทธ๋ํ $g_0$์ ๋ ธ๋๊ฐ DCG์ ๋ชจ๋ ์กด์ฌํฉ๋๋ค.
DCG Graph Edges
๋
ผ๋ฌธ ์ ์์ ๋ฐํ ์์์์ ๊ฐ์ ธ์์ ํ์ง์ด ์ข ์ ์ข์ต๋๋ค ใ
ใ
DCG์ ๊ฐ ์ฃ์ง๋ $(v, uโ, vโ)$์ ํํ๋ก ํํ ๋๋๋ฐ, ์ด๊ฒ์ ์๋ 3๊ฐ์ง ์ํ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค.
- Explicit
- Implicit
- NULL
Explicit๊ณผ Implicit ๋๋ค $vโ$์ ๋ํ ํ๋ณด ์ฟผ๋ฆฌ ๋ ธ๋ $uโ$๊ฐ ์กด์ฌํ๋ค๋ ๊ฒ์ ๋ํ๋ ๋๋ค. ์ด๋, ํ๋ณด ์ฟผ๋ฆฌ ๋ ธ๋๊ฐ ์กด์ฌํ๋ ค๋ฉด,
- ๋ฐ์ดํฐ ๊ทธ๋ํ์ ์์ ๋ ธ๋ $v_s$์์ $v$๋ฅผ ๊ฑฐ์ณ $vโ$๊น์ง ๋๋ฌํ๋ ๊ฒฝ๋ก
- ์ฟผ๋ฆฌ ๊ทธ๋ํ์ ์์ ๋ ธ๋ $u_s$์์ $P(uโ)$๋ฅผ ๊ฑฐ์ณ $uโ$๊น์ง ๋๋ฌํ๋ ๊ฒฝ๋ก
๋ ๊ฒฝ๋ก๊ฐ ๊ฐ์ ๊ตฌ์กฐ(๋ ธ๋ ๋ ์ด๋ธ, ๊ฑฐ์ณ์จ ๋ ธ๋ ๊ฐฏ์์ ์์)๋ฅผ ๊ฐ์ง๊ณ ์์์ ์๋ฏธ ํฉ๋๋ค.
์ด๊ฒ์ ์๋์ ๊ฐ์ด ํ๊ธฐํ ์ ์์ต๋๋ค.
\[\begin{aligned} v_s &\rightarrow v.v' \\ &\equiv \\ u_s &\rightarrow P(u').u' \end{aligned}\]๊ทธ๋ฆฌ๊ณ Explicit๊ณผ Implicit์ ์ฐจ์ด๋
๋
ผ๋ฌธ ์ ์์ ๋ฐํ ์์์์ ๊ฐ์ ธ์์ ํ์ง์ด ์ข ์ ์ข์ต๋๋ค ใ
ใ
$uโ$์ ๋ชจ๋ ์๋ธ ํธ๋ฆฌ๊ฐ $vโ$์ ์๋ธ ํธ๋ฆฌ์ ๋งค์นญ ๋๋ค๋ฉด, Explicit์ด๋ผ๊ณ ๋ถ๋ฅ ํ๊ณ ,
๋
ผ๋ฌธ ์ ์์ ๋ฐํ ์์์์ ๊ฐ์ ธ์์ ํ์ง์ด ์ข ์ ์ข์ต๋๋ค ใ
ใ
$uโ$์ ์๋ธ ํธ๋ฆฌ ์ค์ $vโ$์ ์๋ธ ํธ๋ฆฌ์ ๋งค์นญ ๋์ง ์๋ ๊ฒ์ด ์๋ค๋ฉด, Implicit์ด๋ผ๊ณ ๋ถ๋ฅ ํฉ๋๋ค.
๋ ผ๋ฌธ์ ๋ค์ด์ด๊ทธ๋จ์์๋ ์ด๋ฅผ Edge ์๊น๋ก ๊ตฌ๋ถํ๋๋ฐ, Explicit์ด๋ฉด ๋ณด๋ผ์ ์ค์ , Implicit์ด๋ฉด ์ฐ๋์ ์ ์ ์ผ๋ก ๊ทธ๋ ค์ง๋๋ค.
์ฐธ๊ณ ๋ก NULL ์ฃ์ง๋ ๊ฐ์์ ์ํ์ ๋๋ค. ์ด๊ฒ์ ๋ฐ์ดํฐ ๋ ธ๋์ ๋งค์นญ ๋๋ ์ฟผ๋ฆฌ ๋ ธ๋๊ฐ ์ ํ ์๊ฑฐ๋ ์์ง ๋งค์นญ ๋๋ ์ฟผ๋ฆฌ ๋ ธ๋๋ฅผ ์ฐพ์ง ๋ชป ํ์์ ํํํฉ๋๋ค.
Example
๋ค์ ์บก์ฒ๋ฅผ ๊ฐ์ ธ์์ DCG ๊ตฌ์กฐ๋ฅผ ์ดํดํด๋ด ์๋ค.
๋จผ์ Explicit ์ฃ์ง๋ถํฐ ์ดํด๋ด ์๋ค. $u_0 \rightarrow u_1.u_2$ ๊ฒฝ๋ก๋ $v_0 \rightarrow v_2.v_4$ ๊ฒฝ๋ก์ ๋งค์นญ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ $u_2$์ $v_4$ ๋๋ค ์๋ธ ํธ๋ฆฌ๊ฐ ์๋ ๋ฆฌํ ๋ ธ๋ ์ ๋๋ค. ๋ฐ๋ผ์, $(v_2, u_2, v_4)$๋ DCG์์ Explicit ์ฃ์ง๊ฐ ๋ฉ๋๋ค.
Implicit ์ฃ์ง๋ ์ดํด๋ด ์๋ค. $u_0 \rightarrow u_1.u_3$ ๊ฒฝ๋ก์ $v_0 \rightarrow v_2.v_{104}$ ๊ฒฝ๋ก์ ๋งค์นญ ๋ฉ๋๋ค. ๊ทธ๋ฌ๋, $u_3$์๋ ์๋ธ ํธ๋ฆฌ $(u_3, u_4)$๊ฐ ์๊ณ , $v_{104}$์๋ ์๋ธ ํธ๋ฆฌ๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์, $(v_2, u_3, v_{104})$๋ DCG์์ Implicit ์ฃ์ง๊ฐ ๋ฉ๋๋ค. ์ด๋ $v_{104}$๊ฐ $u_3$์ ๋ถ๋ถ์ ์ผ๋ก๋ง ๋งค์นญ ๋๋ฉฐ, ์ถ๊ฐ ๊ฒ์ฆ์ด ํ์ํจ์ ์๋ฏธ ํฉ๋๋ค.
์์ ๊ทธ๋ฆผ์ ๋งค์นญ์ด ์กด์ฌํ๋ ์ํฉ ์ ๋๋ค. ๋ฐ์ดํฐ ๋ ธ๋์ ๋ฃจํธ ๋ ธ๋์ธ $v_s$์ ๋งค์นญ๋ $u_0$ ์ฃ์ง๊ฐ โExplicitโ์ด ๋๋ฉด โPositive ๋งค์นญโ์ด ๋ฐ์ํฉ๋๋ค!
DCG์์ ์ฃ์ง๋ $(v, uโ, vโ)$ ํํ๋ก ํํ ๋ฉ๋๋ค. ๊ทธ๋ฐ๋ฐ, ๋ฐ์ดํฐ ๋ ธ๋์ $v_s$๊ฐ ์ฟผ๋ฆฌ ๋ ธ๋์ $u_s$์ ๋งค์นญ ๋ ๋๋ ๊ฐ์์ ๋ฐ์ดํฐ ๋ ธ๋ $v_s^\ast$๊ฐ ์ฌ์ฉ ๋ฉ๋๋ค. ๊ทธ๋์ ์์ ๋ ธ๋์ ๋ํ ๋งค์นญ์ $(v_s^\ast, u_s, v_s)$๋ก ํํ ํฉ๋๋ค. ํ์ง๋ง, $v_s^\ast$๋ ๊ฐ์์ ๋ ธ๋์ด๊ธฐ ๋๋ฌธ์ DCG ๊ทธ๋ํ์ ํด๋น ๋ ธ๋๋ฅผ ์ ์ฅํ๊ฑฐ๋ ์๊ฐํ ํ์ง๋ ์์ต๋๋ค.
Compare with SJ-Tree
๋ ผ๋ฌธ์ ์ด๋ฐ์ DCG๋ SJ-Tree ๋ณด๋ค ๋ ์ข์ ๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค๊ณ ํ์์ต๋๋ค. ์ค์ ๋ก ๋ ผ๋ฌธ์ Fig 2๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ ์๋ฃ๊ตฌ์กฐ๊ฐ ์ ์ฅํ๋ ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํด๋ณด๋ฉด,
- DCG of $g_0$
- 213๊ฐ์ ์ฃ์ง๋ฅผ ์ ์ฅ
- SJ-Tree of $g_0$
- 11,311๊ฐ์ ๋ถ๋ถ ์๋ฃจ์ ์ ์ ์ฅ
์ด๊ฒ์ DCG๊ฐ SJ-Tree๋ณด๋ค ํจ์ ์ ์ ๊ณต๊ฐ์ ์ฌ์ฉํ๋ฉด์๋ ๋งค์นญ ์ ๋ณด๋ฅผ ์ ์งํ ์ ์์์ ๋ท๋ฐ์นจ ํฉ๋๋ค.
Compare with Query-centric
๊ธฐ์กด์ ์ฟผ๋ฆฌ ์ค์ฌ ์๋ฃ๊ตฌ์กฐ(QCG)์์๋ ๊ฐ ์ฟผ๋ฆฌ ๋ ธ๋ $u$์ ๋ํด ๋งค์นญ ๋๋ ํ๋ณด ๋ฐ์ดํฐ ๋ ธ๋ $v$์ ์งํฉ์ ๊ด๋ฆฌํด์ผ ํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ณผ์ ์ ์งํํ๋ค๋ณด๋ฉด, ํ ๋ฐ์ดํฐ ๋ ธ๋๊ฐ ์ฌ๋ฌ ์ฟผ๋ฆฌ ๋ ธ๋์ ๋งค์นญ ํ๋ณด๋ก ๋ค์ด๊ฐ๋ ๊ฒฝ์ฐ๊ฐ ์ข ์ข ์์์ต๋๋ค. ์ด ๊ฒฝ์ฐ, ํด๋น ๋ฐ์ดํฐ ๋ ธ๋ $v$์ ์ ๋ฐ์ดํธ๊ฐ ๋ฐ์ํ ๋๋ง๋ค, ๊ทธ๊ฑธ ํ๋ณด ๋ ธ๋๋ก ๊ฐ๋ ๋ชจ๋ ์ฟผ๋ฆฌ ๋ ธ๋ $u$๋ฅผ ์ฐพ์์ผ ํ์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด, โDuplicate Key Indexโ๋ผ๋ ์ถ๊ฐ์ ์ธ ์ธ๋ฑ์ค ์๋ฃ๊ตฌ์กฐ๊ฐ ํ์ ํ์ต๋๋ค.
DCG ๋ฐฉ์์์๋ ์ด๋ฐ ์ธ๋ฑ์ค๊ฐ ํ์ ์์ต๋๋ค! DCG ์์ฒด๊ฐ ๊ทธ๋ํ์ด๊ณ , ๋ฐ์ดํฐ ๋ ธ๋ $v$๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ฑ๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ ๋ ธ๋ $v$์ ์ ๋ฐ์ดํธ๊ฐ ๋ฐ์ํ๋ฉด, ๊ทธ๊ฒ์ ์ธ์ ๋ฐ์ดํฐ ๋ ธ๋์ ๋ํด์๋ง ์ ๊ทผํ๊ณ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ ๋ฐ์ดํธ ํ๋ฉด ๋ฉ๋๋ค. QCG์์๋ ์๋ก ๋ค๋ฅธ ์บ์ ๋ผ์ธ(๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ)์ ์ ์ฅ๋ ์ฟผ๋ฆฌ์ ํ๋ณด ๋ฆฌ์คํธ์ ์ ๊ทผํด์ผ ํ๋ ๊ฒ๊ณผ๋ ๋น๊ต ๋๋ ์ฅ์ ์ ๋๋ค.
์ธ๋ฒ์งธ ์ฅ์ ์ผ๋ก๋ ์ฝ๋ ์ธก๋ฉด์์๋ ์ค์ฉ์ ์ธ ์ฅ์ ์ด ์๋ค๊ณ ํ๋๋ฐ์. ์๊ฑด TurboFlux์ ์ฝ๋์ ๊ธฐ์กด ์ฝ๋๋ค์ ์์ธํ ์๊ณ ์์ด์ผ ์๋ฟ๋ ๊ฒ ๊ฐ์ต๋๋ค ใ ใ ใ
Compare with TurboIso
โTurboIso(2013)โ๋ ์๋ธ ๊ทธ๋ํ ๋งค์นญ ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด ๊ณ ์๋ ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋์ ๋๋ค. ๋ณธ ํฌ์คํธ์์ ์ดํด๋ณด๊ณ ์๋ โTurboFlux(2018)โ์ ์ ์์ ์ ํ ์ฐ๊ตฌ ์ ๋๋ค!
TurboIso๋ โCandidate Subregionโ์ ์ ์ํ๊ณ ์ด๊ฒ์ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๊ด๋ฆฌํฉ๋๋ค. ์ด Candidate Subregion์ (1) ๋๋ฌ ๊ฒฝ๋ก์ (2) ์๋ธ ํธ๋ฆฌ๊ฐ ๋ชจ๋ ๋งค์นญ ๋๋ ๊ฒ๋ค๋ง ๋ชจ์์ต๋๋ค. ๊ทธ๋์ โ์์ ํด(complete solution)โ์ ๋๋ค.
TurboFlux๋ ์ด๊ฒ์ โExplicit ์ฃ์งโ๋ผ๋ ๊ฐ๋ ์ผ๋ก ์ ์ฅํฉ๋๋ค! ๊ทธ๋ฐ๋ฐ, TurboFlux๋ โImplicit ์ฃ์งโ๋ผ๋ ๋ถ๋ถํด(partial solution)์ ์ ์ฅํฉ๋๋ค. ์ด ๋ถ๋ถํด๋ค์ (1) ๋๋ฌ ๊ฒฝ๋ก ์กฐ๊ฑด์ ๋ง์กฑํ์ง๋ง, (2) ์๋ธ ํธ๋ฆฌ ๋งค์นญ์ ๋ง์กฑํ์ง ๋ชป ํฉ๋๋ค. ์ด๋ค์ ์ ์ ํ Update Stream $\Delta o_i$์ด ๋ฐ์ํ๋ฉด, โImplicitโ์์ โExplicitโ์ผ๋ก ๋ณํํ ๊ฐ๋ฅ์ฑ์ด ์กด์ฌํ๋ ํ๋ณด ๋งค์นญ ์ ๋๋ค.
ย | TurboIso | TurboFlux |
---|---|---|
Complete Solution | Candidate Subregion | Explicit Edge |
Partial Solution | - | Implicit Edge |
DCG Edge Transition Model
TurboFlux๋ DCG ์๋ฃ๊ตฌ์กฐ๋ฅผ ํตํด ์ค๊ฐ ๊ฒฐ๊ณผ(intermediate result)๋ฅผ ์ ์ฅํฉ๋๋ค. ์ด๊ฒ์ โEdge Transition Modelโ๋ผ๋ ๋งค์ปค๋์ฆ์ ์ํด ๋์ํ๋๋ฐ์. ๋ฐ์ดํฐ ๊ทธ๋ํ์์ ์ฃ์ง ์ถ๊ฐ/์ญ์ ๊ฐ ๋ฐ์ ํ์ ๋, ์ด๊ฒ์ด Positive/Negative Match์ ๊ธฐ์ฌํ๋์ง๋ฅผ ํจ์จ์ ์ผ๋ก ํ๋จํฉ๋๋ค.
์ฃ์ง ์ ๋ฐ์ดํธ๊ฐ ๋ฐ์ํ ๋๋ง๋ค, ์ ์ฒด ์๋ธ ๊ทธ๋ํ๋ฅผ ์ ํ์ ํ๋ ๊ฒ์ ๋นํจ์จ์ ์ ๋๋ค. ๊ทธ๋์ ์ด๋ฏธ ๊ตฌ์ถ๋ DCG๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ๋ฐ์ดํธ๋ฅผ ์ํํด์ผ ํ๋๋ฐ, ์ด๊ฒ์ ๋ํ ๋์ ๊ท์น์ ์ ์ ๊ฒ์ด โEdge Transition Modelโ ์ ๋๋ค.
๋ ผ๋ฌธ์ 5๊ฐ์ง์ ์ ์ด ๊ท์น์ ์ ์ํ๊ณ ์ด๊ฒ์ ์ฃ์ง ์ ๋ฐ์ดํธ๊ฐ ์ผ์ด๋ ๋๋ง๋ค ํธ์ถํฉ๋๋ค.
Transition 0: NULL -> NULL
์ฃ์ง ์
๋ฐ์ดํธ๊ฐ ๋ฐ์ ํ์ง๋ง, ์ฃ์ง์ ์ํ๊ฐ ๋ณ๊ฒฝ๋์ง ์๊ณ , ๊ทธ๋๋ก NULL
์ธ ๊ฒฝ์ฐ ์
๋๋ค. ์ฆ, ์๋ฌด๊ฒ๋ ์ผ์ด๋์ง ์๋ ์ํฉ ์
๋๋ค.
[Case 1]
๋ฐ์ดํฐ ๊ทธ๋ํ์ ๋ฐ์ดํฐ ์ฃ์ง $(v, vโ)$๊ฐ ์ฝ์ /์ญ์ ๋์์ง๋ง, ์ด ์ฃ์ง๊ฐ ์ฟผ๋ฆฌ ๊ทธ๋ํ์ ์ด๋ค ์ฃ์ง $(u, uโ)$์๋ ๋งค์นญ๋์ง ์์์ต๋๋ค.
[Case 2]
๋ฐ์ดํฐ ์ฃ์ง๊ฐ $(v, vโ)$๊ฐ ์ฟผ๋ฆฌ ์ฃ์ง $(u, uโ)$์ ๋งค์นญ ๋ฉ๋๋ค.
DCG์์ $(v, uโ, vโ)$์ธ ์ฃ์ง๊ฐ ์กด์ฌํ์ง ์๊ณ , ๋ถ๋ชจ ๋ ธ๋์ ๋ํด์๋ $u$์ $v$ ๋ ธ๋๊ฐ ์๋ก ๋งค์นญ ๋์ง ์์ต๋๋ค.
์ด ๊ฒฝ์ฐ๋ ๋ถ๋ชจ ๋
ธ๋๋ผ๋ฆฌ ๋งค์นญ ๋์ง ์๋ ์ํฉ์ด๋ฏ๋ก, ์์ ๋
ธ๋ ์ฌ์ด์ ์
๋ฐ์ดํธ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์, NULL
์ํ๋ก ์ ์ง ๋ฉ๋๋ค.
์ด๋, NULL
์ํ๋ ์ด๋์๋ ์ ์ฅ๋์ง ์๋ ๊ฐ์์ ์ํ์์ ์ ์ํฉ๋๋ค.
Note that
NULL
edges are hypothetical edges in order to explain the edge transition โฆ Thus, we do not store edges whose states areNULL
in the DCG.โ
๊ทธ๋์ NULL -> NULL
์ ์ด๋ ์ด๋ค ์ํ๋ฅผ ๋ฐ๊พธ๋ ๊ฒ์ด ์๋๋ผ, ๋ค์ด์จ ์ฃ์ง ์
๋ฐ์ดํธ๋ฅผ โ๋ฌด์ ํด๋ ๋๋คโ๋ผ๋ ์กฐ๊ฑด์ ์ฒดํฌํ๋ ๊ฒ ์
๋๋ค.
Transition 1: NULL -> Implicit
[Case 1]
์๋ก์ด ์ฃ์ง $(v, vโ)$๊ฐ ์ถ๊ฐ ๋์์ ๋, ์ด ์ฃ์ง์ ๋งค์นญ๋๋ ์ฟผ๋ฆฌ ์ฃ์ง $(u, uโ)$๊ฐ ์กด์ฌํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ , DCG์์ ๋ถ๋ชจ ๋ ธ๋ $v$๊ฐ $u$ ๋ ธ๋์ ๋งค์นญ์ ๊ฐ๊ณ ์๋ค๋ฉด, ์ด๋ฅผ ๋ฐํ์ผ๋ก $(v, uโ, vโ)$๋ผ๋ ์๋ก์ด ์ฃ์ง๋ฅผ Implicit ์ํ๋ก ์ ์ด ํฉ๋๋ค.
๋ค์ ๋์ค๊ฒ ์ง๋ง, ์ด๊ฒ์ Implicit ์ฃ์ง๋ฅผ ์ ์ฅํ๋ bitmap์ ํด๋น ์์น๋ฅผ false -> true
๋ก ์ ํํ๋ ๊ฒ์ ๋งํฉ๋๋ค.
[Case 2]
DCG์ ์ฃ์ง $(v, uโ, vโ)$๊ฐ Implicit์ผ๋ก ์ ์ด ๋์์ ๋, ๊ทธ์ ๋ฐ๋ผ $vโ$์ ์ด์๊ณผ $uโ$์ ์์๋ค ์ฌ์ด์๋ ์๋ก์ด ๋งค์นญ ์๊ธธ ์ ์์ต๋๋ค. ๊ทธ๋์ ์ด ์ ์ด ๊ณผ์ ์ ์ด์ ๋ ธ๋์๋ ์ ํํฉ๋๋ค.
DCG์ ๋ถ๋ชจ ์ฃ์ง๊ฐ โImplicitโ์ผ๋ก ์ ์ด ๋์๋ค๋ฉด, ์์ ๋ ธ๋ $vโ$์ ์์ ๋ ธ๋(์์ ๋ ธ๋) $vโโ$์ ์ฟผ๋ฆฌ ์ฃ์ง์์์ ์์ ๋ ธ๋ $uโโ$ ์ฌ์ด์ ๋งค์นญ์ด ์กด์ฌํ๋์ง ํ์ธํฉ๋๋ค. ๋ง์ฝ ๋งค์นญ์ด ์กด์ฌํ๋ค๋ฉด, DCG ์ฃ์ง์์ $(vโ, uโโ, vโโ)$ ์ํ๋ฅผ Implicit์ผ๋ก ์ ์ด ํฉ๋๋ค.
๋
ผ๋ฌธ์ Fig 4. ๋ค์ด์ด๊ทธ๋จ์์ NULL -> Implicit
์ ์์๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ์ฃ์ง ์
๋ฐ์ดํธ $\Delta o_1$์ด ๋ฐ์ํ๋ฉด์, $(v_0, u_1, v_1)$ ์ฃ์ง๊ฐ NULL -> Implicit
๋ก ์ ์ดํฉ๋๋ค(Fig4-(d)).
๊ทธ๋ฆฌ๊ณ , ์ด ์ ์ด์ ์ํด $(v_1, u_4, v_4)$ ์ฃ์ง๋ NULL -> Implicit
์ผ๋ก ์ ์ด ํฉ๋๋ค. DCG์์ $v_4$ ๋
ธ๋๋ $u_2$์ $u_4$, 2๊ฐ ์ฟผ๋ฆฌ ๋
ธ๋์ ๋ํด Implicit ๋งค์นญ์ด ์กด์ฌํ๊ฒ ๋ฉ๋๋ค.
Transition 2: Implicit -> Explicit
์ด ์ ์ด๋ ๋ถ๋ถํด(Implicit)์ด ์์ ํด(Explicit)์ผ๋ก ํ์ ๋๋ ๊ท์น์ ๋ค๋ฃน๋๋ค!
[Case 1-1]
DCG ์ฃ์ง $(v, uโ, vโ)$๊ฐ NULL -> Implicit
๋ก ์ ์ด ํ์ ๋,
์ฟผ๋ฆฌ ๋
ธ๋ $uโ$๊ฐ ์์์ด ์๋, ๋ฆฌํ ๋
ธ๋๋ผ๋ฉด ํด๋น DCG ์ฃ์ง๋ฅผ โExplicitโ์ผ๋ก ์ ์ด ํ๋ค.
[Case 1-2]
DCG ์ฃ์ง $(v, uโ, vโ)$๊ฐ NULL -> Implicit
๋ก ์ ์ด ํ์ ๋,
DCG์์ $vโ$๊ฐ Explicit ์ฃ์ง๋ฅผ ๊ฐ์ง๋๋ฐ, ๊ทธ๋ค์ ์ฟผ๋ฆฌ ๋
ธ๋ ๋ ์ด๋ธ $uโโ$๊ฐ ๋ชจ๋ $uโ$์ ์์ ๋
ธ๋๋ค์ ๊ฒ์ด ๋ชจ๋ ์กด์ฌํ๋ค๋ฉด, ๋ถ๋ชจ ์ฃ์ง์ธ $(v, uโ, vโ)$์ ์ํ๋ฅผ โExplicitโ์ผ๋ก ์ ์ด ํ๋ค.
[Case 2]
DCG ์ฃ์ง $(v, uโ, vโ)$๊ฐ Implicit -> Explicit
์ผ๋ก ์ ์ด ๋์์ ๋,
๊ทธ๊ฒ์ ๋ถ๋ชจ ๋
ธ๋ $v$๊ฐ ์์๋ค์ ๋ํ ์๋ธ ํธ๋ฆฌ ๋งค์นญ์ ์ ๋ถ ๋ง์กฑํ๊ฒ ๋ ์ ์์ต๋๋ค! ๊ทธ๋ฌ๋ฉด, $v$๋ก ๋ค์ด์ค๋ Implicit ์ฃ์ง๋ค๋ ๋ชจ๋ Explicit์ผ๋ก ์ ์ดํ ์ ์์ต๋๋ค!
์ด ๊ฒฝ์ฐ๋, ์ ์ด์ ์ ํ๊ฐ ์ญ๋ฐฉํฅ(์์ -> ๋ถ๋ชจ) ๋ฐฉํฅ์ผ๋ก ์ผ์ด๋ฉ๋๋ค! NULL -> Implicit
์์๋ ์ ์ด์ ์ ํ๊ฐ ์๋ฐฉํฅ(์์ -> ๋ถ๋ชจ) ๋ฐฉํฅ์ผ๋ก ์ผ์ด๋ฌ๋ ๊ฒ๊ณผ ๋น๊ต ๋ฉ๋๋ค.
Transition 3,4,5 (Edge Deletion)
๋๋จธ์ง ์ ์ด ๊ท์น์ ์ฃ์ง ์ญ์ ์ ๋ํ ๊ฒฝ์ฐ ์ ๋๋ค.
[Explicit -> NULL
]
๋ฐ์ดํฐ ๊ทธ๋ํ์์ ์ฃ์ง $(v, vโ)$๊ฐ ์ญ์ ๋์์ต๋๋ค. ์ด ์ฃ์ง๊ฐ ์ฟผ๋ฆฌ ์ฃ์ง $(u, uโ)$์ ๋งค์นญ ๋์๊ณ , DCG์์ $(v, uโ, vโ)$ ์ฃ์ง๊ฐ Explicit ์ํ์๋ค๋ฉด, ์ด ์ฃ์ง๋ ๋์ด์ ์ ํจํ์ง ์์ผ๋ฏ๋ก, Explicit -> NULL
๋ก ์ ์ด ๋ฉ๋๋ค.
DCG์์ $(v, uโ, vโ)$ ์ฃ์ง๊ฐ NULL
๋ก ์ ์ด ๋๋ฉด์, $vโ$์ ์์ ๋
ธ๋๋ค๊ณผ ๋ถ๋ชจ ๋
ธ๋๋ค์ ๋ํ ํธ๋ค๋ง์ด ํ์ํฉ๋๋ค.
[Explicit/Implicit -> NULL
]
๋ถ๋ชจ ๋
ธ๋๊ฐ $vโ$์ธ DCG ์ฃ์ง $(vโ, uโโ, vโโ)$ ์ค์์ ์๋ ๋งค์นญ์ ๋งบ์๋ ์ฟผ๋ฆฌ ๋
ธ๋ $uโ$์ ์ฐ๊ฒฐ๋์๋ ์ฟผ๋ฆฌ ๋
ธ๋ $(uโ, uโโ)$์ ๋งค์นญ์ด ์์๋ค๋ฉด,
์ด๊ฒ์ Explicit/Implicit -> NULL
๋ก ์ ์ด ํฉ๋๋ค. (๊ฒฝ๋ก๊ฐ ๋์ด์ง๊ธฐ ๋๋ฌธ์, ์์ ํ NULL
๋ก ์ ์ด ํฉ๋๋ค.)
[Explicit -> Implicit
]
$vโ$๋ฅผ ์์ ๋ ธ๋๋ก ๊ฐ๋ DCG ์ฃ์ง $(v, u, vโ)$ ์ค์์ ํด๋น ์ฃ์ง๊ฐ โExplicitโ ์ํ ์๋ค๋ฉด, ์ด ์ฃ์ง์ ์ํ๊ฐ โImplicitโ์ผ๋ก ์ ์ด ํฉ๋๋ค. ์๋ธ ํธ๋ฆฌ ๋งค์นญ์ด ๊นจ์ง๊ธฐ ๋๋ฌธ์ ๋๋ค!
[Implicit -> Implicit
]
$vโ$๋ฅผ ์์ ๋ ธ๋๋ก ๊ฐ๋ DCG ์ฃ์ง $(v, u, vโ)$ ์ค์์ ํด๋น ์ฃ์ง๊ฐ โImplicitโ ์ํ ์๋ค๋ฉด, ์ด ์ฃ์ง์ ์ํ๋โฆ ๊ทธ๋๋ก โImplicitโ๋ก ๋จ์์์ต๋๋ค! ์ ์ด์ ์๋ธ ํธ๋ฆฌ ๋งค์นญ์ด ์ฑ๋ฆฝํ์ง ์์๊ธฐ ๋๋ฌธ์ ๋๋ค.
Edge Logic EL()
EL()
ํจ์๋ ์ฃ์ง ์
๋ฐ์ดํธ๊ฐ ๋ฐ์ํ ๋๋ง๋ค ํธ์ถ๋๋ ํจ์๋ก, ๋ฐ์ดํฐ ๊ทธ๋ํ $g$, ๊ทธ๋ํ ์
๋ฐ์ดํธ $\Delta g$, DCG $g_{DCG}$ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ์ฃ์ง์ ์ํ ์ ์ด๋ฅผ ์ํํ๋ ํจ์ ์
๋๋ค.
์ด ๊ณผ์ ์ ์ด๋์ ์ํ ์ ์ด๊ฐ ๋ฐ์ํ์ง ์์ ๋๊น์ง ๋ฐ๋ณต ๋ฉ๋๋ค.
์ ์ด ๋ชจ๋ธ์ ๋จ์ํ ๊ตฌํ์ ์ค์ ํ๊ฒฝ์์ ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ์์๋ค๊ณ ํฉ๋๋ค. ๊ทธ๋์ ์ค์ ๊ตฌํ์์๋ ํจ์จ์ ์ธ ๋์์ ์ํด ์ฌ๋ฌ ํ ํฌ๋๋ค์ ์ ์ฉ ํ๋ค๊ณ ํฉ๋๋ค.
TurboFlux Algorithm
์ด ๋ฌธ๋จ์์๋ TurboFlux์ ์ ์ฒด ๊ณผ์ ์ ๋จ๋ฝ ๋ณ๋ก ์ดํด๋ด ๋๋ค.
Choose Start Q Vertex
TurboFlux๋ ๋งค์นญ์ ๊ฐ์ฅ โํจ์จ์ ์ผ๋ก ์์ํ ์ ์๋โ ์ ์ $u_s$๋ฅผ ๊ณ ๋ฅด๊ธฐ ์ํด, ์ ํ๋(selectivity)๋ฅผ ์ ์ํ๊ณ , ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋จ ํฉ๋๋ค.
1. ๊ฐ์ฅ ์ข์ ์ฟผ๋ฆฌ ์ฃ์ง๋ฅผ ํ์
์ฟผ๋ฆฌ ๊ทธ๋ํ์ ์ฃ์ง $(u, uโ)$ ์ค์์ ๋ฐ์ดํฐ ๊ทธ๋ํ์ ๋งค์นญ ๋๋ ์ฃ์ง๊ฐ ๊ฐ์ฅ ์ ์ ๊ฒ์ ์ฐพ์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ ์ด์ ๋ ์ข๊ทผ ์กฐ๊ฑด์์ ์์ํด์ผ ํ์์ ๊ฐ์ง์๊ฐ ์ค์ด๋ค๊ธฐ ๋๋ฌธ์ ๋๋ค.
2. ๊ฐ์ฅ ์ข์ ์ฃ์ง์์ ์ฟผ๋ฆฌ ๋ ธ๋๋ฅผ ์ ํ
์ฃ์ง $(u, uโ)$๋ฅผ ์ด๋ฃจ๋ ๋ ๋ ธ๋ ์ค์ ํ๋๋ฅผ ์ ํํด $u_s$๋ฅผ ์ ํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ ๋ ๋ ธ๋ ์ค, ๋ฐ์ดํฐ ๊ทธ๋ํ์์ ๋งค์นญ ๊ฐ๋ฅํ ์ ์ ์ด ๋ ์ ์ ๊ฒ์ ์ ํ ํฉ๋๋ค.
3. ๋ง์ฝ ๋๋ฅ ์ด๋ผ๋ฉด, ์ฐจ์๊ฐ ๋ ๋์ ์ ์ ์ ๊ณ ๋ฅธ๋ค.
๋ง์ฝ $u$์ $uโ$์ ๋งค์นญ ๋๋ ์ ์ ์๊ฐ ๋๋ฅ ์ด๋ผ๋ฉด, ์ฐจ์(degree)๊ฐ ๋ ๋์ ์ ์ ์ ๊ณ ๋ฆ ๋๋ค.
Transform to tree
์ฟผ๋ฆฌ ๊ทธ๋ํ $q$๋ฅผ ์ฟผ๋ฆฌ ํธ๋ฆฌ $qโ$๋ก ๋ณํ ํฉ๋๋ค.
์ฒ์์ ์์์ ์ ํํ ์์ ์ ์ $u_s$ ํ๋์ผ๋ก ํธ๋ฆฌ๋ฅผ ์์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋ฒ์ ํ๋์ ์ฃ์ง๋ฅผ ์ถ๊ฐํ๋ฉด์ ํธ๋ฆฌ๋ฅผ ํ์ฅ ํฉ๋๋ค.
์ด๋, ์ฃ์ง๋ ํ์ฌ ํธ๋ฆฌ์ ํฌํจ๋ ์ฟผ๋ฆฌ ์ ์ ๊ณผ ์ฐ๊ฒฐ๋ ์ฃ์ง ์ค์์, โ์ ํ๋๊ฐ ๋์ ์ฃ์งโ๋ถํฐ ํธ๋ฆฌ์ ํฌํจ์ํต๋๋ค.
์ด๋ ๊ฒ ๊ทธ๋ํ๋ฅผ ํธ๋ฆฌ๋ก ๋ณํํ๊ฒ ๋๋ฉด, ๋์ค์ ํธ๋ฆฌ์ ํฌํจ๋์ง ๋ชปํ โnon-tree edgeโ๊ฐ ๋จ๊ฒ ๋ฉ๋๋ค. ์ด๋ค์ ๋ฐ๋ก ์ ์ฅํด๋์ด ๋ง์ง๋ง์ ๋งค์นญ ์ฌ๋ถ๋ฅผ ํ์ธํ ๋, ์ถ๊ฐ ์กฐ๊ฑด์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
Initialize DCG
DCG๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํด ์์ ์ฟผ๋ฆฌ ๋ ธ๋ $u_s$์ ๋งค์นญ ๋๋ ๋ฐ์ดํฐ ๋ ธ๋ ์ชฝ $v_s$๋ฅผ ์ฐพ์์ผ ํฉ๋๋ค. ์ด๊ฒ์ $L(u_s) = L(v_s)$๊ฐ ๋๋ ๋ฐ์ดํฐ ๋ ธ๋๋ฅผ ์ฐพ์ผ๋ฉด ๋ฉ๋๋ค.
์ด๋ฐ ์์ ๋ฐ์ดํฐ ๋
ธ๋๋ฅผ ์ฐพ์ผ๋ฉด, ์ด๋ค์ ๋์์ผ๋ก BuildDCG()
ํจ์๋ฅผ ํธ๋ฆฌ๊ฑฐ ํฉ๋๋ค.
๋ ผ๋ฌธ์ ์๊ณ ๋ฆฌ์ฆ์์๋ ๊ฐ $v_s$๋ง๋ค DCG๊ฐ ๊ตฌ์ถ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง, ์ค์ ๋ก๋ ํ๋์ DCG๋ง ์กด์ฌํ๊ณ , ๊ณตํต ๋ ธ๋๊ฐ ์๋ค๋ฉด ์ด๋ค์ ๊ทธ DCG ์์์ ์ฐ๊ฒฐ ๋์ด ์์ต๋๋ค!
Determine Matching Order
DCG๊ฐ ์์ฑ๋ ํ์, ์ด๋ค ์์๋ก ์ฟผ๋ฆฌ ์ ์ ์ ์ฒ๋ฆฌํด์ผ ๋งค์นญ์ ๊ณ์ฐํ๋๊ฒ ๊ฐ์ฅ ํจ์จ์ ์ธ์ง ๊ฒฐ์ ํด์ผ ํฉ๋๋ค.
์ด ๋งค์นญ ์ค๋๋ ์ ๋ง ์ค์ํ๋ฐ, ๋งค์นญ ์์์ ๋ฐ๋ผ์ ์ค๊ฐ ๊ฒฐ๊ณผ์ ์๊ฐ ํญ๋ฐํ ์๋ ์๊ณ , ์ค๊ฐ ๊ฒฐ๊ณผ๊ฐ ์ค์ด๋ค์ด์ ์๊ณ ๋ฆฌ์ฆ์ด ๋ ํจ์จ์ ์ผ๋ก ๋์ํ ์๋ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด์ ๋ช๊ฐ์ง notation์ด ๋ฑ์ฅํ๋๋ฐ, ๋งค์นญ ์ค๋
\[mo = <u_{o_1}, u_{o_2}, \dots, u_{o_n}>\]์ ๋ํด์, $T_i$๋ ๊ทธ ์์๊น์ง์ ์ฟผ๋ฆฌ ๋ ธ๋๋ค๋ ๋ง๋ โ์๋ธ (์ฟผ๋ฆฌ) ํธ๋ฆฌโ ์ ๋๋ค.
\[T_i \subseteq q'\]๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ๋ฐํ์ผ๋ก ๋งค์นญ ๋น์ฉ์ ๊ณ์ฐํฉ๋๋ค. ๋งค์นญ ๋น์ฉ์ ๊ฐ ๋จ๊ณ $T_i$์์์ ๋งค์นญ ๋น์ฉ $c(T_i)$๋ฅผ ๋ชจ๋ ๋ํ ๊ฐ์ผ๋ก ๊ณ์ฐํฉ๋๋ค.
\[\text{Total Matching Cost} = \sum_i c(T_i)\]๋จ๊ณ๋ณ ๋งค์นญ ๋น์ฉ $c(T_i)$๋ ์ฒ์ ์์ฑํ DCG ๊ทธ๋ํ๋ฅผ ํ์ฉํด ๊ณ์ฐ ํฉ๋๋ค. (์ง๊ธ์ ์ ์ฒด์ ์ธ ๊ณผ์ ์ ํ์ด๋ณด๊ณ ์์ด์, ๊ตฌ์ฒด์ ์ธ ๋ฐฉ๋ฒ์ ๋ท๋ถ๋ถ์ ๋ค๋ฃจ๊ฒ ์ต๋๋ค.)
๋ ผ๋ฌธ์์ ์ ์ํ ์์์ธ๋ฐ, ์ด๋๋ $mo = <u_0, u_1, u_3, u_4>$๊ฐ ๋งค์นญ ์ค๋๋ก ๊ฒฐ์ ๋๋ค๊ณ ํฉ๋๋ค. ๊ทธ ์ด์ ๋ DCG $g_2$๋ฅผ ๊ธฐ์ค์ผ๋ก ํ ๋, $<u_0, u_1, u_3>$๋ฅผ ์๋ธ ๋งค์นญ ์ค๋๋ก ํ์ ๋, ๊ฐ๋ฅํ ๋งค์นญ ์๊ฐ 2๊ฐ๋ก ๊ฐ์ฅ ์ ๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ํฉ๋๋ค.
Subgraph Matching on Init DCG
๋งค์นญ ์ค๋๊ฐ ๊ฒฐ์ ๋๋ฉด, ์ด๊ธฐ ๋ฐ์ดํฐ ๊ทธ๋ํ $g_0$์ ๋ํด ์ด๊ธฐ์ ๋งค์นญ ๋๋ ์๋ธ ๊ทธ๋ํ๋ฅผ ์ฐพ์์ ๋ฆฌํฌํธ ํด์ผ ํฉ๋๋ค.
์ด ๊ณผ์ ์ $u_s$์ ๋งค์นญ ๋๋ $v_s$ ์ค์์, $(v_s^{\ast}, u_s, v_s)$์ ์ํ๊ฐ โExplicitโ์ธ ์ ์ ๋ค์ ๋ํด์ ์ํ ํฉ๋๋ค. ์ด๊ฒ์ $v_s$๋ ์ฟผ๋ฆฌ ํธ๋ฆฌ์ ๋ํด ์์ ํ ๋งค์นญ๋ ์๋ธ ํธ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋งคํ์ ๊ตฌ์ฑํ๊ธฐ ์ํด $m(u_s) \leftarrow v_s$๋ก ์ค์ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋จธ์ง DCG ๋
ธ๋๋ค์ ๋ํด์ SubgraphSearch
๋ฅผ ์ํํฉ๋๋ค. ์ด ๊ณผ์ ์ ๋งค์นญ ์ค๋ $mo$๋ฅผ ๋ฐ๋ผ ์ํ ๋ฉ๋๋ค.
๊ณผ์ ์ด ์ข ๋ฃ๋๋ฉด, $m(u_s) \leftarrow \text{NIL}$๋ฅผ ํตํด ์ด์ ๋งคํ์ผ๋ก ๋๋๋ ค ์ฃผ์ญ๋๋ค.
Subgraph Matching for each update stream
TurboFlux๋ Continuous Subgraph Matching์ ์ํ ์๊ณ ๋ฆฌ์ฆ ์ ๋๋ค. ๋ฐ๋ผ์, ์ ๋ฐ์ดํธ ์คํธ๋ฆผ์ ๋ํด ์ ์ ํ ๋์ํด์ค์ผ ํฉ๋๋ค.
์ด ๊ณผ์ ์ ์ ๋ฐ์ดํธ ์คํธ๋ฆผ์ด ๋ฐ์ํ ๋๋ง๋ค, DCG ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ ๋ฐ์ดํธ ํ๊ณ , ๊ทธ ์์์ ์๋ธ ๊ทธ๋ํ ๋งค์นญ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ํ๊ฐํฉ๋๋ค.
์ด๋, ์ฃ์ง ์ฝ์ ๊ณผ ์ญ์ ์ ์ฒ๋ฆฌ ๋ฐฉ์์ด ๋ค๋ฅธ๋ฐ,
[์ฃ์ง ์ฝ์ ]
๋จผ์ ์ฃ์ง๋ฅผ ์ค์ ๋ฐ์ดํฐ ๊ทธ๋ํ $g$์ ์ฝ์ ํฉ๋๋ค. ๊ทธ ๋ค์ DCG๋ฅผ ๊ฐฑ์ ํ๋ฉด์ positive match๋ฅผ ์ฐพ์ต๋๋ค.
[์ฃ์ง ์ญ์ ]
๋จผ์ DCG์ ๊ธฐ๋ฐํด, ์ด๋ค ๋งค์นญ์ด ์ฌ๋ผ์ง์ง ํ๋จํ๊ณ negative match๋ฅผ ๋ฆฌํฌํธ ํฉ๋๋ค.
๊ทธ ๋ค์์ ์ญ์ ๋ ์ฃ์ง๋ฅผ ๋ฐ์ดํฐ ๊ทธ๋ํ $g$์์๋ ์ญ์ ํฉ๋๋ค.
์ฝ์ ์์๋ โ์ฃ์ง ์ถ๊ฐ -> ํ๊ฐโ ์์๋ก ์งํํ๊ณ , ์ญ์ ๋ โํ๊ฐ -> ์ฃ์ง ์ญ์ โ ์์๋ก ์๊ณ ๋ฆฌ์ฆ์ด ์ํ ๋์ด์ผ ํฉ๋๋ค. ์ฃ์ง๋ฅผ ์ญ์ ํ ๋ค์์ DCG๋ฅผ ์ ๋ฐ์ดํธ ํ๋ ค๊ณ ํ๋ฉด, DCG ๋ณ๊ฒฝ ์ ์ํ๋ฅผ ์ ์ ์๊ฒ ๋๋ฏ๋ก ์ ํํ ๋งค์นญ ๋ณํ๋ฅผ ์ถ์ ํ๊ธฐ ์ด๋ ค์์ง๊ธฐ ๋๋ฌธ์ ๋๋ค!
Adjust Matching Order
์ ๋ฐ์ดํธ ์คํธ๋ฆผ์ ์ํด ๋ฐ์ดํฐ ๊ทธ๋ํ $g$์ DCG๊ฐ ๊ณ์ ์ ๋ฐ์ดํธ ๋๊ณ ์์ต๋๋ค. ๋ง์ฝ, ์ด๋ค ์ฟผ๋ฆฌ ๊ฒฝ๋ก์ ๋ํด์ โExplicit Pathโ์ ์๊ฐ ํฌ๊ฒ ๋ณ๋ ํ๋ค๋ฉด, ์ด๊ฒ์ ๊ฐ ์ฟผ๋ฆฌ ๋ ธ๋์ ๋ํ ์ ํ๋๊ฐ ๋ฌ๋ผ์ก๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๊ทธ๋์ ๋งค์นญ ์ค๋๋ฅผ ํ์ฌ DCG์ ๋ง๊ฒ ๋ค์ ๊ณ์ฐํจ์ผ๋ก์จ ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ ํ๋ณดํ ์ ์์์ ๋งํฉ๋๋ค.
Overview
๋ ผ๋ฌธ์์ ์ ๊ณตํ TurboFlux์ ์ ์ฒด ์๊ณ ๋ฆฌ์ฆ์ ์๋์ ๊ฐ์ต๋๋ค.
TurboFlux Implementation
Bitmap Representation
TurboFlux๋ Implicit ์ฃ์ง์ ๋ํ ์ ๋ณด๋ฅผ ๋นํธ๋งต์ ์ ์ฅํฉ๋๋ค. ๊ฐ ๋ฐ์ดํฐ ๋
ธ๋๋ โ์ฟผ๋ฆฌ ๊ทธ๋ํ์ ๋
ธ๋ ์ ๋งํผโ ๋นํธ๋งต์ ๊ฐ์ง๊ณ , ์ด ๋นํธ๋งต์ $i$๋ฒ์งธ ๋นํธ๋ ์ฟผ๋ฆฌ ๋
ธ๋ $u_i$์ ๋์๋๊ณ , $i$๋ฒ์งธ ๋นํธ๋งต์ ๊ฐ์ด true
๋ผ๋ฉด, ํด๋น ๋ฐ์ดํฐ ๋
ธ๋์ $u_i$ ๋
ธ๋ ์ฌ์ด์ Implicit ์ฃ์ง๊ฐ ์กด์ฌํ๋ค๊ณ ํ์ ํฉ๋๋ค.
์ฆ, Implicit ์ฃ์ง๋ DCG ์๋ฃ๊ตฌ์กฐ์ ์ง์ ์ ์ฅํ์ง ์๊ณ , bitmap์ ์ ์ฅ๋๊ณ ๊ฐ์ ์ถ์ ๋ฉ๋๋ค.
DCG๋ minimal representation์ด๋ค?