19 minute read

2025๋…„ ์ €๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋žฉ์— ์ปจํƒํ•˜์—ฌ ํ•™๋ถ€ ์กธ์—… ์—ฐ๊ตฌ ์ฃผ์ œ๋ฅผ ๋ฐ›์•„์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ €์˜ ์ฃผ์ œ๋Š” โ€œContinuous Subgraph Matchingโ€๊ณผ ๊ด€๋ จํ•ด ์ฝ”๋“œ๋ฅผ ์ตœ์ ํ™” ํ•˜๊ณ  ๊ฐœ์„ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ทธ๋ž˜ํ”„ ์ฟผ๋ฆฌ ๊ด€๋ จ ๋…ผ๋ฌธ์„ ์ฝ๊ณ , C++ ์ฝ”๋“œ๋ฅผ ํŠœ๋‹ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์กธ์—… ๋งˆ์ง€๋ง‰ ํ•™๊ธฐ์— ๋“ฃ๋Š” ์ˆ˜์—…์ธ๋ฐ ๋งŽ์€ ๋…ธํ•˜์šฐ์™€ ๊ฒฝํ—˜์„ ์Œ“๊ณ  ์กธ์—…ํ•˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค ใ…Žใ…Ž

Wook-Shin Han, Jinsoo Lee, and Jeong-Hoon Lee. 2013. TurboISO: Towards UltraFast and Robust Subgraph Isomorphism Search in Large Graph Databases

๋“ค์–ด๊ฐ€๋ฉฐ

SymBi ๋…ผ๋ฌธ([1], [2], [3])์— ์ด์–ด ์ด ๋…ผ๋ฌธ๋„ ์ง€๊ธˆ ์กธ์—… ์—ฐ๊ตฌ๋ฅผ ํ•˜๊ณ  ์žˆ๋Š” ์—ฐ๊ตฌ์‹ค์—์„œ ์ž‘์„ฑํ•œ ๋…ผ๋ฌธ ์ž…๋‹ˆ๋‹ค! ์กธ์—… ์—ฐ๊ตฌ๋ฅผ ํ•˜๋ฉด์„œ ์ด ๋…ผ๋ฌธ์˜ ๊ตฌํ˜„๋„ ์‚ดํŽด๋ณผ ์ผ์ด ์žˆ์–ด์„œ ๋…ผ๋ฌธ ๋ฆฌ๋”ฉ์„ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!

Matching Order is Important

๋…ผ๋ฌธ์—์„œ ์ œ์‹œํ•œ ์˜ˆ์‹œ ์ฟผ๋ฆฌ&๋ฐ์ดํ„ฐ ๊ทธ๋ž˜ํ”„ ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ๊ทธ๋ž˜ํ”„๋Š” $g_1$์™€ $g_2$์˜ ์„œ๋ธŒ ๊ทธ๋ž˜ํ”„๋กœ ๊ตฌ์„ฑ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ Fig1 ๊ทธ๋ฆผ์—์„œ๋Š” ์ฟผ๋ฆฌ ๊ทธ๋ž˜ํ”„์™€ ๋งค์นญ๋˜๋Š” ํŒจํ„ด์ด ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค! ๊ทธ๋Ÿฌ๋‚˜, ๋งค์นญ์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•˜๋Š” ๊ฒƒ๋„ ์ค‘์š”ํ•œ ๋ฌธ์ œ ์ž…๋‹ˆ๋‹ค.

Try to match $g_1$

์ฟผ๋ฆฌ ๊ทธ๋ž˜ํ”„๋ฅผ $O_1 = (u_1, u_2, u_3) \sim (A, B, C)$์˜ Matching Order ์ˆœ์„œ๋กœ ์„œ๋ธŒ ๊ทธ๋ž˜ํ”„ $g_1$์— ๋งค์นญ ์‹œ์ผœ ๋ด…์‹œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด, ๋งค์นญ์ด ์™ผ์ชฝ ๊ทธ๋ฆผ์˜ ์ˆœ์„œ๋กœ ๋งบ์–ด์ง‘๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์ด๊ฒƒ์€ ์ฟผ๋ฆฌ ๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•œ ์ž„๋ฒ ๋”ฉ์ด ์•„๋‹™๋‹ˆ๋‹ค! $(u_1, u_3)$๋Š” ์—ฐ๊ฒฐ ๋˜์–ด ์žˆ์ง€๋งŒ, $(v_1, v_3)$๋Š” ์—ฐ๊ฒฐ ๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค!

์ด๋ฒˆ์—๋Š” $O_2 = (u_1, u_3, u_2) \sim (A, C, B)$์˜ Matching Order ์ˆœ์„œ๋กœ ์„œ๋ธŒ ๊ทธ๋ž˜ํ”„ $g_1$์— ๋งค์นญ ์‹œ์ผœ ๋ด…์‹œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด, ๋งค์นญ์ด ์˜ค๋ฅธ์ชฝ ๊ทธ๋ฆผ์˜ ์ˆœ์„œ๋กœ ๋งบ์–ด์ง‘๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, $O_2$์—์„œ๋Š” $u_2$๋ฅผ ๋งค์นญํ•  ๋•Œ, $v_4$๋ถ€ํ„ฐ $v_{1004}$๊นŒ์ง€ ๋ชจ๋“  ๋งค์นญ์„ ๊ฒ€์‚ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ฟผ๋ฆฌ ๊ทธ๋ž˜ํ”„ $q$๋ฅผ ๋งค์นญ ํ•  ๋•Œ๋„ ๋งค์นญ ์˜ค๋”๋ฅผ ์–ด๋–ป๊ฒŒ ์žก๋А๋ƒ์— ๋”ฐ๋ผ์„œ ๋งค์นญ์„ ๊ฒ€์‚ฌํ•˜๋Š” ํšŸ์ˆ˜๊ฐ€ ํฌ๊ฒŒ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

