๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Frontend Dev/๐Ÿฅ ์ฝ”๋“œ์Šคํ…Œ์ด์ธ  FE ๋ถ€ํŠธ์บ ํ”„

Section4 Unit1 [์ž๋ฃŒ๊ตฌ์กฐ/์•Œ๊ณ ๋ฆฌ์ฆ˜] ๊ธฐ์ดˆ - Tree, Graph

๋ฐ˜์‘ํ˜•


Section4 Unit1 [์ž๋ฃŒ๊ตฌ์กฐ/์•Œ๊ณ ๋ฆฌ์ฆ˜] ๊ธฐ์ดˆ - Tree, Graph

 

๐Ÿ“Œ Chapter3. Tree์™€ Graph

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

 ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋ž˜ํ”„๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ๋Œ€ํ‘œ์ ์ธ ๋‘ ๊ฐ€์ง€์ธ BFS์™€ DFS๋„ ์‰ฝ์ง€ ์•Š์•˜๋‹ค. ์—ฌ๋Ÿฌ๋ฒˆ ๊ธ€์„ ์ฝ๋‹ค๋ณด๋‹ˆ ์ดํ•ด๋Š” ๋˜์—ˆ๋Š”๋ฐ, ์ด๊ฑธ ๋‚ด๊ฐ€ ์‘์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ?

 

 Tree๋Š” ๊ทธ๋ž˜ํ”„์˜ ์—ฌ๋Ÿฌ ๊ตฌ์กฐ ์ค‘ ๋‹จ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์˜ ํ•œ ๊ตฌ์กฐ๋กœ, ํ•˜๋‚˜์˜ ๋ฟŒ๋ฆฌ๋กœ๋ถ€ํ„ฐ ๊ฐ€์ง€๊ฐ€ ์‚ฌ๋ฐฉ์œผ๋กœ ๋ป—์€ ํ˜•ํƒœ๊ฐ€ ๋‚˜๋ฌด์™€ ๋‹ฎ์•˜๋‹ค๊ณ  ํ•ด์„œ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ๋‚˜์—ด์‹œํ‚จ ์„ ํ˜• ๊ตฌ์กฐ๊ฐ€ ์•„๋‹ˆ๋ผ, ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ์•„๋ž˜์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋Š” ๋น„์„ ํ˜• ๊ตฌ์กฐ์ด๋‹ค.

 ํŠธ๋ฆฌ ๊ตฌ์กฐ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”๋กœ ์•„๋ž˜์— ์žˆ๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ์— ํ•œ ๊ฐœ์˜ ๊ฒฝ๋กœ์™€ ํ•˜๋‚˜์˜ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์—ฐ๊ฒฐ๋œ ๊ณ„์ธต์  ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

  → ์‹œ์ž‘ ๋…ธ๋“œ์—์„œ ์ถœ๋ฐœํ•ด ๋‹ค๋ฅธ ๋…ธ๋“œ๋ฅผ ๊ฑฐ์ณ ์‹œ์ž‘ ๋…ธ๋“œ๋กœ ๋Œ์•„์˜ฌ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์‚ฌ์ดํด์ด ์กด์žฌํ•œ๋‹ค๊ณ  ํ‘œํ˜„ํ•˜๋Š”๋ฐ, ํŠธ๋ฆฌ ๊ตฌ์กฐ๋Š” ๊ณ„์ธต์ ์œผ๋กœ ํ‘œํ˜„์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์ดํด(cycle)์ด ์—†๋‹ค.

ํŠธ๋ฆฌ๋Š” ์‚ฌ์ดํด(cycle)์ด ์—†๋Š” ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„(Connected Graph)๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Graph๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ ์ด ์„œ๋กœ ๋ณต์žกํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋œ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

์ง์ ‘์ ์ธ ๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋‘ ์  ์‚ฌ์ด๋ฅผ ์ด์–ด์ฃผ๋Š” ์„ ์ด ์žˆ๋‹ค.

 ๊ฐ„์ ‘์ ์ธ ๊ด€๊ณ„๋ผ๋ฉด ๋ช‡ ๊ฐœ์˜ ์ ๊ณผ ์„ ์— ๊ฑธ์ณ ์ด์–ด์ง„๋‹ค.

 ํ•˜๋‚˜์˜ ์ ์„ ๊ทธ๋ž˜ํ”„์—์„œ๋Š” ์ •์ (vertex)์ด๋ผ๊ณ  ํ‘œํ˜„ํ•˜๊ณ , ํ•˜๋‚˜์˜ ์„ ์€ ๊ฐ„์„ (edge)์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

