Hydra ํšŒ์˜ ์ž‘์—… ๋ถ„์„ - ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐ ์ธ๋ฉ”๋ชจ๋ฆฌ ์Šคํ† ๋ฆฌ์ง€

๋ฉฐ์น  ์ „์— ์ผ์–ด๋‚œ ์ผ ํžˆ๋“œ๋ผ ํšŒ์˜. JUG.ru ๊ทธ๋ฃน์˜ ์‚ฌ๋žŒ๋“ค์€ ๊ฟˆ์˜ ์—ฐ์‚ฌ(Leslie Lamport! Cliff Click! Martin Kleppmann!)๋ฅผ ์ดˆ๋Œ€ํ•˜๊ณ  ๋ถ„์‚ฐ ์‹œ์Šคํ…œ๊ณผ ์ปดํ“จํŒ…์— ์ดํ‹€์„ ๋ฐ”์ณค์Šต๋‹ˆ๋‹ค. Kontur๋Š” ํšŒ์˜์˜ ์„ธ ํŒŒํŠธ๋„ˆ ์ค‘ ํ•˜๋‚˜์˜€์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ถ€์Šค์—์„œ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆ„๊ณ  ๋ถ„์‚ฐ ์ €์žฅ ์žฅ์น˜์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ๋น™๊ณ  ๊ฒŒ์ž„์„ ํ•˜๊ณ  ํผ์ฆ์„ ํ’€์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ํ…์ŠคํŠธ ์ž‘์„ฑ์ž๊ฐ€ Kontur ์Šคํƒ ๋“œ์—์„œ ์ž‘์—…์„ ๋ถ„์„ํ•œ ๊ฒŒ์‹œ๋ฌผ์ž…๋‹ˆ๋‹ค. Hydra์— ์žˆ์—ˆ๋˜ ์‚ฌ๋žŒ - ์ด๊ฒƒ์€ ์ฆ๊ฑฐ์šด ๊ฒฝํ—˜์„ ๊ธฐ์–ตํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ์‚ฌ๋žŒ์€ ๋‡Œ๋ฅผ ์ŠคํŠธ๋ ˆ์นญํ•  ๊ธฐํšŒ์ž…๋‹ˆ๋‹ค. ํฐ O-ํ‘œ๊ธฐ๋ฒ•.

ํ”Œ๋ฆฝ์ฐจํŠธ๋ฅผ ๋ถ„ํ•ดํ•˜์—ฌ ์Šฌ๋ผ์ด๋“œ๋กœ ๋งŒ๋“ค์–ด ์ž์‹ ์˜ ๊ฒฐ์ •์„ ์ ๋Š” ์ฐธ๊ฐ€์ž๋„ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋†๋‹ด์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ํ™•์ธ์„ ์œ„ํ•ด ์ด ์ข…์ด ๋ญ‰์น˜๋ฅผ ๊ฑด๋„ค์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

Hydra ํšŒ์˜ ์ž‘์—… ๋ถ„์„ - ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐ ์ธ๋ฉ”๋ชจ๋ฆฌ ์Šคํ† ๋ฆฌ์ง€

์ด ์„ธ ๊ฐ€์ง€ ์ž‘์—…์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

  • ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ์œ„ํ•ด ๊ฐ€์ค‘์น˜๋กœ ๋ณต์ œ๋ณธ ์„ ํƒ ์ •๋ณด
  • ๋ฉ”๋ชจ๋ฆฌ ๋‚ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ์ •๋ ฌ ์ •๋ณด
  • ๋ง ํ† ํด๋กœ์ง€๊ฐ€ ์žˆ๋Š” ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ ์ƒํƒœ ์ „์†ก ์‹œ

์ž‘์—… 1. ClusterClient

๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ N๊ฐœ์˜ ๊ฐ€์ค‘ ๋ณต์ œ๋ณธ์—์„œ K๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ํŒ€์€ N ๋…ธ๋“œ์˜ ๋Œ€๊ทœ๋ชจ ๋ถ„์‚ฐ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์œ„ํ•œ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ์ž„๋ฌด๋ฅผ ๋งก๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋…ธ๋“œ์™€ ๊ด€๋ จ๋œ ๋‹ค์–‘ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(์˜ˆ: ๋Œ€๊ธฐ ์‹œ๊ฐ„, 4xx/5xx ์‘๋‹ต ์†๋„ ๋“ฑ)๋ฅผ ์ถ”์ ํ•˜๊ณ  ๋ถ€๋™ ์†Œ์ˆ˜์  ๊ฐ€์ค‘์น˜ W1..WN์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ๋™์‹œ ์‹คํ–‰ ์ „๋žต์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” N/N ๋…ธ๋“œ ์ค‘ K๋ฅผ ๋ฌด์ž‘์œ„๋กœ ์„ ํƒํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„ ํƒ๋  ํ™•๋ฅ ์€ ๋…ธ๋“œ์˜ ๊ฐ€์ค‘์น˜์— ๋น„๋ก€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋…ธ๋“œ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์„ ํƒํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. Big O ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์‚ฐ ๋ณต์žก๋„๋ฅผ ์ถ”์ •ํ•ฉ๋‹ˆ๋‹ค.

์™œ ๋ชจ๋“  ๊ฒƒ์ด ์˜์–ด๋กœ ๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ํ˜•ํƒœ๋กœ ํšŒ์˜ ์ฐธ๊ฐ€์ž๋“ค์ด ๊ทธ๋“ค๊ณผ ์‹ธ์› ๊ณ  ์˜์–ด๊ฐ€ Hydra์˜ ๊ณต์‹ ์–ธ์–ด ์˜€๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ž‘์—…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค.

Hydra ํšŒ์˜ ์ž‘์—… ๋ถ„์„ - ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐ ์ธ๋ฉ”๋ชจ๋ฆฌ ์Šคํ† ๋ฆฌ์ง€

์ข…์ด์™€ ์—ฐํ•„์„ ๊ฐ€์ง€๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์Šคํฌ์ผ๋Ÿฌ๋ฅผ ์ฆ‰์‹œ ์—ด์ง€ ๋งˆ์‹ญ์‹œ์˜ค ๐Ÿ™‚

์†”๋ฃจ์…˜ ๋ถ„์„(๋น„๋””์˜ค)

5๋ถ„ 53์ดˆ๋ถ€ํ„ฐ ๋‹จ 4๋ถ„๋งŒ:

๋‹ค์Œ์€ ํ”Œ๋ฆฝ ์ฐจํŠธ๋ฅผ ๊ฐ€์ง„ ์‚ฌ๋žŒ๋“ค์ด ํ•ด๊ฒฐ์ฑ…์„ ์ œ์‹œํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.


์†”๋ฃจ์…˜ ๋ถ„์„(ํ…์ŠคํŠธ)

๋‹ค์Œ ์†”๋ฃจ์…˜์€ ํ‘œ๋ฉด์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ณต์ œ๋ณธ์˜ ๊ฐ€์ค‘์น˜๋ฅผ ํ•ฉ์‚ฐํ•˜๊ณ , 0์—์„œ ๋ชจ๋“  ๊ฐ€์ค‘์น˜์˜ ํ•ฉ๊นŒ์ง€ ๋‚œ์ˆ˜๋ฅผ ์ƒ์„ฑํ•œ ๋‹ค์Œ, ๋ณต์ œ๋ณธ ๊ฐ€์ค‘์น˜์˜ ํ•ฉ์ด 0์—์„œ (i-1)๋ฒˆ์งธ๊ฐ€ ๋˜๋„๋ก i-๋ ˆํ”Œ๋ฆฌ์นด๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ž„์˜์˜ ์ˆซ์ž๋ณด๋‹ค ์ž‘๊ณ  0์—์„œ i๋ฒˆ์งธ๊นŒ์ง€ ๋ณต์ œ๋ณธ ๊ฐ€์ค‘์น˜์˜ ํ•ฉ์ด ๊ทธ๋ณด๋‹ค ํฝ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•˜๋‚˜์˜ ๋ณต์ œ๋ณธ์„ ์„ ํƒํ•˜๊ณ  ๋‹ค์Œ ๋ณต์ œ๋ณธ์„ ์„ ํƒํ•˜๋ ค๋ฉด ์„ ํƒํ•œ ๋ณต์ œ๋ณธ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ์ „์ฒด ์ ˆ์ฐจ๋ฅผ ๋ฐ˜๋ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ํ•˜๋‚˜์˜ ๋ณต์ œ๋ณธ์„ ์„ ํƒํ•˜๋Š” ๋ณต์žก๋„๋Š” O(N)์ด๊ณ  K๊ฐœ ๋ณต์ œ๋ณธ์„ ์„ ํƒํ•˜๋Š” ๋ณต์žก๋„๋Š” O(NยทK) ~ O(N2)์ž…๋‹ˆ๋‹ค.