Useless Enumerations

๋…ผ๋ฌธ์—์„œ๋Š” ๋˜ ๋‹ค๋ฅธ ์˜ˆ์‹œ ์ฟผ๋ฆฌ&๋ฐ์ดํ„ฐ ๊ทธ๋ž˜ํ”„๋กœ ์ƒํ™ฉ์„ ์„ค๋ช… ํ•ฉ๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ ์—ฌ๊ธฐ์—์„œ๋„ ์ฟผ๋ฆฌ ๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•œ Isomorphism์€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค!

๋งค์นญ ์˜ค๋”๊ฐ€ $O = (u_1, u_2, \cdots , u_7)$์œผ๋กœ ์ฃผ์–ด์กŒ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ, ๋ฐ์ดํ„ฐ ๊ทธ๋ž˜ํ”„์—์„œ ์ด๊ฒƒ์— ๋Œ€ํ•œ ๋งค์นญ์€ Fig2์™€ ๊ฐ™์ด ์ฐพ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์žฌ๊ท€ ํŠธ๋ฆฌ $T_r$์˜ ์ฒซ๋ฒˆ์งธ ๊ฒฝ๋กœ์—์„œ ๋งค์นญ์ด ์‹คํŒจํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ๋‚˜๋จธ์ง€ ๊ฐ€์ง€๋“ค๋„ ๋งค์นญ์„ ํ™•์ธํ•ด๋ณด๋ฉด ๋ชจ๋‘ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ๋…ผ๋ฌธ์—์„œ๋Š” ์—ฌ๊ธฐ์—์„œ ์•„์ด๋””์–ด๋ฅผ ์ œ์‹œ ํ•ฉ๋‹ˆ๋‹ค!

์žฌ๊ท€ ํŠธ๋ฆฌ $T_r$์˜ ๊ฒฝ๋กœ๋ฅผ ๋ณด๋ฉด, $- (v_3, v_4, v_5) -$ ๋ถ€๋ถ„์˜ ์ˆœ์„œ๋งŒ ๋ฐ”๋€๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ ์ •์ ์€ ๊ฐ™์€ ๋ ˆ์ด๋ธ”๊ณผ ๊ฐ™์€ ํ˜•์ƒ(topology)๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋…ผ๋ฌธ์—์„œ๋Š” ์ด๋Ÿฐ ๊ฒฝ์šฐ๋Š” ์“ธ๋ชจ์—†์ด ์ˆœํšŒ(useless enumeration)๋ฅผ ํ•˜๋Š” ์ƒํ™ฉ์ด๋ผ๊ณ  ์ •์˜ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๊ฒƒ์„ ํšจ์œจ์ ์œผ๋กœ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด โ€œNeighborhood Equivalence Class(NEC)โ€œ๋ผ๋Š” ๊ฐœ๋…์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค. NEC๋Š” ๋น„์Šทํ•œ ์ •์ ๋“ค์€ ๋ฌถ์–ด์„œ ์ฒ˜๋ฆฌํ•˜๊ณ , ๋ถˆํ•„์š”ํ•œ ์ˆœ์—ด(Permutation)์„ ๋ฏธ๋ฆฌ ์ œ๊ฑฐํ•˜์—ฌ ๊ณ„์‚ฐ ๋‚ญ๋น„๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉ์ ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋’ค์—์„œ ๋” ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค.

Neighborhood Equivalence Class (NEC)

TurboIso๋Š” โ€œ์ฟผ๋ฆฌ ๊ทธ๋ž˜ํ”„๋ฅผ NEC ํŠธ๋ฆฌ๋กœ ๋ฐ”๊พธ๋Š” ์ž‘์—…โ€œ์„ ์ œ์ผ ๋จผ์ € ์ˆ˜ํ–‰ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์€ BFS๋กœ ์ด๋ค„์ง€๋ฉฐ, ๊ทธ๋ž˜ํ”„ ๋งค์นญ ์ž‘์—…๋„ ์ฟผ๋ฆฌ ๊ทธ๋ž˜ํ”„ $q$๊ฐ€ ์•„๋‹ˆ๋ผ NEC Tree $qโ€™$์— ๋Œ€ํ•ด์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

์ด์ œ NEC ์ง‘ํ•ฉ์— ๋Œ€ํ•ด์„œ ์—„๋ฐ€ํžˆ ์ •์˜ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

If for every embedding $m$ that contains $(u_i, v_x)$ and $(u_j, v_y)$, there exists an another embedding $mโ€™$ s.t.

