Jieunny์˜ ๋ธ”๋กœ๊ทธ

S4) Unit 1. [์ž๋ฃŒ๊ตฌ์กฐ/ ์•Œ๊ณ ๋ฆฌ์ฆ˜] Tree & Graph ๋ณธ๋ฌธ

CodeStates/learning contents

S4) Unit 1. [์ž๋ฃŒ๊ตฌ์กฐ/ ์•Œ๊ณ ๋ฆฌ์ฆ˜] Tree & Graph

Jieunny 2023. 3. 15. 12:00

๐Ÿ“ฃ  Tree ๋ž€?

๐Ÿญ. Tree์˜ ์ •์˜

โœ”๏ธ ๊ณ„์ธต์ ์ธ ์ž๋ฃŒ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐ ์ด์šฉ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
โžฐ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ์•„๋ž˜์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋Š” ๋น„์„ ํ˜• ๊ตฌ์กฐ
โžฐ ์•„๋ž˜๋กœ๋งŒ ๋ป—์–ด๋‚˜๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์ดํด(์‹œ์ž‘ ๋…ธ๋“œ์—์„œ ์ถœ๋ฐœํ•ด ๋‹ค๋ฅธ ๋…ธ๋“œ๋ฅผ ๊ฑฐ์ณ ์‹œ์ž‘ ๋…ธ๋“œ๋กœ ๋Œ์•„์˜ค๋Š” ๊ฒƒ)์ด ์—†๋Š” ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„
 

๐Ÿฎ. Tree์˜ ๊ตฌ์กฐ์™€ ํŠน์ง•

โžฐ ๋ฃจํŠธ๋ผ๋Š” ํ•˜๋‚˜์˜ ๊ผญ์ง“์  ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ์ž‘์œผ๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ„์„ (edge)๋กœ ์—ฐ๊ฒฐํ•œ๋‹ค.
โžฐ ๊ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋…ธ๋“œ(Nodee)๋ผ๊ณ  ํ•˜๋ฉฐ, ๋‘ ๊ฐœ์˜ ๋…ธ๋“œ๊ฐ€ ์ƒํ•˜ ๊ณ„์ธต์œผ๋กœ ์—ฐ๊ฒฐ๋˜๋ฉด ๋ถ€๋ชจ(Parent Node)/ ์ž์‹(Child Node) ๊ด€๊ณ„๋ฅผ ๋งบ๋Š”๋‹ค.
โžฐ ์ž์‹์ด ์—†๋Š” ๋…ธ๋“œ๋Š” ๋ฆฌํ”„ ๋…ธ๋“œ(Leaf Node)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
 
1๏ธโƒฃ ๊นŠ์ด(Depth)
โžฐ ๋ฃจํŠธ๋กœ๋ถ€ํ„ฐ ํ•˜์œ„ ๊ณ„์ธต์˜ ํŠน์ • ๋…ธ๋“œ๊นŒ์ง€์˜ ๊นŠ์ด๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋ฃจํŠธ ๋…ธ๋“œ๋Š” ๊นŠ์ด๋ฅผ 0์œผ๋กœ ๋‘๊ณ  ์œ„ ๊ทธ๋ฆผ์—์„œ ๋ฃจํŠธ A์˜ ๊นŠ์ด๋Š” 0์ด๊ณ , B์™€ C์˜ ๊นŠ์ด๋Š” 1์ด๋‹ค.
 
2๏ธโƒฃ ๋†’์ด(Height)
โžฐ ๋ฆฌํ”„ ๋…ธ๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฃจํŠธ๊นŒ์ง€์˜ ๋†’์ด๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋ฆฌํ”„ ๋…ธ๋“œ์™€ ์ง๊ฐ„์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ์˜ ๋†’์ด๋ฅผ ํ‘œํ˜„ํ•˜๋ฉฐ, ๋ถ€๋ชจ ๋…ธ๋“œ๋Š” ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐ€์žฅ ๋†’์€ ๋†’์ด ๊ฐ’์— +1ํ•œ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค.
โžฐ ๋ฆฌํ”„ ๋…ธ๋“œ์˜ ๋†’์ด๋ฅผ 0์œผ๋กœ ๋‘๊ณ  ์œ„ ๊ทธ๋ฆผ์—์„œ H, I, E, F, J์˜ ๋†’์ด๋Š” 0์ด๋‹ค -> ์ž์‹์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌํ”„ ๋…ธ๋“œ์ด๋‹ค.
โžฐ D์™€ G์˜ ๋†’์ด๋Š” 1์ด๊ณ , B์™€ C์˜ ๋†’์ด๋Š” 2์ด๋‹ค -> ์ด๋•Œ, B๋Š” D์˜ ๋†’์ด + 1, C๋Š” G์˜ ๋†’์ด + 1์„ ๋†’์ด๋กœ ๊ฐ€์ง„๋‹ค.
โžฐ ๋ฃจํŠธ A์˜ ๋†’์ด๋Š” 3์ด๋‹ค.
 
