๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ฒ€์ƒ‰(Search)๊ธฐ๋ฒ•

by 5566 2023. 8. 19.

1. ์ง์„  ๊ฒ€์ƒ‰ ๊ธฐ๋ฒ• (Linear Search)

์ง์„  ๊ฒ€์ƒ‰ ๊ธฐ๋ฒ•์€ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๊ณ  ์ง๊ด€์ ์ธ ๊ฒ€์ƒ‰ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ฃผ์–ด์ง„ ๋ชฉ๋ก ๋˜๋Š” ๋ฐฐ์—ด์—์„œ ์›ํ•˜๋Š” ๊ฐ’์„ ์ฐพ์„ ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์„ ํ˜• ๊ฒ€์ƒ‰์€ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋ฉฐ, ์›ํ•˜๋Š” ๊ฐ’์„ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ๊ณ„์† ๋ฐ˜๋ณตํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์ž‘๋™ ๋ฐฉ์‹

์ง์„  ๊ฒ€์ƒ‰์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹จ๊ณ„๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค:

  1. ๊ฒ€์ƒ‰ํ•˜๋ ค๋Š” ๊ฐ’๊ณผ ๋น„๊ตํ•  ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  2. ์„ ํƒํ•œ ์š”์†Œ์™€ ์›ํ•˜๋Š” ๊ฐ’์ด ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  3. ์ผ์น˜ํ•œ๋‹ค๋ฉด ๊ฒ€์ƒ‰์„ ์ข…๋ฃŒํ•˜๊ณ  ํ•ด๋‹น ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  4. ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋‹ค์Œ ์š”์†Œ๋ฅผ ์„ ํƒํ•˜๊ณ  ๋‹จ๊ณ„ 2๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.
  5. ๊ฒ€์ƒ‰ ๋Œ€์ƒ์ด ๋์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ๋‹จ๊ณ„ 2์—์„œ 4๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

์‹œ๊ฐ„ ๋ณต์žก๋„

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

์žฅ๋‹จ์ 

์ง์„  ๊ฒ€์ƒ‰์˜ ์ฃผ์š” ์žฅ์ ์€ ๊ฐ„๋‹จํ•˜๊ณ  ๊ตฌํ˜„์ด ์‰ฝ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ, ๊ฒ€์ƒ‰ ๋Œ€์ƒ์ด ์ด๋ฏธ ์ •๋ ฌ๋˜์–ด ์žˆ์ง€ ์•Š์•„๋„ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฒ€์ƒ‰ ๋Œ€์ƒ์˜ ํฌ๊ธฐ๊ฐ€ ๋งค์šฐ ํด ๊ฒฝ์šฐ ํšจ์œจ์„ฑ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ์—์„œ๋Š” ๋‹ค๋ฅธ ๊ฒ€์ƒ‰ ๊ธฐ๋ฒ•๋“ค๋ณด๋‹ค ํšจ์œจ์ด ๋‚ฎ์Šต๋‹ˆ๋‹ค.

์ง์„  ๊ฒ€์ƒ‰์€ ์ž‘์€ ํฌ๊ธฐ์˜ ๋ชฉ๋ก์ด๋‚˜ ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ์—์„œ ๊ฒ€์ƒ‰ํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ์—์„œ๋Š” ๋” ๋‚˜์€ ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

2. ์ด์ง„ ๊ฒ€์ƒ‰ ๊ธฐ๋ฒ• (Binary Search)

์ด์ง„ ๊ฒ€์ƒ‰ ๊ธฐ๋ฒ•์€ ์ •๋ ฌ๋œ ๋ฐฐ์—ด์—์„œ ํŠน์ • ๊ฐ’์„ ์ฐพ๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ๋ฐฐ์—ด์„ ์ ˆ๋ฐ˜์”ฉ ๋‚˜๋ˆ„์–ด ์ฐพ๋Š” ๊ฐ’๊ณผ ๋น„๊ตํ•˜๋ฉฐ, ๊ฒ€์ƒ‰ ๋Œ€์ƒ์˜ ํฌ๊ธฐ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ค„์—ฌ๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด์ง„ ๊ฒ€์ƒ‰์€ ์ง์„  ๊ฒ€์ƒ‰๋ณด๋‹ค ํšจ์œจ์ ์ด๋ฉฐ, ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ์—์„œ๋„ ๋น ๋ฅธ ๊ฒ€์ƒ‰์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ž‘๋™ ๋ฐฉ์‹