\[m' = m \setminus \left\{ (u_i, v_x), (u_j, v_y) \right\} \cup \left\{ (u_i, v_y), (u_j, v_x) \right\}\]

then, let $\simeq$ be an โ€œequivalence relationโ€ over all query vertices in $q$, and two query node are $u_i \simeq u_j$.

์ฆ‰, ๋‘ ์ฟผ๋ฆฌ ๋…ธ๋“œ์— ๋Œ€ํ•ด์„œ ๊ทธ ๋‘˜์˜ ๋งคํ•‘๋œ ๋ฐ์ดํ„ฐ ๋…ธ๋“œ $v_{x,y}$๋ฅผ ์„œ๋กœ ๋งž๋ฐ”๊ฟ”๋„ ์—ฌ์ „ํžˆ ์ž„๋ฒ ๋”ฉ $mโ€™$์ด ํ•ญ์ƒ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด, ๊ทธ ๋‘˜์˜ ๋™์น˜(Equivalent)๋ผ๊ณ  ํ•˜๊ณ , ์„œ๋กœ ๋™์น˜์ธ ์ฟผ๋ฆฌ ๋…ธ๋“œ๋ฅผ ๋ชจ์€ ๊ฒƒ์ด โ€œNECโ€ ์ง‘ํ•ฉ์ด ๋ฉ๋‹ˆ๋‹ค.

์•ž์„  โ€œUseless Enumerationโ€ ์˜ˆ์‹œ์—์„œ๋„ ๋ดค๋“ฏ์ด NEC ์ง‘ํ•ฉ ๋‚ด์—์„œ๋Š” ๊ทธ๋“ค์˜ ๋งคํ•‘์„ ์„œ๋กœ ๋งž๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ˆœ์—ด(Permutation)์˜ ํฌ๊ธฐ ๋งŒํผ ๋ฐฉ๋ฌธ ์ˆœ์„œ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ฑฐ๋‚˜, ๋งค์นญ $m$์ด ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค.

Rewrite query graph to NEC Tree

์ง€๊ธˆ๊นŒ์ง€ NEC๊ฐ€ ์™œ ์ข‹์€์ง€๋ฅผ ์„ค๋ช… ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์ด NEC Tree๋ฅผ ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ• ๊นŒ์š”? ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ป๊ฒŒ ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„๊นŒ์š”?

TurboIso๋Š” ๊ฐ™์€ NEC ์ง‘ํ•ฉ์— ์†ํ•˜๋Š” ์ฟผ๋ฆฌ ๋…ธ๋“œ๋“ค์ด ์•„๋ž˜์™€ ๊ฐ™์€ ์„ฑ์งˆ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌ ํ•ฉ๋‹ˆ๋‹ค.

Let $SP(u_s, u_i)$ be โ€œthe set of all shortest pathsโ€ from $u_s$ to $u_i$.

If the two query vertices $u_i$ and $u_j$ are in same NEC, then they have same size of shortest path set.

\[\left\vert SP(u_s, u_i) \right\vert = \left\vert SP(u_s, u_j) \right\vert\]

์ฐธ๊ณ ๋กœ ์ง‘ํ•ฉ ๋“ฑํ˜ธ์ธ $SP(u_s, u_i) = SP(u_s, u_j)$๋กœ ํ‘œํ˜„ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” Shortest Path์—์„œ ๋งˆ์ง€๋ง‰์— ๋ฐฉ๋ฌธํ•˜๋Š” ๋…ธ๋“œ๊ฐ€ $u_i \ne u_j$๋กœ ์„œ๋กœ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ ์ง์ „๊นŒ์ง€๋Š” ๋ชจ๋‘ ๊ฐ™์€ Shortest Path๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค.

ํ•™๋ถ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—…์—์„œ $u_s$์—์„œ ์‹œ์ž‘ํ•ด $u_i$์— ๋„๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๊ณ ์ž ํ•œ๋‹ค๋ฉด, BFS ๊ฒ€์ƒ‰์„ ์‚ฌ์šฉํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. (Weighted Graph ์˜€๋‹ค๋ฉด, ๋‹ค์ต์ŠคํŠธ๋ผ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.)

๊ทธ๋ž˜์„œ NEC Tree๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ, BFS ํƒ์ƒ‰์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค!


๊ทธ๋ฆฌ๊ณ  NEC Tree $qโ€™$์—์„œ ๋ถ€๋ชจ-์ž์‹ ๋…ธ๋“œ ์‚ฌ์ด ๊ด€๊ณ„๊ฐ€ ์žˆ๋‹ค๋ฉด, ๊ทธ๊ฒƒ์€ ์ฟผ๋ฆฌ ๋…ธ๋“œ์—์„œ ๋ถ€๋ชจ NEC ๋…ธ๋“œ์˜ ๋ชจ๋“  ์ •์ ์€ ์ž์‹ NEC ๋…ธ๋“œ์˜ ๋ชจ๋“  ์ •์ ๊ณผ ์™„์ „ ์—ฐ๊ฒฐ ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

NEC ํŠธ๋ฆฌ๋Š” ์ฟผ๋ฆฌ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ณ„์ธต์ ์œผ๋กœ ๋ถ„ํ•ดํ•œ ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋‹น์—ฐํ•˜๊ฒŒ ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์žˆ๋Š” ๋ช…์ œ ์ž…๋‹ˆ๋‹ค.


๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค NEC ํŠธ๋ฆฌ์˜ ๋…ธ๋“œ $uโ€™$์— ๋Œ€ํ•ด, ์ด NEC๋ฅผ ์ด๋ฃจ๋Š” ๋ณธ๋ž˜ ์ฟผ๋ฆฌ ๋…ธ๋“œ์˜ ๋ชฉ๋ก์€ ์•„๋ž˜์™€ ๊ฐ™์ด ํ‘œ๊ธฐ ํ•ฉ๋‹ˆ๋‹ค.

\[u'.NEC = \left\{ u \in V(q) \, : \, u \simeq u' \right\}\]

์˜ˆ๋ฅผ ๋“ค์–ด, $uโ€™_1.NEC = \left\{u_1\right\}$์ด ๋˜๊ณ , $uโ€™_3.NEC = \left\{ u_3, u_4 \right\}$๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

Candidate Region $CR(u)$

