Skip to content

Latest commit

ย 

History

History
327 lines (225 loc) ยท 9.15 KB

NonLinear.md

File metadata and controls

327 lines (225 loc) ยท 9.15 KB

ํŠธ๋ฆฌ

์ผ๋ฐ˜์ ์œผ๋กœ ๋Œ€์ƒ ์ •๋ณด์˜ ๊ฐ ํ•ญ๋ชฉ๋“ค์„ ๊ณ„์ธต์ ์œผ๋กœ ๊ตฌ์กฐํ™”ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ

  • ๋ฐ์ดํ„ฐ ์ €์žฅ์˜ ์˜๋ฏธ๋ณด๋‹ค๋Š” ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋” ํšจ๊ณผ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค
  • ์‚ฌ์ดํด์ด ์—†๋Š” ๊ทธ๋ž˜ํ”„๋ผ๊ณ ๋„ ํ•œ๋‹ค

๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„์˜ ๋…ธ๋“œ๋“ค๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค

๊ณ„์ธต์ ์ธ ๊ตฌ์กฐ ํ‘œํ˜„
๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ
์ธ๊ณต์ง€๋Šฅ์˜ ์˜์‚ฌ๊ฒฐ์ •ํŠธ๋ฆฌ


๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ


์˜์‚ฌ๊ฒฐ์ •ํŠธ๋ฆฌ


ํŠธ๋ฆฌ์˜ ์šฉ์–ด

  • ๋…ธ๋“œ(node): ํŠธ๋ฆฌ์˜ ๊ตฌ์„ฑ์š”์†Œ
  • ๋ฃจํŠธ(root): ๋ถ€๋ชจ๊ฐ€ ์—†๋Š” ๋…ธ๋“œ(์ตœ์ƒ์œ„ ๋…ธ๋“œ)
  • ์„œ๋ธŒ ํŠธ๋ฆฌ(subtree): ํ•˜๋‚˜์˜ ๋…ธ๋“œ์™€ ๊ทธ ๋…ธ๋“œ๋“ค์˜ ์ž์‹๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ํŠธ๋ฆฌ
  • ๋‹จ๋ง๋…ธ๋“œ(terminal node, leaf node): ์ž์‹์ด ์—†๋Š” ๋…ธ๋“œ
  • ๋น„๋‹จ๋ง๋…ธ๋“œ: ์ ์–ด๋„ ํ•˜๋‚˜์˜ ์ž์‹์„ ๊ฐ€์ง€๋Š” ๋…ธ๋“œ
  • ๋ ˆ๋ฒจ(level): ํŠธ๋ฆฌ์˜ ๊ฐ ์ธต์˜ ๋ฒˆํ˜ธ
  • ๋†’์ด(height): ํŠธ๋ฆฌ์˜ ์ตœ๋Œ€ ๋ ˆ๋ฒจ
  • ์ฐจ์ˆ˜(degree): ๋…ธ๋“œ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜
  • ๋‚ด๋ถ€๋…ธ๋“œ(internal node): ์ž์‹์ด ์—†๋Š” ๋…ธ๋“œ๋กœ leaf node๋ผ๊ณ ๋„ ํ•จ
  • ์™ธ๋ถ€๋…ธ๋“œ(external node): leaf node๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋…ธ๋“œ, ์ž์‹์ด ์žˆ๋Š” ๋…ธ๋“œ

ํŠธ๋ฆฌ์˜ ์ˆœํšŒ


1. ์ „์œ„ ์ˆœํšŒ(preorder)

๋ฃจํŠธ๋…ธ๋“œ -> ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ -> ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ ์ˆœ์„œ๋กœ ์ˆœํšŒํ•˜๋Š” ๋ฐฉ์‹

  • ๊นŠ์ด ์šฐ์„ ์ˆœํšŒ ๋ผ๊ณ ๋„ ํ•œ๋‹ค
์ˆœํšŒ ๋ฐฉ๋ฒ•

2. ์ค‘์œ„ ์ˆœํšŒ(inorder)

์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ -> ๋…ธ๋“œ -> ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ ์ˆœ์„œ๋กœ ์ˆœํšŒํ•˜๋Š” ๋ฐฉ์‹

  • ๋Œ€์นญ ์ˆœํšŒ ๋ผ๊ณ ๋„ ํ•œ๋‹ค
์ˆœํšŒ ๋ฐฉ๋ฒ•