3๏ธโƒฃ ๋ ˆ๋ฒจ(Level)
โžฐ ํŠธ๋ฆฌ ๊ตฌ์กฐ์—์„œ ๊ฐ™์€ ๊นŠ์ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋…ธ๋“œ๋ฅผ ๋ฌถ์–ด์„œ ๋ ˆ๋ฒจ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
โžฐ ๊นŠ์ด๊ฐ€ 0์ธ ๋ฃจํŠธ A์˜ ๋ ˆ๋ฒจ์€ 1, ๊นŠ์ด๊ฐ€ 1์ธ B์™€ C์˜ ๋ ˆ๋ฒจ์€ 2์ด๋‹ค.
โžฐ D, E, F, G์˜ ๋ ˆ๋ฒจ์€ 3์ด๋‹ค.
โžฐ ๊ฐ™์€ ๋ ˆ๋ฒจ์— ์žˆ๋Š” ๋…ธ๋“œ๋ฅผ ํ˜•์ œ ๋…ธ๋“œ(Sibling Node)๋ผ๊ณ  ํ•œ๋‹ค.
 

๐Ÿฏ. Tree์˜ ์‹ค์‚ฌ์šฉ ์˜ˆ์ œ

โœ”๏ธ ์ปดํ“จํ„ฐ์˜ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ
โžฐ ๋ชจ๋“  ํด๋”๋Š” ํ•˜๋‚˜์˜ ํด๋”(๋ฃจํŠธ ํด๋”, /)์—์„œ ์‹œ์ž‘๋˜์–ด ๊ฐ€์ง€๋ฅผ ๋ป—์–ด๋‚˜๊ฐ€๋Š” ๋ชจ์–‘์ƒˆ๋ฅผ ๋ˆ๋‹ค.
โžฐ ์‚ฌ์šฉ์ž๋“ค์ด ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํŒŒ์ผ ์‹œ์Šคํ…œ์€ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•ด์„œ ๋งŒ๋“ค์–ด์ ธ ์žˆ๋‹ค.


๐Ÿ“ฃ  ์ด์ง„ ํŠธ๋ฆฌ(Binary Tree)

๐Ÿญ. Binary Tree์˜ ์ •์˜

โœ”๏ธ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์ตœ๋Œ€ ๋‘ ๊ฐœ์ธ ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋œ ํŠธ๋ฆฌ (์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ, ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ)
 

๐Ÿฎ. Binary Tree์˜ ํŠน์ง•

1๏ธโƒฃ ์ • ์ด์ง„ ํŠธ๋ฆฌ(Full binary tree) : ๊ฐ ๋…ธ๋“œ๊ฐ€ 0๊ฐœ ํ˜น์€ 2๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ–๋Š”๋‹ค.
2๏ธโƒฃ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ(Complete binary tree) : ๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ๊ฐ€๋“ ์ฐจ ์žˆ์–ด์•ผ ํ•˜๊ณ , ๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ์˜ ๋…ธ๋“œ๋Š” ์ „๋ถ€ ์ฐจ ์žˆ์ง€ ์•Š์•„๋„ ๋˜์ง€๋งŒ ์™ผ์ชฝ์ด ์ฑ„์›Œ์ ธ์•ผ ํ•œ๋‹ค.
3๏ธโƒฃ ํฌํ™” ์ด์ง„ ํŠธ๋ฆฌ(Perfect binary tree) : ์ • ์ด์ง„ ํŠธ๋ฆฌ์ด๋ฉด์„œ ์™„์ „ ์ด์ง„ํŠธ๋ฆฌ์ธ ๊ฒฝ์šฐ๋กœ, ๋ชจ๋“  ๋ฆฌํ”„ ๋…ธ๋“œ์˜ ๋ ˆ๋ฒจ์ด ๋™์ผํ•˜๊ณ  ๋ชจ๋“  ๋ ˆ๋ฒจ์ด ๊ฐ€๋“ ์ฑ„์›Œ์ ธ ์žˆ๋Š” ํŠธ๋ฆฌ์ด๋‹ค.