TurboIso๋Š” ๋น ๋ฅธ ์ฟผ๋ฆฌ ๋งค์นญ์„ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ๊ทธ๋ž˜ํ”„ ์œ„์— Candidate Region $CR$์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

์ด Candidate Region์€ โ€œEmbedding์„ ๊ฐ€์งˆ ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€๋˜๋Š” ๋ฐ์ดํ„ฐ ๊ทธ๋ž˜ํ”„์˜ ์˜์—ญโ€œ์ž…๋‹ˆ๋‹ค.

์กด์žฌ์„ฑ์ด ๊ธฐ๋Œ€๋˜๋Š” ์˜์—ญ์ด๊ธฐ ๋•Œ๋ฌธ์—, Embedding์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด CR ๋‚ด์—์„œ Embedding์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋งŒ์•ฝ Embedding์ด ์กด์žฌํ•œ๋‹ค๋ฉด, ์ด ์˜์—ญ ์•ˆ์—์„œ ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

Embedding ์กด์žฌ ์—ฌ๋ถ€์™€ ์ƒ๊ด€ ์—†์ด, CR์„ ์ •์˜ํ•ด ์ด ์œ„์˜ ๋ฐ์ดํ„ฐ ๊ทธ๋ž˜ํ”„๋งŒ ํƒ์ƒ‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐ์ดํ„ฐ ๊ทธ๋ž˜ํ”„ ์ „์ฒด๋ฅผ ํƒ์ƒ‰ํ•  ํ•„์š”๊ฐ€ ์—†์–ด์ง€๊ณ  ์ด๊ฒƒ์€ ๊ฒ€์ƒ‰ ๊ณต๊ฐ„์„ ํฌ๊ฒŒ ์ค„์—ฌ์ค๋‹ˆ๋‹ค!

ํ‘œ๊ธฐ๋Š” $CR(u)$๋ผ๊ณ  ํ•˜๊ณ , โ€œ์ฟผ๋ฆฌ ๋…ธ๋“œ $u$๋ฅผ ๋ฃจํŠธ ๋…ธ๋“œ๋กœ ํ–ˆ์„ ๋•Œ, ๋งŒ๋“ค์–ด์ง€๋Š” Candidate Regionโ€๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

How to construct Candidate Region?

TurboIso๋Š” Candidate Region์„ ์•„๋ž˜์˜ ๊ณผ์ •์„ ํ†ตํ•ด ๊ตฌ์ถ• ํ•ฉ๋‹ˆ๋‹ค.

  1. ์ฟผ๋ฆฌ ๊ทธ๋ž˜ํ”„ $q$๋ฅผ NEC ํŠธ๋ฆฌ $qโ€™$๋กœ ๋ณ€ํ™˜ ํ•ฉ๋‹ˆ๋‹ค.
  2. NEC ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ ๋…ธ๋“œ $u_s$์— ๋Œ€์‘๋˜๋Š” ๋ฐ์ดํ„ฐ ๊ทธ๋ž˜ํ”„ ์ •์  $v_s$๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.
    • ์ด๋•Œ, $u_s$์— ๋Œ€์‘๋˜๋Š” $v_s$๋Š” ์—ฌ๋Ÿฌ๊ฐœ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. $v_s$๋ฅผ ๋ฃจํŠธ๋กœ ์‚ผ์•„ DFS ํƒ์ƒ‰ ํ•ฉ๋‹ˆ๋‹ค.
    • ์ฟผ๋ฆฌ ํŠธ๋ฆฌ์˜ ๊ตฌ์กฐ์™€ ์ผ์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ธŒ ๊ทธ๋ž˜ํ”„๋“ค์„ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค.
    • ์ด๊ฒŒ Candidate Region์ด ๋ฉ๋‹ˆ๋‹ค!

Candidate Subregion

โ€œCandidate Subregionโ€์€ Candidate Region์„ ๊ตฌํ•˜๋Š” ๊ณผ์ •์—์„œ ๊ณ„์‚ฐํ•˜๋Š” ์ค‘๊ฐ„ ๊ฒฐ๊ณผ๋“ค ์ž…๋‹ˆ๋‹ค.

Candidate Subregion์€ NEC ํŠธ๋ฆฌ์˜ ๊ฐ ๋…ธ๋“œ์— candidate ๋ฐ์ดํ„ฐ ๋…ธ๋“œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‹น์—ฐํ•˜๊ฒŒ๋„ ๋ชจ๋“  Candidate Subregion์„ ๋ชจ์œผ๋ฉด, Candidate Region์ด ๋ฉ๋‹ˆ๋‹ค!!

\[\text{Candidate Region} = \bigcup \text{Candidate Subregion}\]

์œ„์˜ ํ‘œ๋Š” Fig3์— ์ œ์‹œ๋œ Candidate Region์„ ๊ตฌ์„ฑํ•˜๋Š” Subregion ์ •๋ณด ์ž…๋‹ˆ๋‹ค.

Candidate Subregion์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