3. ํ›„์œ„ ์ˆœํšŒ(postorder)

์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ -> ๋ฃจํŠธ๋…ธ๋“œ -> ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ ์ˆœ์„œ๋กœ ์ˆœํšŒํ•˜๋Š” ๋ฐฉ์‹

์ˆœํšŒ ๋ฐฉ๋ฒ•

์ด์ง„ํŠธ๋ฆฌ

๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ 2๊ฐœ ์ดํ•˜์˜ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

ํŽธํ–ฅ ์ด์ง„ ํŠธ๋ฆฌ

๋ชจ๋“  ๋…ธ๋“œ๋“ค์ด ์ž์‹์„ ํ•˜๋‚˜๋งŒ ๊ฐ–๋Š” ์ด์ง„ํŠธ๋ฆฌ


ํฌํ™” ์ด์ง„ ํŠธ๋ฆฌ

์šฉ์–ด ๊ทธ๋Œ€๋กœ ํŠธ๋ฆฌ์˜ ๊ฐ ๋ ˆ๋ฒจ์— ๋…ธ๋“œ๊ฐ€ ๊ฝ‰ ์ฐจ์žˆ๋Š” ์ด์ง„ํŠธ๋ฆฌ


์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ

๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ์„ ์ œ์™ธํ•˜๊ณ  ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ์ฑ„์›Œ์ ธ ์žˆ๋Š” ์ด์ง„ํŠธ๋ฆฌ

  • ํฌํ™” ์ด์ง„ ํŠธ๋ฆฌ์™€ ๋…ธ๋“œ ๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜

์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ

ํƒ์ƒ‰์„ ํšจ์œจ์ ์œผ๋กœ ํ•˜๊ธฐ ์œ„ํ•œ ์ด์ง„ ํŠธ๋ฆฌ ๊ธฐ๋ฐ˜์˜ ์ž๋ฃŒ๊ตฌ์กฐ

  • ํƒ์ƒ‰์ด ํŠธ๋ฆฌ์˜ ๋†’์ด๋งŒํผ ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค
  • ๋ฐ์ดํ„ฐ๋Š” right>=root>=left ๋กœ ์ €์žฅ๋œ๋‹ค
  • ๋ชจ๋“  ๋…ธ๋“œ๋Š” ์ค‘๋ณต๋œ ๊ฐ’์„ ๊ฐ€์ง€์ง€ ์•Š๋Š”๋‹ค
  • ์ด์ง„ ํƒ์ƒ‰์„ ์ค‘์œ„์ˆœํšŒํ•˜๋ฉด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •

ํƒ์ƒ‰ ๊ณผ์ •

RBT(Red-Black-Tree)

๊ท ํ˜• ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋กœ O(logn)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค

  • ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์— ํ•œ ์ชฝ์œผ๋กœ ๊ฐ’์ด ํŽธํ–ฅ๋˜๊ฒŒ ๋“ค์–ด์˜จ๋‹ค๋ฉด ๊ต‰์žฅํžˆ ๋น„ํšจ์œจ์ ์ธ ํผํฌ๋จผ์Šค๋ฅผ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•
  • root node ๋ณด๋‹ค ์ž‘์€ ๊ฐ’์€ reft node๋กœ ํฐ ๊ฐ’์€ right node๋กœ ๋ฐฐ์น˜ํ•˜๋Š” ๊ท ํ˜•ํŠธ๋ฆฌ

RBT์˜ ์กฐ๊ฑด

  • Root Property: ๋ฃจํŠธ๋…ธ๋“œ๋Š” ๊ฒ€์ •(Black)์ด๋‹ค.
  • External Property: ๋ชจ๋“  external node๋“ค์€ ๊ฒ€์ •์ด๋‹ค.
  • Internal Property: ๋นจ๊ฐ•(Red)๋…ธ๋“œ์˜ ์ž์‹์€ ๊ฒ€์ •์ด๋‹ค.
  • Depth Property: ๋ชจ๋“  leaf node์—์„œ black depth๋Š” ๊ฐ™๋‹ค
    • leaf์—์„œ root๊นŒ์ง€ ๊ฐ€๋Š” ๊ฒฝ๋กœ์—์„œ ๋งŒ๋‚˜๋Š” black node์˜ ๊ฐœ์ˆ˜๋Š” ๊ฐ™๋‹ค



๊ทธ๋ž˜ํ”„

์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ


์˜ค์ผ๋Ÿฌ ๋ฌธ์ œ

