๋ชฉ๋ก์ž๋ฃŒ๊ตฌ์กฐ (5)

๐Ÿ’ป

[์ž๋ฃŒ๊ตฌ์กฐ] ํŠธ๋ฆฌ(Tree)

ํŠธ๋ฆฌ(Tree) - ํŠธ๋ฆฌ๋Š” ๋น„์„ ํ˜• ๊ตฌ์กฐ์ด๋‹ค. ๋น„์„ ํ˜• ๊ตฌ์กฐ๋ž€ ์„ ํ˜•๊ตฌ์กฐ(์˜ˆ: ํ(Queue), ์Šคํƒ(Stack))๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ณ„์ธต์ (ํ˜น์€ ๋ง)์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค. - ์ปดํ“จํ„ฐ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ๊ฐ€ ํŠธ๋ฆฌ์˜ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋ ‡๋“ฏ ๊ณ„์ธต์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์ด ํŠธ๋ฆฌ๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค. - ํŠธ๋ฆฌ ์šฉ์–ด Root Node : ํŠธ๋ฆฌ ๊ตฌ์กฐ์—์„œ ์ตœ์ƒ์œ„์— ์กด์žฌํ•˜๋Š” A์™€ ๊ฐ™์€ ๋…ธ๋“œ Node : ํŠธ๋ฆฌ์˜ ๊ตฌ์„ฑ์š”์†Œ์— ํ•ด๋‹นํ•˜๋Š” A,B,C,D,E,F,G,H,I,J์™€ ๊ฐ™์€ ์š”์†Œ Edge : ๋…ธ๋“œ์™€ ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์—ฐ๊ฒฐ์„  Terminal Node(Leaf Node) : ๋ฐ‘์œผ๋กœ ๋˜ ๋‹ค๋ฅธ ๋…ธ๋“œ๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์€ H,I,J,F,G์™€ ๊ฐ™์€ ๋…ธ๋“œ Sub-Tree : ํฐ ํŠธ๋ฆฌ(์ „์ฒด)์— ์†ํ•˜๋Š” ์ž‘์€ ํŠธ๋ฆฌ Level : ํŠธ๋ฆฌ์—์„œ ๊ฐ ์ธต๋ณ„๋กœ..

์ž๋ฃŒ๊ตฌ์กฐ 2020. 11. 13. 14:58
[์ž๋ฃŒ๊ตฌ์กฐ] ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(BFS)

๋„ˆ๋น„์šฐ์„ ํƒ์ƒ‰(BFS= Breadth First Search) ๋Š” ๋„ˆ๋น„๋ฅผ ์šฐ์„ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ํ(Queue)๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. 1. ํƒ์ƒ‰ ์‹œ์ž‘ ๋…ธ๋“œ๋ฅผ ํ์— ์‚ฝ์ž…ํ•˜๊ณ  ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค 2. ํ์—์„œ ๋…ธ๋“œ๋ฅผ ๊บผ๋‚ด ํ•ด๋‹น ๋…ธ๋“œ์˜ ์ธ์ ‘ ๋…ธ๋“œ ์ค‘์—์„œ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋…ธ๋“œ๋“ค์„ ๋ชจ๋‘ ํ์— ์‚ฝ์ž…ํ•˜๊ณ , ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค . 3. 2๋ฒˆ์˜ ๊ณผ์ •์„ ๋” ์ด์ƒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰์€ ํ(Queue)์ž๋ฃŒ๊ตฌ์กฐ์— ๊ธฐ์ดˆํ•œ๋‹ค๋Š” ์ ์—์„œ ๊ตฌํ˜„์ด ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๊ตฌํ˜„ํ•จ์— ์žˆ์–ด ํ STL์„ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์œผ๋ฉฐ ํƒ์ƒ‰์„ ์ˆ˜ํ–‰ํ•จ์— ์žˆ์–ด์„œ O(N)์‹œ๊ฐ„์ด ์†Œ์š”๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ ์‹ค์ œ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์€ DFS๋ณด๋‹ค ์ข‹์€ ํŽธ์ž…๋‹ˆ๋‹ค. #include #include #define INF 999999999 ..

[์ž๋ฃŒ๊ตฌ์กฐ] ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(DFS)

๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(DFS=Depth First Search) ๊ธฐ๋ณธ์ ์œผ๋กœ ์ „์ฒด ๋…ธ๋“œ๋ฅผ ๋งน๋ชฉ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰์€ ์Šคํƒ(Stack) ์ž๋ฃŒ๊ตฌ์กฐ์— ๊ธฐ์ดˆํ•ฉ๋‹ˆ๋‹ค. 1. ํƒ์ƒ‰ ์‹œ์ž‘ ๋…ธ๋“œ๋ฅผ ์Šคํƒ์— ์‚ฝ์ž…ํ•˜๊ณ  ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. 2. ์Šคํƒ์˜ ์ตœ์ƒ๋‹จ ๋…ธ๋“œ์—๊ฒŒ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ธ์ ‘ ๋…ธ๋“œ๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์žˆ์œผ๋ฉด ๊ทธ ๋…ธ๋“œ๋ฅผ ์Šคํƒ์— ๋„ฃ๊ณ  ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ธ์ ‘ ๋…ธ๋“œ๊ฐ€ ์—†์œผ๋ฉด ์Šคํƒ์—์„œ ์ตœ์ƒ๋‹จ ๋…ธ๋“œ๋ฅผ ๊บผ๋ƒ…๋‹ˆ๋‹ค. 3. 2๋ฒˆ ๊ณผ์ •์„ ๋” ์ด์ƒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. #include #include #define MAX_SIZE 1001 typeder struct{ int index; struct Node *next; } Node; Node** a; int n, m, c[MAX_SIZE..

[์ž๋ฃŒ๊ตฌ์กฐ] ๊ทธ๋ž˜ํ”„์˜ ๊ฐœ๋…๊ณผ ๊ตฌํ˜„

๊ทธ๋ž˜ํ”„๋ž€ ์‚ฌ๋ฌผ์„ ์ •์ (Vertex)๊ณผ ๊ฐ„์„ (Edge)์œผ๋กœ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”„๋Š” 2๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 1) ์ธ์ ‘ํ–‰๋ ฌ(Adjacency Matrix) : 2์ฐจ์› ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹ 2) ์ธ์ ‘๋ฆฌ์ŠคํŠธ(Adjacency List) : ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹ ๋ฌด๋ฐฉํ–ฅ ๋น„๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„์™€ ์ธ์ ‘ ํ–‰๋ ฌ - ๋ชจ๋“  ๊ฐ„์„ ์ด ๋ฐฉํ–ฅ์„ฑ์„ ๊ฐ€์ง€์ง€ ์•Š๋Š” ๊ทธ๋ž˜ํ”„๋ฅผ ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. - ๋ชจ๋“  ๊ฐ„์„ ์— ๊ฐ€์ค‘์น˜๊ฐ€ ์—†๋Š” ๊ทธ๋ž˜ํ”„๋ฅผ ๋น„๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. - ๋ฌด๋ฐฉํ–ฅ ๋น„๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„๊ฐ€ ์ฃผ์–ด์กŒ์„๋•Œ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์ƒํ™ฉ์„ ์ธ์ ‘ ํ–‰๋ ฌ๋กœ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. #include int a[1001][1001]; int n,m; int main(void){ scanf("%d %d", &n, &m); //๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜ for..

[์ž๋ฃŒ๊ตฌ์กฐ] ์šฐ์„ ์ˆœ์œ„ ํ

์šฐ์„ ์ˆœ์œ„ ํ๋Š” '์šฐ์„  ์ˆœ์œ„'๋ฅผ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๋“ค์„ ์ €์žฅํ•˜๋Š” ํ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ผ ๋•Œ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜์˜จ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ์–ด์„œ ๋งŽ์ด ํ™œ์šฉ๋˜๊ณ  ์žˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„ ํ๋Š” ์šด์˜์ฒด์ œ์˜ ์ž‘์—…์Šค์ผ€์ค„๋ง, ์ •๋ ฌ, ๋„คํŠธ์›Œํฌ ๊ด€๋ฆฌ ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ ์— ์ ์šฉ๋˜๊ณ  ์žˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„ ํ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(NlogN)์ด๋‹ค. ์ผ๋ฐ˜์ ์ธ ํ˜•ํƒœ์˜ ํ๋Š” ์„ ํ˜•์ ์ธ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ ์šฐ์„ ์ˆœ์œ„ ํ๋Š” ํŠธ๋ฆฌ(Tree) ๊ตฌ์กฐ๋กœ ๋ณด๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ด๋‹ค. (์™„์ „์ด์ง„ํŠธ๋ฆฌ์™€ ํก์‚ฌ) ์ผ๋ฐ˜์ ์œผ๋กœ ์šฐ์„ ์ˆœ์œ„ ํ๋Š” ์ตœ๋Œ€ ํž™์„ ์ด์šฉํ•ด ๊ตฌํ˜„ํ•œ๋‹ค. ์ตœ๋Œ€ ํž™(Max Heap) ๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ์ž์‹ ๋…ธ๋“œ๋ณด๋‹ค ๊ฐ’์ด ํฐ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ „์ฒด ํŠธ๋ฆฌ์—์„œ ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค. ์šฐ์„ ์ˆœ์œ„ ํ์˜ ์‚ฝ์ž… - ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ์œ ์ง€ํ•˜๋Š” ํ˜•ํƒœ๋กœ ์ˆœ์ฐจ์ ์œผ๋กœ ์‚ฝ..