์ด์ง„ ๊ฒ€์ƒ‰์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹จ๊ณ„๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค:

  1. ๊ฒ€์ƒ‰ํ•˜๋ ค๋Š” ๊ฐ’๊ณผ ๋ฐฐ์—ด์˜ ์ค‘์•™ ์š”์†Œ๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
  2. ๋งŒ์•ฝ ์ค‘์•™ ์š”์†Œ๊ฐ€ ์ฐพ๋Š” ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋ฉด ๊ฒ€์ƒ‰์„ ์ข…๋ฃŒํ•˜๊ณ  ํ•ด๋‹น ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  3. ์ค‘์•™ ์š”์†Œ ๋ณด๋‹ค ์ฐพ๋Š” ๊ฐ’์ด ์ž‘๋‹ค๋ฉด, ์ค‘์•™ ๊ฐ’์˜ ์™ผ์ชฝ ์ ˆ๋ฐ˜์„ ๋Œ€์ƒ์œผ๋กœ ๋‹ค์‹œ ์ด์ง„ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ถ€ํ„ฐ ์ค‘์•™ ์š”์†Œ ์ด์ „์˜ ์š”์†Œ๊นŒ์ง€๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
  4. ์ค‘์•™ ์š”์†Œ ๋ณด๋‹ค ์ฐพ๋Š” ๊ฐ’์ด ํฌ๋‹ค๋ฉด, ์ค‘์•™ ๊ฐ’์˜ ์˜ค๋ฅธ์ชฝ ์ ˆ๋ฐ˜์„ ๋Œ€์ƒ์œผ๋กœ ๋‹ค์‹œ ์ด์ง„ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ค‘์•™ ์š”์†Œ ์ดํ›„์˜ ์š”์†Œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์š”์†Œ๊นŒ์ง€๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
  5. ๊ฒ€์ƒ‰ ๋Œ€์ƒ์„ ๊ณ„์† ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ„์–ด๊ฐ€๋ฉด์„œ ์›ํ•˜๋Š” ๊ฐ’์„ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ์œ„์˜ ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

์‹œ๊ฐ„ ๋ณต์žก๋„