โœ๏ธ ์—ฐ์Šต๋ฌธ์ œ.

 ์ด๋ฒˆ ์—ฐ์Šต๋ฌธ์ œ๋Š” Tree์™€ Graph์— ๊ด€๋ จ๋œ 7๊ฐœ์˜ ๋ฌธ์ œ์˜€๋‹ค. ์ด๋ฒˆ์—๋Š” ์ง„์งœ ํ•˜๋‚˜๋„ ์ œ๋Œ€๋กœ ๋ชปํ’€๊ณ , ์†๋†“์•„๋ฒ„๋ ธ๋‹ค.

 ๋‚ด๊ฐ€ ์ด ๊ธ€์„ ์ˆ˜์ •ํ•  ๋‚ ์ด ์˜ฌ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ, ์ด ๊ธ€์ด ์ˆ˜์ •๋œ๋‹ค๋ฉด ๊ทธ๊ฑด ์•„๋งˆ ์—ฐ์Šต๋ฌธ์ œ๋ฅผ ํ’€๊ณ  ๊ทธ ํ’€์ด๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ์ผ ๊ฒƒ์ด๋‹ค...


๐ŸŒ™  ์˜ค๋Š˜์˜ ํšŒ๊ณ 

 ์˜ค๋Š˜๋„ ์ง€๋‚œ๋ฒˆ์ฒ˜๋Ÿผ ์ด๋ก ์€ ์ดํ•ด๊ฐ€ ๋˜์ง€๋งŒ, ๋ง‰์ƒ Javascript๋กœ ์ž๋ฃŒ๊ตฌ์กฐ์˜ tree์™€ graph๋ฅผ ๊ตฌํ˜„ํ•˜๋ ค๋‹ˆ ๋„ˆ๋ฌด ์–ด๋ ค์› ๋‹ค. ๊ฒฐ๊ตญ ์ดํ•ด์•ˆ๋˜๋Š” ์ฝ”๋“œ๋ฅผ ๋’ค๋กœํ•˜๊ณ  ์ด๋ก ์œผ๋กœ ๋Œ์•„์™”๋‹ค. ์ด๋ก ์„ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ •๋ฆฌํ•ด๋ณด๊ณ , ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๋Š”๊ฑด ๋จธ๋ฆฌ์— ํœด์‹์„ ์ข€ ์ฃผ๊ณ  ๋‚˜์ค‘์— ๋‹ค์‹œ ํ•ด๋ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๋„ˆ๋ฌด ์ด๊ฒƒ๋งŒ ๋ถ™์žก๊ณ  ์žˆ๊ธฐ์—๋Š” ๊ณต๋ถ€ํ•  ๋‚ด์šฉ์ด ๋„ˆ๋ฌด ๋งŽ์•„… ๐Ÿ˜จ ๊ทธ์น˜…? (๋ ˆํผ๋Ÿฐ์Šค ์ฝ”๋“œ๋ฅผ ๋ด๋„, ํ•ด์„ค ๊ฐ•์˜๋ฅผ ๋“ค์–ด๋„ ๋ชจ๋ฅด๊ฒ ์œผ๋‹ˆ… ์ข€ ๋„˜๊ฒจ๋ด๋„ ๋˜๊ฒ ์ง€…๐Ÿ˜ญ)

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

 ์ฃผ๋ง๋ถ€ํ„ฐ ์˜ค๋Š˜๊นŒ์ง€ ๊ณต๋ถ€๋Š” ์™„์ „ ๋งํ–ˆ๋‹ค.. ํœด, ๋งํ•œ ๊ณต๋ถ€๋Š” ์˜ค๋Š˜๊นŒ์ง€๋งŒ.. ๋‚ผ์€ ๋‹ค์‹œ ์Šคํƒ ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์„๊นŒ.

๋ฐ˜์‘ํ˜•