$CR(uโ€™, v)$์—์„œ ๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • $uโ€™$ = NEC ํŠธ๋ฆฌ์—์„œ ํ•œ ์ฟผ๋ฆฌ ๋…ธ๋“œ
  • $v$ = ๋ฐ์ดํ„ฐ ๊ทธ๋ž˜ํ”„ ์ƒ์˜ ํ•œ ๋…ธ๋“œ
  • $CR(uโ€™, v)$๋Š” ์•„๋ž˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋…ธ๋“œ์˜ ์ง‘ํ•ฉ $\left\{ vโ€™ \right\}$
    • $vโ€™$๋Š” $v$์˜ DFS ํŠธ๋ฆฌ์—์„œ์˜ ์ž์‹ ๋…ธ๋“œ์–ด์•ผ ํ•จ.
    • $uโ€™$๊นŒ์ง€ ๊ฐ€๋Š” ๊ฒฝ๋กœ์ƒ์˜ ๋ชจ๋“  NEC ๋…ธ๋“œ๊ฐ€, $vโ€™$๊นŒ์ง€ ๊ฐ€๋Š” ๊ฒฝ๋กœ์ƒ์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๋…ธ๋“œ์™€ ๋งค์นญ์ด ์žˆ์–ด์•ผํ•จ.
      • ์ฆ‰, $uโ€™_s \rightarrow uโ€™$ ํŠธ๋ฆฌ ๊ฒฝ๋กœ์™€ $v_s \rightarrow vโ€™$ ๊ฒฝ๋กœ๊ฐ€ ๊ตฌ์กฐ์ ์œผ๋กœ ๋งค์นญ ๋˜์–ด์•ผ ํ•จ.
    • $uโ€™$์˜ ์„œ๋ธŒํŠธ๋ฆฌ๊ฐ€ Candidate Subregion์œผ๋กœ ๋ถ„๋ฅ˜๋œ $vโ€™$์˜ ์„œ๋ธŒ ํŠธ๋ฆฌ์™€ ๊ตฌ์กฐ์ ์œผ๋กœ ๋งค์นญ ๋˜์–ด์•ผ ํ•จ.

์ •์˜๋ฅผ ๊ณ๋“ค์—ฌ์„œ ๋‹ค์‹œ ์ˆ˜ํ•™์ ์œผ๋กœ ํ‘œํ˜„ํ•ด๋ณด๋ฉด

