25 minute read

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$ ์ƒํ™ฉ์„ ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ๋จผ์ € ๊ฐ€์žฅ ๋ฆฌํ”„ ๋…ธ๋“œ์ธ $q_{111}$๊ณผ $q_{112}$๋ฅผ ๊ณ„์ธต ์กฐ์ธ ํ•˜์—ฌ $q_{11}$๋ฅผ ๊ตฌํ•ฉ๋‹ˆ๋‹ค.
    1. ๊ฐ๊ฐ์ด $q_{111} \Join q_{112} = 2 \times 100 = 200 = q_{11}$์ด ๋ฉ๋‹ˆ๋‹ค.
  2. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ $q_{11}$๊ณผ $q_{12}$๋ฅผ ๊ณ„์ธต ์กฐ์ธํ•˜์—ฌ $q_1$์„ ๊ตฌํ•ฉ๋‹ˆ๋‹ค.
    1. $q_{11} \Join q_{12} = 200 \times 110 = 22,000 = q_1$
  3. ๋งˆ์ง€๋ง‰์œผ๋กœ $q_1 \Join q_2$ํ•˜์—ฌ ์›๋ณธ ์ฟผ๋ฆฌ $q$์— ๋Œ€ํ•œ ๋งค์นญ์„ ์ฐพ์Šต๋‹ˆ๋‹ค.
    1. ์ด๋•Œ๋Š” $q_1 \times q_2 = 22,000$๊ฐ€ ์•„๋‹ˆ๋ผ, $q = 200$์ด ๋ฉ๋‹ˆ๋‹ค.
    2. ์ด์œ ๋Š” $B - D$ ์—ฐ๊ฒฐ ์ค‘์—์„œ ๋”ฑ ํ•œ ๊ฒฝ์šฐ๋งŒ $D - E$ ์—ฐ๊ฒฐ์„ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ ์ž…๋‹ˆ๋‹ค.
    3. ๊ทธ๋ž˜์„œ $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 are NULL 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์ด๋‹ค?