Hydra ํšŒ์˜ ์ž‘์—… ๋ถ„์„ - ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐ ์ธ๋ฉ”๋ชจ๋ฆฌ ์Šคํ† ๋ฆฌ์ง€

XNUMX์ฐจ ๋ณต์žก๋„๋Š” ์ข‹์ง€ ์•Š์ง€๋งŒ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ๊ตฌ์ถ•ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์„ธ๊ทธ๋จผํŠธ ํŠธ๋ฆฌ ๊ฐ€์ค‘์น˜์˜ ํ•ฉ๊ณ„. ๊นŠ์ด lg N์˜ ํŠธ๋ฆฌ๊ฐ€ ์–ป์–ด์ง€๋ฉฐ ๋ฆฌํ”„์—๋Š” ๋ณต์ œ ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ๊ณ  ๋‚˜๋จธ์ง€ ๋…ธ๋“œ์—๋Š” ํŠธ๋ฆฌ ๋ฃจํŠธ์˜ ๋ชจ๋“  ๊ฐ€์ค‘์น˜ ํ•ฉ๊ณ„๊นŒ์ง€ ๋ถ€๋ถ„ ํ•ฉ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ 0๋ถ€ํ„ฐ ๋ชจ๋“  ๊ฐ€์ค‘์น˜์˜ ํ•ฉ๊นŒ์ง€ ์ž„์˜์˜ ์ˆซ์ž๋ฅผ ์ƒ์„ฑํ•˜๊ณ  i๋ฒˆ์งธ ๋ณต์ œ๋ณธ์„ ์ฐพ์•„ ํŠธ๋ฆฌ์—์„œ ์ œ๊ฑฐํ•˜๊ณ  ๋‚˜๋จธ์ง€ ๋ณต์ œ๋ณธ์„ ์ฐพ๋Š” ์ ˆ์ฐจ๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ณต์žก๋„๋Š” O(N), i๋ฒˆ์งธ ๋ณต์ œ๋ณธ์„ ์ฐพ์•„ ํŠธ๋ฆฌ์—์„œ ์ œ๊ฑฐํ•˜๋Š” ๋ณต์žก๋„๋Š” O(lg N), K๊ฐœ ๋ณต์ œ๋ณธ์„ ์„ ํƒํ•˜๋Š” ๋ณต์žก๋„๋Š” O(N + K lg N) ~ O(N lg N) .

Hydra ํšŒ์˜ ์ž‘์—… ๋ถ„์„ - ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐ ์ธ๋ฉ”๋ชจ๋ฆฌ ์Šคํ† ๋ฆฌ์ง€

ํŠนํžˆ ํฐ K์˜ ๊ฒฝ์šฐ ์„ ํ˜• ๋กœ๊ทธ ๋ณต์žก๋„๊ฐ€ XNUMX์ฐจ ๋ณต์žก๋„๋ณด๋‹ค ์ข‹์Šต๋‹ˆ๋‹ค.

๋ฐ”๋กœ ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ ํ”„๋กœ์ ํŠธ์˜ ClusterClient ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ "ะ’ะพัั‚ะพะบ". (์—ฌ๊ธฐ์„œ ํŠธ๋ฆฌ๋Š” O(N lg N)๋กœ ๊ตฌ์„ฑ๋˜์ง€๋งŒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ตœ์ข… ๋ณต์žก๋„์—๋Š” ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)

์ž‘์—… 2. ์–ผ๋ฃฉ๋ง