๐Ÿ“ฃ  ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ(Binary Search Tree) ๋ž€?

๐Ÿญ. ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ์ •์˜

โœ”๏ธ ์ด์ง„ ํƒ์ƒ‰์˜ ์†์„ฑ์ด ์ด์ง„ ํŠธ๋ฆฌ์— ์ ์šฉ๋œ ํŠน๋ณ„ํ•œ ํ˜•ํƒœ์˜ ์ด์ง„ ํŠธ๋ฆฌ
โœš ์ด์ง„ ํƒ์ƒ‰์ด๋ž€?

๋”๋ณด๊ธฐ

โœ”๏ธ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ ์ค‘์—์„œ ํŠน์ •ํ•œ ๊ฐ’์„ ์ฐพ๊ธฐ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜

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

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

โžฐ ๋ฃจํŠธ ๋…ธ๋“œ๋Š” ์ด์ง„ ํƒ์ƒ‰์—์„œ ๋ฆฌ์ŠคํŠธ์˜ ์ค‘๊ฐ„๊ฐ’์ด ๋œ๋‹ค.
โžฐ ๊ฐ ๋…ธ๋“œ์— ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ํ‚ค๊ฐ€ ์žˆ๋‹ค.
โžฐ ๋ฃจํŠธ ๋…ธ๋“œ์˜ ์™ผํŽธ ์„œ๋ธŒ ํŠธ๋ฆฌ์˜ ๊ฐ’๋“ค์€ ๋ชจ๋‘ ๋ฃจํŠธ ๋…ธ๋“œ์˜ ๊ฐ’๋ณด๋‹ค ์ž‘์€ ๊ฐ’๋“ค์ด ์žˆ๊ณ , ์˜ค๋ฅธํŽธ ์„œ๋ธŒ ํŠธ๋ฆฌ์˜ ๊ฐ’๋“ค์€ ๋ฃจํŠธ ๋…ธ๋“œ์˜ ๊ฐ’๋ณด๋‹ค ํฐ ๊ฐ’๋“ค์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
โžฐ ์ขŒ์šฐ ์„œ๋ธŒ ํŠธ๋ฆฌ ๋ชจ๋‘ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์—ฌ์•ผ ํ•œ๋‹ค.
 

๐Ÿฎ. ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ ํŠน์ง•

1๏ธโƒฃ ๊ธฐ์กด ์ด์ง„ ํŠธ๋ฆฌ๋ณด๋‹ค ํƒ์ƒ‰์ด ๋น ๋ฅด๋‹ค(์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ๋†’์ด๊ฐ€ h์ธ ๊ฒฝ์šฐ O(h) ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š”๋‹ค)
โœš ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ํƒ์ƒ‰ ๊ณผ์ •

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

=> 5๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด 3ํšŒ ํƒ์ƒ‰ ์ง„ํ–‰


๐Ÿ“ฃ  ํŠธ๋ฆฌ ์ˆœํšŒ๋ž€?

๐Ÿญ. ํŠธ๋ฆฌ ์ˆœํšŒ์˜ ์ •์˜

โœ”๏ธ ํŠน์ • ๋ชฉ์ ์„ ์œ„ํ•ด ํŠธ๋ฆฌ์˜ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํ•œ ๋ฒˆ์”ฉ ๋ฐฉ๋ฌธํ•˜๋Š” ๊ฒƒ
 

๐Ÿฎ . ํŠธ๋ฆฌ ์ˆœํšŒ์˜ ๋ฐฉ๋ฒ•

1๏ธโƒฃ ์ „์œ„ ์ˆœํšŒ(Preorder Traverse)
โœ”๏ธ ๋ฃจํŠธ -> ์™ผ์ชฝ์— ์žˆ๋Š” ๋ชจ๋“  ๋…ธ๋“œ -> ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ๋ชจ๋“  ๋…ธ๋“œ (๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ์ œ์ผ ๋จผ์ € ๋ฐฉ๋ฌธ ๋˜๋Š” ์ˆœํšŒ)
โžฐ A -> B -> D -> H -> I -> E -> J -> K -> C -> F -> ...
โžฐ ์ฃผ๋กœ ํŠธ๋ฆฌ๋ฅผ ๋ณต์‚ฌํ•  ๋•Œ ์‚ฌ์šฉ
 