์ด์ง„ ๊ฒ€์ƒ‰์€ ๋งค๋ฒˆ ๊ฒ€์ƒ‰ ๋Œ€์ƒ์˜ ํฌ๊ธฐ๋ฅผ ์ ˆ๋ฐ˜์œผ๋กœ ์ค„์ด๊ธฐ ๋•Œ๋ฌธ์— ํ‰๊ท ์ ์œผ๋กœ O(log n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ n์€ ๊ฒ€์ƒ‰ ๋Œ€์ƒ์˜ ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค. ์ด์ง„ ๊ฒ€์ƒ‰์€ ์ •๋ ฌ๋œ ๋ฐฐ์—ด์—์„œ๋งŒ ๋™์ž‘ํ•˜๋ฏ€๋กœ, ์ •๋ ฌ์— ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ์•ˆํ•ด์•ผ ํ•˜์ง€๋งŒ, ๊ฒ€์ƒ‰ ์‹œ๊ฐ„์€ ๋งค์šฐ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

์žฅ๋‹จ์ 

์ด์ง„ ๊ฒ€์ƒ‰์˜ ์ฃผ์š” ์žฅ์ ์€ ํšจ์œจ์ ์ธ ๊ฒ€์ƒ‰ ์†๋„์™€ ๋น ๋ฅธ ์‹คํ–‰ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ์ด์ง„ ๊ฒ€์ƒ‰์€ ๋ฐฐ์—ด์ด๋‚˜ ๋ชฉ๋ก์ด ์ •๋ ฌ๋˜์–ด ์žˆ์–ด์•ผ ํ•˜์ง€๋งŒ, ํ•œ ๋ฒˆ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ์‚ฝ์ž… ๋˜๋Š” ์‚ญ์ œ ์—ฐ์‚ฐ์ด ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์œ ์ง€ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์ด์ง„ ๊ฒ€์ƒ‰์€ ๋Œ€๊ทœ๋ชจ์˜ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ์—์„œ ๊ฐ€์žฅ ์œ ์šฉํ•˜๋ฉฐ, ๋‹ค๋ฅธ ๊ฒ€์ƒ‰ ๊ธฐ๋ฒ•๋“ค๋ณด๋‹ค ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ์„ ๋ณด์ž…๋‹ˆ๋‹ค.

3. ํ•ด์‹œ ๊ฒ€์ƒ‰ ๊ธฐ๋ฒ• (Hash Search)

ํ•ด์‹œ ๊ฒ€์ƒ‰ ๊ธฐ๋ฒ•์€ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•˜๋Š” ๋น ๋ฅธ ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๊ฐ’์„ ํ•ด์‹œ ํ…Œ์ด๋ธ”์— ์ €์žฅํ•˜๊ณ , ๊ฒ€์ƒ‰ ์‹œ์—๋Š” ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ๋‹ค์‹œ ์ ์šฉํ•˜์—ฌ ํ•ด๋‹น ๊ฐ’์„ ์ฐพ์Šต๋‹ˆ๋‹ค. ํ•ด์‹œ ๊ฒ€์ƒ‰์€ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ์— ์ƒ๊ด€์—†์ด ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ž‘๋™ ๋ฐฉ์‹

ํ•ด์‹œ ๊ฒ€์ƒ‰์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹จ๊ณ„๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค:

  1. ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒ€์ƒ‰ํ•  ๊ฐ’์˜ ํ•ด์‹œ ๊ฐ’์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
  2. ํ•ด๋‹น ํ•ด์‹œ ๊ฐ’์— ํ•ด๋‹นํ•˜๋Š” ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ๋ฒ„ํ‚ท์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ฒ„ํ‚ท์— ์ €์žฅ๋œ ๊ฐ’๊ณผ ๊ฒ€์ƒ‰ํ•  ๊ฐ’์ด ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  4. ์ผ์น˜ํ•œ๋‹ค๋ฉด ๊ฒ€์ƒ‰์„ ์ข…๋ฃŒํ•˜๊ณ  ํ•ด๋‹น ๊ฐ’์˜ ์œ„์น˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  5. ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ถฉ๋Œ(Collision)์ด ๋ฐœ์ƒํ•œ ๊ฒƒ์ธ์ง€ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  6. ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ์—๋Š” ๋‹ค๋ฅธ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•˜๊ฑฐ๋‚˜, ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๋“ฑ์˜ ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
  7. ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•œ ํ›„์— ๋‹ค์‹œ ๋‹จ๊ณ„ 3๋ถ€ํ„ฐ 6์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

์‹œ๊ฐ„ ๋ณต์žก๋„

ํ•ด์‹œ ๊ฒ€์ƒ‰์€ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์ˆ˜ ์‹œ๊ฐ„์— ๊ฒ€์ƒ‰ํ•  ๊ฐ’์„ ์ฐพ๊ธฐ ๋•Œ๋ฌธ์— ํ‰๊ท ์ ์œผ๋กœ O(1)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ•ด์‹œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์„ ํ˜• ๊ฒ€์ƒ‰ ๋˜๋Š” ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๋“ฑ์˜ ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”๊ฐ€์ ์ธ ๊ฒ€์ƒ‰ ์‹œ๊ฐ„์ด ์†Œ์š”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์žฅ๋‹จ์ 

ํ•ด์‹œ ๊ฒ€์ƒ‰์˜ ์ฃผ์š” ์žฅ์ ์€ ๋งค์šฐ ๋น ๋ฅธ ๊ฒ€์ƒ‰ ์†๋„์™€ ์ƒ์ˆ˜ ์‹œ๊ฐ„ ๋ณต์žก๋„์ž…๋‹ˆ๋‹ค. ํ•ด์‹œ ๊ฒ€์ƒ‰์€ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ์—์„œ๋„ ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋ฉฐ, ํ•ด์‹œ ํ•จ์ˆ˜์˜ ์ •ํ™•์„ฑ์— ๋”ฐ๋ผ ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ•ด์‹œ ํ•จ์ˆ˜ ์ถฉ๋Œ์˜ ๊ฐ€๋Šฅ์„ฑ๊ณผ ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ถ”๊ฐ€์ ์ธ ๊ณต๊ฐ„ ๋ฐ ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด์‹œ ๊ฒ€์ƒ‰์€ ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ๋งค์šฐ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ, ํ•ด์‹œ ์ถฉ๋Œ์„ ํšจ๊ณผ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด๋‚˜ ๋™์ ์ธ ๋ฐ์ดํ„ฐ์—๋Š” ๋ถ€์ ํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. ํŠธ๋ฆฌ ๊ฒ€์ƒ‰ ๊ธฐ๋ฒ• (Tree Search)

ํŠธ๋ฆฌ ๊ฒ€์ƒ‰ ๊ธฐ๋ฒ•์€ ํŠธ๋ฆฌ ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ„์ธต์ ์œผ๋กœ ๊ตฌ์„ฑํ•œ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ํƒ์ƒ‰ํ•˜๋ฉฐ, ์ ์ ˆํ•œ ๋…ธ๋“œ๋ฅผ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ํƒ์ƒ‰์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋ฆฌ ๊ฒ€์ƒ‰์€ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ํšจ๊ณผ์ ์ด๋ฉฐ, ๋‹ค์–‘ํ•œ ํŠธ๋ฆฌ ๊ตฌ์กฐ ์ค‘์—์„œ ์ฃผ๋กœ ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ž‘๋™ ๋ฐฉ์‹

ํŠธ๋ฆฌ ๊ฒ€์ƒ‰์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹จ๊ณ„๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค:

  1. ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ ๋…ธ๋“œ๋ถ€ํ„ฐ ๊ฒ€์ƒ‰ํ•˜๋ ค๋Š” ๊ฐ’๊ณผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
  2. ๊ฒ€์ƒ‰ํ•˜๋ ค๋Š” ๊ฐ’์ด ํ˜„์žฌ ๋…ธ๋“œ์˜ ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋ฉด ๊ฒ€์ƒ‰์„ ์ข…๋ฃŒํ•˜๊ณ  ํ•ด๋‹น ๋…ธ๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  3. ๊ฒ€์ƒ‰ํ•˜๋ ค๋Š” ๊ฐ’์ด ํ˜„์žฌ ๋…ธ๋“œ์˜ ๊ฐ’๋ณด๋‹ค ์ž‘๋‹ค๋ฉด, ํ˜„์žฌ ๋…ธ๋“œ์˜ ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ๋กœ ์ด๋™ํ•˜์—ฌ ๋‹ค์‹œ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  4. ๊ฒ€์ƒ‰ํ•˜๋ ค๋Š” ๊ฐ’์ด ํ˜„์žฌ ๋…ธ๋“œ์˜ ๊ฐ’๋ณด๋‹ค ํฌ๋‹ค๋ฉด, ํ˜„์žฌ ๋…ธ๋“œ์˜ ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๋กœ ์ด๋™ํ•˜์—ฌ ๋‹ค์‹œ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  5. ๊ฒ€์ƒ‰ํ•  ๊ฐ’์„ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ์œ„์˜ ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

์‹œ๊ฐ„ ๋ณต์žก๋„

ํŠธ๋ฆฌ ๊ฒ€์ƒ‰์€ ํŠธ๋ฆฌ์˜ ๋†’์ด์— ๋น„๋ก€ํ•˜๋Š” ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์ด์ง„ ํŠธ๋ฆฌ์—์„œ ํ‰๊ท ์ ์ธ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(log n)์ด๋ฉฐ, ํŠธ๋ฆฌ๊ฐ€ ๊ท ํ˜•์žˆ๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋„ O(log n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํŠธ๋ฆฌ๊ฐ€ ๋น„๊ท ํ˜•์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋Š” ๊ฒฝ์šฐ์—๋Š” ์ตœ์•…์˜ ๊ฒฝ์šฐ O(n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์žฅ๋‹จ์ 

ํŠธ๋ฆฌ ๊ฒ€์ƒ‰์˜ ์ฃผ์š” ์žฅ์ ์€ ๊ท ํ˜•์žกํžŒ ํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋งค์šฐ ํšจ๊ณผ์ ์ธ ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ ๋“ฑ์˜ ๊ท ํ˜• ์žกํžŒ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋Š” ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ์—์„œ ๋น ๋ฅธ ๊ฒ€์ƒ‰์„ ์ œ๊ณตํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๋„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํŠธ๋ฆฌ ๊ตฌ์กฐ ์œ ์ง€ ๋ฐ ํšŒ์ „ ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํŠธ๋ฆฌ ๊ฒ€์ƒ‰์€ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ์—์„œ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ์— ํšจ๊ณผ์ ์ด๋ฉฐ, ์‚ฝ์ž… ๋ฐ ์‚ญ์ œ ์—ฐ์‚ฐ๋„ ๋น ๋ฅธ ์†๋„๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด๋‚˜ ๊ณ„์ธต์ ์ธ ์ •๋ณด๋ฅผ ํƒ์ƒ‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

5. ๊ทธ๋ž˜ํ”„ ๊ฒ€์ƒ‰ ๊ธฐ๋ฒ• (Graph Search)

๊ทธ๋ž˜ํ”„ ๊ฒ€์ƒ‰ ๊ธฐ๋ฒ•์€ ๊ทธ๋ž˜ํ”„ ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”„๋Š” ์ •์ (Vertex)๋“ค๊ณผ ์ด๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ„์„ (Edge)๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๊ทธ๋ž˜ํ”„ ๊ฒ€์ƒ‰์€ ์ •์ ๋“ค์„ ํƒ์ƒ‰ํ•˜์—ฌ ์›ํ•˜๋Š” ๊ฐ’์„ ์ฐพ๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”„ ๊ฒ€์ƒ‰์€ ๋งŽ์€ ๋ฌธ์ œ์— ํ™œ์šฉ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋Œ€ํ‘œ์ ์ธ ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ๋Š” ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(DFS)๊ณผ ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(BFS)์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ž‘๋™ ๋ฐฉ์‹

  • ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(DFS): ํ•œ ์ •์ ์œผ๋กœ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ์—ฐ๊ฒฐ๋œ ์ •์ ์„ ์ตœ๋Œ€ํ•œ ๊นŠ๊ฒŒ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์Šคํƒ(Stack) ๋˜๋Š” ์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    1. ์‹œ์ž‘ ์ •์ ์„ ์Šคํƒ์— ๋„ฃ๊ณ  ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    2. ์Šคํƒ์—์„œ ์ •์ ์„ ๊บผ๋‚ด ์—ฐ๊ฒฐ๋œ ์ •์  ์ค‘ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ •์ ์„ ์Šคํƒ์— ๋„ฃ๊ณ  ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    3. ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜์—ฌ ์Šคํƒ์ด ๋น„์–ด์งˆ ๋•Œ๊นŒ์ง€ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(BFS): ํ•œ ์ •์ ์œผ๋กœ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ์ธ์ ‘ํ•œ ๋ชจ๋“  ์ •์ ์„ ์šฐ์„ ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ํ(Queue)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    1. ์‹œ์ž‘ ์ •์ ์„ ํ์— ๋„ฃ๊ณ  ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    2. ํ์—์„œ ์ •์ ์„ ๊บผ๋‚ด ์—ฐ๊ฒฐ๋œ ์ •์ ์„ ํ์— ๋„ฃ๊ณ  ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    3. ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜์—ฌ ํ๊ฐ€ ๋น„์–ด์งˆ ๋•Œ๊นŒ์ง€ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์‹œ๊ฐ„ ๋ณต์žก๋„

๊ทธ๋ž˜ํ”„ ๊ฒ€์ƒ‰์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ์ •์ ์˜ ๊ฐœ์ˆ˜๋ฅผ V, ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜๋ฅผ E๋ผ๊ณ  ํ•  ๋•Œ, ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(DFS)๊ณผ ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(BFS)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ๋ชจ๋‘ O(V+E)์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์ •์ ๊ณผ ๊ฐ„์„ ์„ ํ•œ ๋ฒˆ์”ฉ ๋ฐฉ๋ฌธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์•…์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ์ •์ ๊ณผ ๊ฐ„์„ ์„ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์žฅ๋‹จ์ 

๊ทธ๋ž˜ํ”„ ๊ฒ€์ƒ‰์˜ ์žฅ์ ์€ ๊ทธ๋ž˜ํ”„ ์ž๋ฃŒ ๊ตฌ์กฐ์˜ ์œ ์—ฐ์„ฑ๊ณผ ๋‹ค์–‘ํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋Œ€์‘๋ ฅ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”„ ๊ฒ€์ƒ‰์€ ๊ฒฝ๋กœ์˜ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ฑฐ๋‚˜, ์—ฐ๊ฒฐ๋œ ์ •์ ๋“ค์„ ํƒ์ƒ‰ํ•˜๋Š” ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฌธ์ œ์— ํ™œ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋ž˜ํ”„์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง€๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ฆ๊ฐ€ํ•˜๊ณ , ํ˜น์€ ๊ทธ๋ž˜ํ”„์˜ ๊ตฌ์กฐ์— ๋”ฐ๋ผ ํƒ์ƒ‰ ์‹œ๊ฐ„์ด ์ง€์—ฐ๋  ์ˆ˜ ์žˆ๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ๊ทธ๋ž˜ํ”„์—์„œ ์‚ฌ์ดํด์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฌดํ•œ ๋ฃจํ”„์— ๋น ์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€