์ž„์˜์˜ ์ƒ‰์ธํ™”๋˜์ง€ ์•Š์€ ํ•„๋“œ๋กœ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฌธ์„œ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ •๋ ฌํ•˜๊ธฐ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ œ์•ˆํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ํŒ€์€ ์ƒค๋”ฉ๋œ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด ๋ฌธ์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ์ž„๋ฌด๋ฅผ ๋งก๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ์›Œํฌ๋กœ๋“œ๋Š” ํฌ๊ธฐ M(๋ณดํ†ต N < 100 << M)์˜ ์ปฌ๋ ‰์…˜์—์„œ ์ž„์˜์˜(์ธ๋ฑ์‹ฑ๋˜์ง€ ์•Š์€) ์ˆซ์ž ํ•„๋“œ๋กœ ์ •๋ ฌ๋œ ์ƒ์œ„ N๊ฐœ์˜ ๋ฌธ์„œ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•ฝ๊ฐ„ ๋œ ์ผ๋ฐ˜์ ์ธ ์›Œํฌ๋กœ๋“œ๋Š” ์ƒ์œ„ S ๋ฌธ์„œ(S ~ N)๋ฅผ ๊ฑด๋„ˆ๋›ด ํ›„ ์ƒ์œ„ N์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ฟผ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ œ์•ˆํ•˜์‹ญ์‹œ์˜ค. ํ‰๊ท ์ ์ธ ๊ฒฝ์šฐ์™€ ์ตœ์•…์˜ ๊ฒฝ์šฐ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ Big O ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์‚ฐ ๋ณต์žก๋„๋ฅผ ์ถ”์ •ํ•ฉ๋‹ˆ๋‹ค.

์†”๋ฃจ์…˜ ๋ถ„์„(๋น„๋””์˜ค)

34:50๋ถ€ํ„ฐ ๋‹จ 6๋ถ„:


์†”๋ฃจ์…˜ ๋ถ„์„(ํ…์ŠคํŠธ)

ํ‘œ๋ฉด ์†”๋ฃจ์…˜: ๋ชจ๋“  ๋ฌธ์„œ ์ •๋ ฌ(์˜ˆ: ํ€ต ์ •๋ ฌ) ๊ทธ๋Ÿฐ ๋‹ค์Œ N+S ๋ฌธ์„œ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ •๋ ฌ์˜ ๋ณต์žก์„ฑ์€ ํ‰๊ท  O(M lg M), ์ตœ์•…์˜ ๊ฒฝ์šฐ O(M2)์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  M ๋ฌธ์„œ๋ฅผ ์ •๋ ฌํ•œ ๋‹ค์Œ ๊ทธ ์ค‘ ์ผ๋ถ€๋งŒ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ์ ์ž„์ด ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฌธ์„œ๋ฅผ ์ •๋ ฌํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋น ๋ฅธ ์„ ํƒ, ์›ํ•˜๋Š” ๋ฌธ์„œ์˜ N + S๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค(์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ์Œ). ์ด ๊ฒฝ์šฐ ๋ณต์žก๋„๋Š” ํ‰๊ท ์ ์œผ๋กœ O(M)์œผ๋กœ ๊ฐ์†Œํ•˜์ง€๋งŒ ์ตœ์•…์˜ ๊ฒฝ์šฐ๋Š” ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ํ›จ์”ฌ ๋” ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ๋ฐ”์ด๋„ˆ๋ฆฌ ํž™ ์ŠคํŠธ๋ฆฌ๋ฐ. ์ด ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ N+S ๋ฌธ์„œ๋Š” ์ตœ์†Œ ๋˜๋Š” ์ตœ๋Œ€ ํž™(์ •๋ ฌ ๋ฐฉํ–ฅ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„)์— ์ถ”๊ฐ€๋œ ๋‹ค์Œ ๊ฐ ํ›„์† ๋ฌธ์„œ๋Š” ํ˜„์žฌ ์ตœ์†Œ ๋˜๋Š” ์ตœ๋Œ€ ๋ฌธ์„œ๋ฅผ ํฌํ•จํ•˜๋Š” ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ์™€ ๋น„๊ต๋ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํŠธ๋ฆฌ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. . ์ด ๊ฒฝ์šฐ ํŠธ๋ฆฌ๋ฅผ ์ง€์†์ ์œผ๋กœ ์žฌ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋Š” ์ตœ์•…์˜ ๊ฒฝ์šฐ ๋ณต์žก๋„๋Š” O(M lg M)์ด๋ฉฐ, quickselect์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ‰๊ท  ๋ณต์žก๋„๋Š” O(M)์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ํž™ ์ŠคํŠธ๋ฆฌ๋ฐ์€ ์‹ค์ œ๋กœ ๋ฃจํŠธ ์š”์†Œ์™€ ํ•œ ๋ฒˆ ๋น„๊ตํ•œ ํ›„ ํž™์„ ๋‹ค์‹œ ๋นŒ๋“œํ•˜์ง€ ์•Š๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ๋ฌธ์„œ๋ฅผ ๋ฒ„๋ฆด ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋” ํšจ์œจ์ ์ธ ๊ฒƒ์œผ๋กœ ํŒ๋ช…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ •๋ ฌ์€ Kontur์—์„œ ๊ฐœ๋ฐœ ๋ฐ ์‚ฌ์šฉ๋˜๋Š” Zebra ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.