๋ชจ๋“  ๋‹ค๋ฆฌ๋ฅผ ํ•œ ๋ฒˆ๋งŒ ๊ฑด๋„ˆ์„œ ์ฒ˜์Œ ์ถœ๋ฐœํ–ˆ๋˜ ์žฅ์†Œ๋กœ ๋Œ์•„์˜ค๋Š” ๋ฌธ์ œ

  • ํ•œ๋ถ“๊ทธ๋ฆฌ๊ธฐ
  • ์˜ค์ผ๋Ÿฌ ์ •๋ฆฌ: ๋ชจ๋“  ์ •์ ์— ์—ฐ๊ฒฐ๋œ ๊ฐ„์„ ์˜ ์ˆ˜๊ฐ€ ์ง์ˆ˜์ด๋ฉด ์˜ค์ผ๋Ÿฌ ๊ฒฝ๋กœ ์กด์žฌ

  • ์œ„์น˜: ์ •์ (Vertex)
  • ๋‹ค๋ฆฌ: ๊ฐ„์„ (Edge)

๊ทธ๋ž˜ํ”„ ์˜ˆ์‹œ

๊ทธ๋ž˜ํ”„ G๋Š” (V, E)๋กœ ํ‘œ์‹œ


๊ทธ๋ž˜ํ”„ ๊ด€๋ จ ์šฉ์–ด


์ •์ (Vertex)

  • ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํŠน์„ฑ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด
  • V(G): ๊ทธ๋ž˜ํ”„ G์˜ ์ •์ ๋“ค์˜ ์ง‘ํ•ฉ
  • ๋…ธ๋“œ(node) ๋ผ๊ณ ๋„ ๋ถˆ๋ฆผ

๊ฐ„์„ (Edge)

  • ์ •์ ๋“ค ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์˜๋ฏธ
  • E(G): ๊ทธ๋ž˜ํ”„ G์˜ ๊ฐ„์„ ๋“ค์˜ ์ง‘ํ•ฉ
  • ๋งํฌ(link) ๋ผ๊ณ ๋„ ๋ถˆ๋ฆผ
  • ์ธ์ ‘ ์ •์ (Adjacent Vertex): ๊ฐ„์„ ์— ์˜ํ•ด ์ง์ ‘ ์—ฐ๊ฒฐ๋œ ์ •์ 
  • ๋‹จ์ˆœ ๊ฒฝ๋กœ(Simple Path): ํ•œ๋ถ„๊ทธ๋ฆฌ๊ธฐ์™€ ๊ฐ™์ด ๊ฐ™์€ ๊ฐ„์„ ์„ ์ง€๋‚˜๊ฐ€์ง€ ์•Š๋Š” ๊ฒฝ๋กœ
  • ์ฐจ์ˆ˜(Degree): ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ํ•˜๋‚˜์˜ ์ •์ ์— ์ธ์ ‘ํ•œ ์ •์ ์˜ ์ˆ˜
  • ์ง„์ž… ์ฐจ์ˆ˜(Out-Degree): ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ์™ธ๋ถ€์—์„œ ๋“ค์–ด์˜ค๋Š” ๊ฐ„์„ ์˜ ์ˆ˜
  • ์ง„์ถœ ์ฐจ์ˆ˜(In-Degree): ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ์™ธ๋ถ€๋กœ ํ–ฅํ•˜๋Š” ๊ฐ„์„ ์˜ ์ˆ˜
  • ๊ฒฝ๋กœ ๊ธธ์ด(Path Length): ๊ฒฝ๋กœ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ ๊ฐ„์„ ์˜ ์ˆ˜
  • ์‚ฌ์ดํด(Cycle): ๋‹จ์ˆœ ๊ฒฝ๋กœ์˜ ์‹œ์ž‘ ์ •์ ๊ณผ ์ข…๋ฃŒ ์ •์ ์ด ๋™์ผํ•œ ๊ฒฝ์šฐ
๊ทธ๋ž˜ํ”„ ํ‘œํ˜„ ์˜ˆ์‹œ

๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„

๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„

๊ฐ„์„ ์— ๋น„์šฉ์ด๋‚˜ ๊ฐ€์ค‘์น˜๊ฐ€ ํ• ๋‹น๋œ ๊ทธ๋ž˜ํ”„


๋ถ€๋ถ„ ๊ทธ๋ž˜ํ”„

์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„

์™„์ „ ๊ทธ๋ž˜ํ”„