2๏ธโƒฃ ์ค‘์œ„ ์ˆœํšŒ(Inorder Traverse)
โœ”๏ธ ๋ฃจํŠธ๋ฅผ ๊ฐ€์šด๋ฐ์— ๋‘๊ณ , ์ œ์ผ ์™ผ์ชฝ ๋์— ์žˆ๋Š” ๋…ธ๋“œ๋ถ€ํ„ฐ ์ˆœํšŒํ•˜๊ธฐ ์‹œ์ž‘ํ•ด์„œ ๋๋‚˜๋ฉด ๋ฃจํŠธ๋ฅผ ๊ฑฐ์ณ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰
โžฐ H -> D -> I -> B -> J -> E -> K -> A -> L -> F -> M -> C -> ...
โžฐ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉ
 
3๏ธโƒฃ ํ›„์œ„ ์ˆœํšŒ(Postorder Traverse)
โœ”๏ธ ๋ฃจํŠธ๋ฅผ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์œผ๋กœ ์ˆœํšŒํ•˜๋ฉฐ, ์ œ์ผ ์™ผ์ชฝ ๋์— ์žˆ๋Š” ๋…ธ๋“œ ๋ถ€ํ„ฐ ์ˆœํšŒํ•˜๊ธฐ ์‹œ์ž‘ํ•ด์„œ ๋ฃจํŠธ๋ฅผ ๊ฑฐ์น˜์น˜ ์•Š๊ณ  ์˜ค๋ฅธ์ชฝ ๋…ธ๋“œ๋ฅผ ์ˆœํšŒํ•œ ๋’ค ๋ฃจํŠธ๋ฅผ ๋ฐฉ๋ฌธํ•œ๋‹ค.
โžฐ H -> I -> D -> J -> K -> E -> B -> L -> M -> F -> ... -> A
โžฐ ํŠธ๋ฆฌ๋ฅผ ์‚ญ์ œํ•  ๋•Œ ์‚ฌ์šฉ
 
4๏ธโƒฃ ๋ ˆ๋ฒจ ์ˆœํšŒ(Levelorder Traverse)
โœ”๏ธ ๋ฃจํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ˆœํšŒํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ํŠธ๋ฆฌ์˜ ๋ ˆ๋ฒจ ๊ธฐ์ค€์œผ๋กœ ๋…ธ๋“œ๋“ค์„ ๋ฐฉ๋ฌธ
โžฐ A -> B -> C -> D -> E-> F -> G ... -> O


๐Ÿ“ฃ  Graph ๋ž€?

๐Ÿญ. Graph์˜ ์ •์˜

โœ”๏ธ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ ์ด ์„œ๋กœ ๋ณต์žกํ•˜๊ฒŒ ์—ฐ๊ฑธ๋œ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ

๐Ÿฎ. Graph์˜ ๊ตฌ์กฐ

โžฐ ์ง์ ‘์ ์ธ ๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋‘ ์  ์‚ฌ์ด๋ฅผ ์ด์–ด์ฃผ๋Š” ์„ ์ด ์žˆ๋‹ค.
โžฐ ๊ฐ„์ ‘์ ์ธ ๊ด€๊ฒŒ๋ผ๋ฉด ๋ช‡ ๊ฐœ์˜ ์ ๊ณผ ์„ ์— ๊ฑธ์ณ ์ด์–ด์ง„๋‹ค.
โžฐ ํ•˜๋‚˜์˜ ์ ์„ ๊ทธ๋ž˜ํ”„์—์„œ๋Š” ์ •์ (vertex)๋ผ๊ณ  ํ•˜๊ณ , ํ•˜๋‚˜์˜ ์„ ์€ ๊ฐ„์„ (edge)๋ผ๊ณ  ํ•œ๋‹ค.
 

๐Ÿฏ. Graph์˜ ํ‘œํ˜„ ๋ฐฉ์‹

1๏ธโƒฃ ์ธ์ ‘ ํ–‰๋ ฌ 
โœ”๏ธ ๋‘ ์ •์ ์„ ์ด์–ด์ฃผ๋Š” ๊ฐ„์„ ์ด ์žˆ๋‹ค๋ฉด ์ด ๋‘ ์ •์ ์€ ์ธ์ ‘ํ•˜๋‹ค๋ผ๊ณ  ์ด์•ผ๊ธฐํ•œ๋‹ค.
โžฐ ์ธ์ ‘ ํ–‰๋ ฌ์€ ์„œ๋กœ ๋‹ค๋ฅธ ์ •์ ๋“ค์ด ์ธ์ ‘ํ•œ ์ƒํƒœ์ธ์ง€๋ฅผ ํ‘œ์‹œํ•œ 2์ฐจ์› ๋ฐฐ์—ด์ด๋‹ค.
โžฐ ์ด์–ด์ ธ ์žˆ๋‹ค๋ฉด 1, ์—†๋‹ค๋ฉด 0์œผ๋กœ ํ‘œ์‹œํ•œ๋‹ค.
โžฐ ์ด ์œ„ ๊ทธ๋ฆผ์—์„œ A์˜ ์ง„์ถœ์ฐจ์ˆ˜๋Š” 1๊ฐœ์ด๋‹ค.
    ใ„ด [0][2] === 1