๊ณผ์ œ 3. ์ƒํƒœ ๊ตํ™˜

์ƒํƒœ ์ด๋™์„ ์œ„ํ•œ ๊ฐ€์žฅ ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ํŒ€์€ N ๋…ธ๋“œ์˜ ๋ถ„์‚ฐ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์œ„ํ•œ ๋ฉ‹์ง„ ์ƒํƒœ ๊ตํ™˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ฐœ๋ฐœํ•˜๋Š” ์ž„๋ฌด๋ฅผ ๋งก๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. i๋ฒˆ์งธ ๋…ธ๋“œ์˜ ์ƒํƒœ๋Š” (i+1)๋ฒˆ์งธ ๋…ธ๋“œ๋กœ, N๋ฒˆ์งธ ๋…ธ๋“œ์˜ ์ƒํƒœ๋Š” ์ฒซ๋ฒˆ์งธ ๋…ธ๋“œ๋กœ ์ „๋‹ฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์œ ์ผํ•˜๊ฒŒ ์ง€์›๋˜๋Š” ์ž‘์—…์€ ๋‘ ๋…ธ๋“œ๊ฐ€ ์›์ž์ ์œผ๋กœ ์ƒํƒœ๋ฅผ ๊ตํ™˜ํ•  ๋•Œ ์ƒํƒœ ๊ตํ™˜์ž…๋‹ˆ๋‹ค. ์ƒํƒœ ๊ตํ™˜์—๋Š” M๋ฐ€๋ฆฌ์ดˆ๊ฐ€ ์†Œ์š”๋˜๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋…ธ๋“œ๋Š” ์ฃผ์–ด์ง„ ์ˆœ๊ฐ„์— ๋‹จ์ผ ์ƒํƒœ ๊ตํ™˜์— ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ์— ์žˆ๋Š” ๋ชจ๋“  ๋…ธ๋“œ์˜ ์ƒํƒœ๋ฅผ ์ „์†กํ•˜๋Š” ๋ฐ ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ฆฝ๋‹ˆ๊นŒ?

์†”๋ฃจ์…˜ ๋ถ„์„(ํ…์ŠคํŠธ)

ํ‘œ๋ฉด ์†”๋ฃจ์…˜: ์ฒซ ๋ฒˆ์งธ์™€ ๋‘ ๋ฒˆ์งธ ์š”์†Œ์˜ ์ƒํƒœ๋ฅผ ๊ตํ™˜ํ•œ ๋‹ค์Œ ์ฒซ ๋ฒˆ์งธ์™€ ์„ธ ๋ฒˆ์งธ, ์ฒซ ๋ฒˆ์งธ์™€ ๋„ค ๋ฒˆ์งธ ๋“ฑ์˜ ์ƒํƒœ๋ฅผ ๊ตํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ ๊ตํ™˜ ํ›„ ํ•œ ์š”์†Œ์˜ ์ƒํƒœ๋Š” ์›ํ•˜๋Š” ์œ„์น˜์— ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. O(N) ์ˆœ์—ด์„ ๋งŒ๋“ค๊ณ  O(N M) ์‹œ๊ฐ„์„ ์†Œ๋น„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Hydra ํšŒ์˜ ์ž‘์—… ๋ถ„์„ - ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐ ์ธ๋ฉ”๋ชจ๋ฆฌ ์Šคํ† ๋ฆฌ์ง€