๊ทธ๋ž˜ํ”„ ํ‘œํ˜„ ๋ฐฉ๋ฒ•


์ธ์ ‘ ํ–‰๋ ฌ ๋ฐฉ๋ฒ•

  • ๊ฐ„์„  (i,j)๊ฐ€ ๊ทธ๋ž˜ํ”„์— ์กด์žฌ ํ•˜๋ฉด M[i][j]=1, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด M[i][j]=0

์ธ์ ‘ ๋ฆฌ์ŠคํŠธ ๋ฐฉ๋ฒ•

  • ๊ฐ ์ •์ ์— ์ธ์ ‘ํ•œ ์ •์ ๋“ค์„ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ํ‘œํ˜„



๊ทธ๋ž˜ํ”„์™€ ํŠธ๋ฆฌ์˜ ์ฐจ์ด



๋ฉด์ ‘ ์งˆ๋ฌธ

BST(Binary Search Tree)์™€ Binary Tree์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์„ธ์š”.

์ •๋‹ต ๋ณด๊ธฐ

์ด์ง„ํŠธ๋ฆฌ(Binary Tree)๋Š” ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์ตœ๋Œ€ ๋‘ ๊ฐœ์ธ ๋…ธ๋“œ๋“ค๋กœ ๊ตฌ์„ฑ๋œ ํŠธ๋ฆฌ์ด๊ณ , ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ(BST)๋Š” ์ด์ง„ ํƒ์ƒ‰๊ณผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฒฐํ•ฉํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์ด์ง„ ํƒ์ƒ‰์˜ ํšจ์œจ์ ์ธ ํƒ์ƒ‰ ๋Šฅ๋ ฅ์„ ์œ ์ง€ํ•˜๋ฉด์„œ, ๋นˆ๋ฒˆํ•œ ์ž๋ฃŒ ์ž…๋ ฅ๊ณผ ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋Š” ์™ผ์ชฝ ํŠธ๋ฆฌ์˜ ๋ชจ๋“  ๊ฐ’์€ ๋ฐ˜๋“œ์‹œ ๋ถ€๋ชจ ๋…ธ๋“œ๋ณด๋‹ค ์ž‘์•„์•ผ ํ•˜๊ณ , ์˜ค๋ฅธ์ชฝ ํŠธ๋ฆฌ์˜ ๊ฐ’์€ ๋ถ€๋ชจ ๋…ธ๋“œ๋ณด๋‹ค ์ปค์•ผ ํ•˜๋Š” ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ํƒ์ƒ‰ ์—ฐ์‚ฐ์€ ํŠธ๋ฆฌ์˜ ๋†’์ด์— ์˜ํ–ฅ์„ ๋ฐ›์•„ ๋†’์ด๊ฐ€ h์ผ ๋•Œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(h)์ด๋ฉฐ, ํŠธ๋ฆฌ์˜ ๊ท ํ˜•์ด ํ•œ์ชฝ์œผ๋กœ ์น˜์šฐ์ณ์ง„ ๊ฒฝ์šฐ worst case๊ฐ€ ๋˜๊ณ  O(n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์ด๋Ÿฐ worst case๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด ๋‚˜์˜จ ๊ธฐ๋ฒ•์ด RBT(Red-Black Tree)์ž…๋‹ˆ๋‹ค.

RBT(Red-Black-Tree)์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์„ธ์š”.

์ •๋‹ต ๋ณด๊ธฐ
RBT(Red-Black Tree)๋Š” BST๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ํŠธ๋ฆฌ ํ˜•์‹ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋ฉฐ, RBT๋Š” BST์˜ ์‚ฝ์ž…, ์‚ญ์ œ ์—ฐ์‚ฐ ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. BST๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹น์—ฐํžˆ BST์˜ ํŠน์ง•์„ ๋ชจ๋‘ ๊ฐ–์Šต๋‹ˆ๋‹ค. ๋…ธ๋“œ์˜ child๊ฐ€ ์—†์„ ๊ฒฝ์šฐ child๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋Š” NIL ๊ฐ’์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ NIL๋“ค์„ leaf node๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๋นจ๊ฐ„์ƒ‰ ๋˜๋Š” ๊ฒ€์€์ƒ‰์œผ๋กœ ์ƒ‰์น ํ•˜๋ฉฐ, ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๋“ค์€ ์ƒ‰์ด ์ค‘๋ณต๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.



ref)