โžฐ B์˜ ์ง„์ถœ์ฐจ์ˆ˜๋Š” 2๊ฐœ์ด๋‹ค.
    ใ„ด [1][0] === 1
    ใ„ด [1][2] === 1
 
โœ”๏ธ ๋‘ ์ •์  ์‚ฌ์ด์˜ ๊ด€๊ณ„ ์œ ๋ฌด๋ฅผ ํ™•์ธํ•˜๊ธฐ์— ์šฉ์ดํ•˜๋ฉฐ, ๊ฐ€์žฅ ๋น ๋ฅธ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๊ณ ์ž ํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
 
2๏ธโƒฃ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ
โœ”๏ธ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋Š” ๊ฐ ์ •์ ์ด ์–ด๋–ค ์ •์ ‘๊ณผ ์ธ์ ‘ํ•˜๋Š”์ง€๋ฅผ ๋ฆฌ์ŠคํŠธ์˜ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•œ๋‹ค.
โžฐ ๊ฐ ์ •์ ๋งˆ๋‹ค ํ•˜๋‚˜์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ์ด ๋ฆฌ์ŠคํŠธ๋Š” ์ž์‹ ๊ณผ ์ธ์ ‘ํ•œ ๋‹ค๋ฅธ ์ •์ ์„ ๋‹ด๊ณ  ์žˆ๋‹ค.

์œ„ ๊ทธ๋ฆผ์˜ ์ธ์ ‘๋ฆฌ์ŠคํŠธ

 
โžฐ B์—๋Š” ๊ฐ„์„ ์ด 2๊ฐœ๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ, ์–ด๋””๋ฅผ ๋จผ์ € ์ ๋Š”์ง€๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค.
 
โœ”๏ธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค(์ธ์ ‘ ํ–‰๋ ฌ์€ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋Œ€์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งŽ์ด ์ฐจ์ง€ํ•œ๋‹ค)
 

๐Ÿฐ. Graph์˜ ์‹ค์‚ฌ์šฉ ์˜ˆ์ œ

โœ”๏ธ ํฌํ„ธ ์‚ฌ์ดํŠธ์˜ ๊ฒ€์ƒ‰ ์—”์ง„, SNS์—์„œ ์‚ฌ๋žŒ๋“ค๊ณผ์˜ ๊ด€๊ณ„, ๋‚ด๋น„๊ฒŒ์ด์…˜ ๋“ฑ 
โžฐ ๋ชจ๋“  ์˜ˆ์‹œ๊ฐ€ ์ˆ˜ ๋งŽ์€ ์ •์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ์„œ๋กœ ๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” ์ •์ ์€ ๊ฐ„์„ ์œผ๋กœ ์ด์–ด์ ธ ์žˆ๋‹ค.
โžฐ ๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„(ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๋” ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋” ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ“ฃ  BFS & DFS

๐Ÿญ. BFS(Breadth-First Search)

โœ”๏ธ ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(deep์ด ์•„๋‹Œ wideํ•˜๊ฒŒ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•)
โžฐ ๋ฃจํŠธ ๋…ธ๋“œ(ํ˜น์€ ๋‹ค๋ฅธ ์ž„์˜์˜ ๋…ธ๋“œ)์—์„œ ์‹œ์ž‘ํ•ด์„œ ์ธ์ ‘ํ•œ ๋…ธ๋“œ๋ฅผ ๋จผ์ € ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•
โžฐ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

๐Ÿฎ. DFS(Depth-First Search)

โœ”๏ธ ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(wide๊ฐ€ ์•„๋‹Œ deepํ•˜๊ฒŒ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•)
โžฐ ํ•˜๋‚˜์˜ ๊ฒฝ๋กœ๋ฅผ ๋๊นŒ์ง€ ํƒ์ƒ‰ํ•œ ํ›„, ์•„๋‹ˆ๋ผ๋ฉด ๋‹ค์Œ ๊ฒฝ๋กœ๋กœ ๋„˜์–ด๊ฐ€ ํƒ์ƒ‰ํ•œ๋‹ค.