์„ ํ˜• ์‹œ๊ฐ„์€ ๊ธธ๊ธฐ ๋•Œ๋ฌธ์— ์ฒซ ๋ฒˆ์งธ์™€ ๋‘ ๋ฒˆ์งธ, ์„ธ ๋ฒˆ์งธ์™€ ๋„ค ๋ฒˆ์งธ ๋“ฑ ์Œ์œผ๋กœ ์š”์†Œ์˜ ์ƒํƒœ๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์ƒํƒœ ๊ตํ™˜ ํ›„ ๋ชจ๋“  ๋‘ ๋ฒˆ์งธ ์š”์†Œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜์— ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. O(lg N) ์ˆœ์—ด์„ ๋งŒ๋“ค๊ณ  O(M lg N) ์‹œ๊ฐ„์„ ๋ณด๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Hydra ํšŒ์˜ ์ž‘์—… ๋ถ„์„ - ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐ ์ธ๋ฉ”๋ชจ๋ฆฌ ์Šคํ† ๋ฆฌ์ง€

๊ทธ๋Ÿฌ๋‚˜ ์„ ํ˜•์ด ์•„๋‹ˆ๋ผ ์ผ์ •ํ•œ ์‹œ๊ฐ„์— ํ›จ์”ฌ ๋” ํšจ์œจ์ ์œผ๋กœ ๋ณ€์†์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒํ•˜๋ ค๋ฉด ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์—์„œ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์˜ ์ƒํƒœ๋ฅผ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋กœ, ๋‘ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๋์—์„œ ๋‘ ๋ฒˆ์งธ ์š”์†Œ๋กœ ๊ตํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ์š”์†Œ์˜ ์ƒํƒœ๋Š” ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜์— ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด์ œ ๋‘ ๋ฒˆ์งธ ์š”์†Œ์˜ ์ƒํƒœ๋ฅผ ๋งˆ์ง€๋ง‰ ์š”์†Œ์™€ ๊ตํ™˜ํ•˜๊ณ  ์„ธ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๋‘ ๋ฒˆ์งธ ์š”์†Œ์™€ ๊ตํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ตํ™˜ ๋ผ์šด๋“œ ํ›„์— ๋ชจ๋“  ์š”์†Œ์˜ ์ƒํƒœ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜์— ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด O(2M) ~ O(1) ์ˆœ์—ด์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Hydra ํšŒ์˜ ์ž‘์—… ๋ถ„์„ - ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐ ์ธ๋ฉ”๋ชจ๋ฆฌ ์Šคํ† ๋ฆฌ์ง€

๊ทธ๋Ÿฌํ•œ ํ•ด๊ฒฐ์ฑ…์€ ํšŒ์ „์ด ๋‘ ๊ฐœ์˜ ์ถ• ๋Œ€์นญ์˜ ๊ตฌ์„ฑ์ด๋ผ๋Š” ๊ฒƒ์„ ์—ฌ์ „ํžˆ ๊ธฐ์–ตํ•˜๋Š” ์ˆ˜ํ•™์ž์—๊ฒŒ๋Š” ์ „ํ˜€ ๋†€๋ผ์šด ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ๊ทธ๊ฒƒ์€ ํ•˜๋‚˜๊ฐ€ ์•„๋‹ˆ๋ผ K < N ์œ„์น˜๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์‚ฌ์†Œํ•˜๊ฒŒ ์ผ๋ฐ˜ํ™”๋ฉ๋‹ˆ๋‹ค. (์ •ํ™•ํžˆ ๋Œ“๊ธ€์— ์ ์–ด์ฃผ์„ธ์š”.)

ํผ์ฆ์„ ์ข‹์•„ํ–ˆ์Šต๋‹ˆ๊นŒ? ๋‹ค๋ฅธ ์†”๋ฃจ์…˜์„ ์•Œ๊ณ  ๊ณ„์‹ญ๋‹ˆ๊นŒ? ์˜๊ฒฌ์— ๊ณต์œ ํ•˜์‹ญ์‹œ์˜ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ๋ช‡ ๊ฐ€์ง€ ์œ ์šฉํ•œ ๋งํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€