\[CR(u) = \bigcup_{u' \in V(q'), v \in V(g)} CR(u', v)\]


TurboIso ๋…ผ๋ฌธ์˜ Fig3๋ฅผ ๊ธฐ์ค€์œผ๋กœ Candidate Subregion ์ค‘ ์ผ๋ถ€๋ฅผ ๊ตฌํ•ด๋ด…์‹œ๋‹ค.

\[CR(u'_2, v_1) = \left\{ v_2 \right\}\]

๊ทธ ์ด์œ ๋Š” $v_2$๋งŒ $uโ€™_2$์˜ ์„œ๋ธŒํŠธ๋ฆฌ ๊ตฌ์กฐ์™€ ์ผ์น˜ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ฐ™์€ $B$-label์ด์ง€๋งŒ, $v_3$, $v_4$, $v_5$๋Š” ์„œ๋ธŒํŠธ๋ฆฌ ๊ตฌ์กฐ๊ฐ€ ๋‹ค๋ฅด๋ฏ€๋กœ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค.

\[CR(u'_3, v_1) = \left\{ v_2, v_3, v_4, v_5 \right\}\]

$v_3$, $v_4$, $v_5$๋Š” ์„œ๋ธŒํŠธ๋ฆฌ ๊ตฌ์กฐ๊ฐ€ ๊ฐ™์œผ๋‹ˆ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ, $v_2$๋„ Candidate Region์œผ๋กœ ํฌํ•จ ๋ฉ๋‹ˆ๋‹ค! ์™œ๋ƒํ•˜๋ฉด, $uโ€™_3$์˜ ์„œ๋ธŒํŠธ๋ฆฌ ๊ตฌ์กฐ๊ฐ€ ์กด์žฌํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋˜๋Š”๋ฐ, $uโ€™_3$๋Š” ์„œ๋ธŒํŠธ๋ฆฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค: $\emptyset$. ๊ทธ๋Ÿฐ๋ฐ emptyset์€ ๋ชจ๋“  ์ง‘ํ•ฉ์— ํฌํ•จ๋˜๋ฏ€๋กœ

\[\emptyset \subseteq \text{subtree}({v_3})\]

$v_2$๋กœ Subregion์— ํฌํ•จ ๋ฉ๋‹ˆ๋‹ค!

๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ ๊ทธ๋ž˜ํ”„์— ๊ฐ€์ƒ ๋…ธ๋“œ์ธ $v^\ast_s$๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ $uโ€™_s$์˜ ๋งค์นญ ํ›„๋ณด์ธ ๋ฐ์ดํ„ฐ ์ •์  $v_s$๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด, ์ถ”๊ฐ€ํ•œ ๊ฐ€์ƒ์˜ ๋…ธ๋“œ ์ž…๋‹ˆ๋‹ค.

$v^\ast_s$๊ฐ€ ์—†๊ณ , $v_s$๊ฐ€ ์–ด๋–ค ๋‹ค๋ฅธ ๋ถ€๋ชจ ๋…ธ๋“œ์™€ ์—ฐ๊ฒฐ๋œ ์ƒํ™ฉ์ด์—ˆ๋‹ค๋ฉด $v_s \rightarrow v$์˜ ๊ฒฝ๋กœ๋ฅผ ์—„๋ฐ€ํžˆ ์ •์˜ํ•˜๊ธฐ ์–ด๋ ค์› ์„ ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

Explore Candidate Region

Degree-based filtering

NEC ๋…ธ๋“œ $uโ€™$๊ณผ ๋ฐ์ดํ„ฐ ๋…ธ๋“œ $v$๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, $CR(uโ€™, v)$์— ์†ํ•˜๋Š” $vโ€™$๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด degree ๊ธฐ๋ฐ˜์œผ๋กœ ํ•„ํ„ฐ๋ง์„ ๋จผ์ € ํ•œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ, $(v, vโ€™) \in E(g)$์ธ $vโ€™$ ์ค‘์—์„œ $\deg (vโ€™) < \deg (uโ€™.NEC[1])$ ์˜€๋‹ค๋ฉด, ํ•ด๋‹น ๋ฐ์ดํ„ฐ ๋…ธ๋“œ $vโ€™$๋Š” $CR(uโ€™, v)$์— ํฌํ•จ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋…ผ๋ฌธ์—์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์˜ˆ์‹œ๋ฅผ ์ œ๊ณต ํ•ฉ๋‹ˆ๋‹ค.

  • $\deg (u_1) = 3$
  • $\deg (uโ€™_1) = 2$

์ธ๋ฐ, $\deg (v_1) = 4$์ด๋ฏ€๋กœ $v_1$์€ $uโ€™_1.NEC$๊ฐ€ ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

\[\deg (u_1) = \deg (u'_1.NEC[1]) \le \deg (v_1) \quad \rightarrow \quad \text{possible to belong CR!}\]

Neighborhood Label Frequency (NLF) Filtering

TurboIso๋Š” NLF Filter๋ฅผ ์ ์šฉํ•ด $CR(uโ€™, v)$์— ํฌํ•จ๋  ์ˆ˜ ์žˆ๋Š” $vโ€™$๋ฅผ ํ•„ํ„ฐ๋ง ํ•ฉ๋‹ˆ๋‹ค.

NLF Filter๋Š” TreeSpan(2012) ๋…ผ๋ฌธ์—์„œ โ€œNeighborhood Aggregatesโ€๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ œ์‹œ๋œ ํ•„ํ„ฐ๋ง ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ด๋ฆ„์ด ๋ฌด์„œ์›Œ์„œ ๊ทธ๋ ‡์ง€ ์•„์ด๋””์–ด๋Š” ์ •๋ง ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค ใ…‹ใ…‹

Neighborhood Aggregates $N(v, g)$๋Š” ๋…ธ๋“œ $v$์™€ ์ธ์ ‘ํ•œ ๋…ธ๋“œ๋“ค์˜ Label์˜ ๋นˆ๋„์ˆ˜๋ฅผ ์„ผ ๊ฐ’์ž…๋‹ˆ๋‹ค. ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด์„œ ์‚ดํŽด๋ณด๋ฉด,

Let $(L_1, L_2, L_3, L_4) = (A, B, C, D)$,

\[N(u, q) = (2, 1, 0, 2)\] \[N(v, G) = (1, 2, 2, 0)\]

์ฟผ๋ฆฌ ๋…ธ๋“œ $u$์™€ ๋ฐ์ดํ„ฐ ๋…ธ๋“œ $v$ ๋‘ ๋…ธ๋“œ๊ฐ€ ๋งค์นญ๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜์˜ ์กฐ๊ฑด์ด ๋งŒ์กฑ ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‘˜์˜ Neighborhood Aggregates $N(u, q) = (x_1, \dots, x_n)$, $N(v, G) = (y_1, \dots, y_n)$์— ๋Œ€ํ•ด์„œ

\[\forall i, x_i \le y_i\]

๋ฅผ ๋งŒ์กฑํ•œ๋‹ค๋ฉด, ๋‘ ๋…ธ๋“œ๋Š” ๋งค์นญ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์–ด๋А ํ•œ ๋ ˆ์ด๋ธ”์ด๋ผ๋„ $x_i > y_i$์ธ, ์ฆ‰ ํŠน์ • ๋ ˆ์ด๋ธ”์„ ๊ฐ€์ง„ ๋…ธ๋“œ์™€ ๋œ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค๋ฉด, ์ฟผ๋ฆฌ ๋…ธ๋“œ $u$์•„ ๋ฐ์ดํ„ฐ ๋…ธ๋“œ $v$๋Š” ๋งค์นญ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋…ผ๋ฌธ์—๋Š” ์ด๋ ‡๊ฒŒ ์“ฐ์ง„ ์•Š์ง€๋งŒ, ์ €๋งŒ์˜ ํ‘œํ˜„์œผ๋กœ ์ ์–ด๋ณด์ž๋ฉด

\[N(u, q) \le N(v, G)\]

์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ, ๋งค์นญ์ด ๊ฐ€๋Šฅ ํ•ฉ๋‹ˆ๋‹ค.

TurboIso ๋…ผ๋ฌธ์—์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๊ธฐ์ˆ ํ•ฉ๋‹ˆ๋‹ค.

[NLF Filter (TurboIso ver)]

For every distinct label $l$ of adjacent vertices of $u$, check if

\[\left\vert adj(u, l) \right\vert \le \left\vert adj(v, l) \right\vert\]


TurboIso๋Š” Candidate Subregion์„ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด NLF Filter๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ๋…ธ๋“œ $vโ€™$๋ฅผ $CR(uโ€™, v)$์— ํฌํ•จ์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„  ์„œ๋ธŒ ํŠธ๋ฆฌ ์ˆœํšŒ๋ฅผ ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ๊ทธ๊ฑธ ์ง„ํ–‰ํ•˜๊ธฐ ์ „์— $N(uโ€™, q) \le N(vโ€™, g)$์ธ์ง€ ๋จผ์ € ์ฒดํฌ ํ•ฉ๋‹ˆ๋‹ค.


๋…ผ๋ฌธ์˜ Algo3์— ์ด ๋ถ€๋ถ„์ด ์ฝ”๋“œ๋กœ ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.

DFS Traversal

$uโ€™$์™€ $vโ€™$๊ฐ€ Degree ์กฐ๊ฑด๊ณผ NLF Filter ์กฐ๊ฑด์„ ๋งŒ์กฑํ•œ๋‹ค๋ฉด, ์ด์ œ ์„œ๋ธŒ๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•ด ๊ตฌ์กฐ์ ์œผ๋กœ ๋งค์นญ ๋˜๋Š”์ง€๋ฅผ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ๋…ธ๋“œ $uโ€™$์˜ ์ž์‹ ๋…ธ๋“œ $uโ€™_c$๋“ค์„ ์ˆœํšŒํ•˜๋ฉด์„œ ์žฌ๊ท€์ ์œผ๋กœ Candidate Region ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ด๋•Œ, ์ž์‹ ๋…ธ๋“œ $uโ€™_c$๋ฅผ ์ˆœํšŒํ•˜๋Š” ์ˆœ์„œ๋Š” $\left\vert adj(vโ€™, L(uโ€™_c)) \right\vert$๊ฐ€ ์ž‘์€ ์ˆœ์„œ๋ถ€ํ„ฐ ํฐ ์ˆœ์„œ๋กœ ์ˆœํšŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ $vโ€™$์™€ ์ธ์ ‘ํ•œ ๋…ธ๋“œ ์ค‘์—์„œ ๊ฐ€์žฅ ์ ์€ ๋นˆ๋„๋ฅผ ๊ฐ€์ง„ ๋ ˆ์ด๋ธ”๊ณผ ์ผ์น˜ํ•˜๋Š” ์ž์‹ ๋…ธ๋“œ๋ถ€ํ„ฐ ์ˆœํšŒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ, ์ž์‹ ๋…ธ๋“œ์— ๋Œ€ํ•ด์„œ ExploreCR() ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์‹คํŒจ ์˜€๋‹ค๋ฉด, $vโ€™$ ๋…ธ๋“œ๋Š” $uโ€™$์˜ Candidate Region์ด ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด๋•Œ๋Š” ExploreCR() ๊ณผ์ •์—์„œ ์ฐพ์€ $uโ€™_c$์™€ $vโ€™$ ์‚ฌ์ด์— Candidate Region์„ ๊ตฌ์ถ•ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, $CR(uโ€™_c, vโ€™) \ne \emptyset$๋ผ๋Š” ๊ฒƒ์ด์ฃ . ํ•˜์ง€๋งŒ, $vโ€™$๋Š” $uโ€™$์™€ ๋งค์นญ ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

์ด๋Ÿฐ ๊ฒฝ์šฐ๋Š” $vโ€™$์— ๋Œ€ํ•ด์„œ ์ฐพ์€ ๊ฒฐ๊ณผ๊ฐ€ ๋ชจ๋‘ ๋ฌด์˜๋ฏธ ํ•ด์ง‘๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ $CR(uโ€™_c, vโ€™)$ ์ดˆ๊ธฐํ™” ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ClearCR() ํ•จ์ˆ˜ ์ž…๋‹ˆ๋‹ค.

๋งค์นญ์ด ์‹คํŒจํ–ˆ์œผ๋‹ˆ matched ๋ณ€์ˆ˜๋กœ false๋กœ ์„ค์ •ํ•˜๊ณ  ์ˆœํšŒ๋ฅผ ์ข…๋ฃŒ ํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ ๋งค์นญ์ด ๊ฐ€๋Šฅ ํ–ˆ๋‹ค๋ฉด(matched = true), ๋ฐ์ดํ„ฐ ๋…ธ๋“œ $vโ€™$๋ฅผ Candidate Subregion $CR(uโ€™, v)$์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ, ์™„์„ฑ๋œ $CR(uโ€™, v)$ ์ง‘ํ•ฉ๊ณผ $uโ€™.NEC$ ์ง‘ํ•ฉ์„ ๋น„๊ต ํ•ฉ๋‹ˆ๋‹ค.

์ด๋•Œ, $CR(uโ€™, v)$๋กœ ๋งคํ•‘๋˜๋Š” ๋ฐ์ดํ„ฐ ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•˜๊ธฐ๋Š” ํ•˜๋Š”๋ฐ, $uโ€™.NEC$ ์ง‘ํ•ฉ์˜ ํฌ๊ธฐ๋ณด๋‹ค ์ ์€ ์ƒํ™ฉ์ด๋ผ๋ฉด, $uโ€™.NEC$์— ์†ํ•˜๋Š” ๋…ธ๋“œ ์ค‘ ์ผ๋ถ€๋Š” ๋งคํ•‘๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋ง์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋งˆ์ง€๋ง‰ $\left\vert CR(uโ€™, v) \right\vert \le \left\vert uโ€™.NEC \right\vert$๋ฅผ ํ™•์ธํ•˜๊ณ , ๋งคํ•‘ ๊ฐ€๋Šฅํ•œ ๋…ธ๋“œ ์ˆ˜๊ฐ€ ๋ถ€์กฑํ•œ๋‹ค๋ฉด, (๊ธฐ๊ป๋งŒ๋“ ) $CR(uโ€™, v)$ ์ง‘ํ•ฉ์„ ClearCR() ์ฒ˜๋ฆฌ ํ•ฉ๋‹ˆ๋‹ค.


Candidate Region์„ ๊ตฌ์„ฑํ•˜๋Š” ์ „์ฒด ํ๋ฆ„์„ ์‚ดํŽด๋ณด๋ฉด, ์š”๋ ‡์Šต๋‹ˆ๋‹ค!

Candidate Region Data Structure

์ด์ œ Candidate Region์„ ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•˜๊ณ , ๊ด€๋ฆฌํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ๊ตฌํ˜„์— ๋Œ€ํ•ด ์‚ดํŽด๋ด…์‹œ๋‹คโ€ฆ! ์•„์ง๋„ ๋‚จ์€๊ฑฐ๋ƒโ€ฆ

์ฒ˜์Œ์—๋Š” ์ด๋Ÿฐ ํ‘œ์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ $CR$์„ ์ •๋ฆฌ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ด๊ฑธ NEC ํŠธ๋ฆฌ $qโ€™$์™€ ๊ฐ™์ด ๊ทธ๋ž˜ํ”„ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•ด๋ณด๋ฉด ์˜ค๋ฅธ์ชฝ๊ณผ ๊ฐ™์ด ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. $CR(uโ€™, v)$๊ฐ€ ๋…ธ๋“œ๊ฐ€ ๋˜๊ณ , ๊ทธ ์•ˆ์— $vโ€™ \in CR(uโ€™, v)$์˜ ์›์†Œ๋“ค์ด ์กด์žฌ ํ•ฉ๋‹ˆ๋‹ค.

$CR(uโ€™, -)$๋Š” โ€œNEC ๋…ธ๋“œ $uโ€™$์™€ ๋ฐ์ดํ„ฐ ๋…ธ๋“œ $v$์— ๋Œ€ํ•œ ๋ชจ๋“  Subregion์„ ๋ชจ์€ ๋ฐฐ์—ดโ€ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ $CR(uโ€™_7, -)$๋ฅผ ๋ณด๋ฉด, $CR(uโ€™_7, v_y) \cup CR(uโ€™_7, v_8)$๋กœ ์ด๋ค„์ง„๊ฑธ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด, $uโ€™_7$์˜ ๊ฒฝ์šฐ ๊ฐ€๋Šฅํ•œ Candidate Subgraph์ด 2๊ฐœ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€ ๋…ธ๋“œ๋“ค์€ Candidate Subregion์ด ํ•˜๋‚˜๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋•Œ, $CR(uโ€™, -)$ ๋ฐฐ์—ด ์•ˆ์—์„œ๋Š” ์–ด๋–ค $v$์—์„œ ์˜จ ๊ฒƒ์ธ์ง€ ๊ตฌ๋ถ„ ์—†์ด ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. $CR(uโ€™, -)$ ๋ฐฐ์—ด์—๋Š” $(vโ€™, L)$๊ฐ€ ์ €์žฅ ๋˜๋Š”๋ฐ, ๋งค์นญ ๋˜๋Š” ๋ฐ์ดํ„ฐ ๋…ธ๋“œ์ธ $vโ€™$์ด๊ณ , $L$์€ โ€œlist of ranges $[s, e]$โ€๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, ๋ฐฐ์—ด ํ‘œํ˜„์€ inclusive ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ํ•˜๋‚˜์˜ $CR(uโ€™, -)$์„ ์ฝ”๋“œ๋กœ ์ ์–ด๋ณด๋ฉด,

CR_u2_arr = [
   (v2, [[1, 1], [1, 2], [1, 1]]),
]
CR_u7_arr = [
   (v14, []),
   (v15, []),
   (v16, []),
   (v17, []),
]

์ด๋•Œ, $L$์˜ ํฌ๊ธฐ๋Š” $uโ€™$์˜ NEC ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐฏ์ˆ˜๋งŒํผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ž์‹์ด ์—†๋Š” NEC ๋…ธ๋“œ๋Š” L = []๋กœ empty list๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์ž์‹์ด 3๊ฐœ์ธ NEC ๋…ธ๋“œ($uโ€™_2$)๋ผ๋ฉด, ๋ฐฐ์—ด $L$๋Š” L = [l_1, l_2, l_3]์ด ๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, $l_i$์—๋Š” $[s, e]$๋กœ ์‹œ์ž‘๊ณผ ๋ ๊ฐ’์ด ์ €์žฅ ๋˜๋Š”๋ฐ, ์ด๊ฒƒ์€ ํ•˜์œ„ NEC ๋…ธ๋“œ์—์„œ ์ด $vโ€™$๊ณผ ์—ฐ๊ฒฐ๋˜๋Š” ๊ฒƒ์˜ (์—ฐ๊ฒฐ๋œ) ์ž์‹์ด ๋ฌด์—‡์ธ์ง€ ๊ตฌ๋ถ„ํ•˜๋Š” ๋…€์„ ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, $CR(uโ€™_5, -)$์— ์žˆ๋Š”

  • $(v_7, [[1, 1]])$
    • $v_7$์˜ ์ž์‹์€ $CR(u^\prime_7, -)$์˜ $v_14$ ์ž…๋‹ˆ๋‹ค.
  • $(v_8, [[2, 4]])$
    • $v_8$์˜ ์ž์‹์€ $CR(u^\prime_7, -)$์˜ $v_{15}$, $v_{16}$, $v_{17}$ ์ž…๋‹ˆ๋‹ค.

์ฐธโ€ฆ ์–ด๋ ต๋‹คโ€ฆ ๊ทธ์ฃ โ€ฆ? เซฎ(หถใ… ๏ธฟใ… )แƒ

๋งบ์Œ๋ง

๋‚ด์šฉ์ด ๊ธธ์–ด์ ธ์„œ ํฌ์ŠคํŠธ๋ฅผ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค! โ€œMatching Orderโ€์— ๋Œ€ํ•œ ๋‚ด์šฉ๋ถ€ํ„ฐ๋Š” ์•„๋ž˜์˜ ํฌ์ŠคํŠธ๋กœ ๊ณ ๊ณ !

โžก๏ธ TurboIso - Matching Order