-
μλ£κ΅¬μ‘° μ 리μλ£κ΅¬μ‘° 2021. 8. 9. 02:05λ°μν
κΈ°λ³Έ μλ£κ΅¬μ‘° μ’ λ₯
μ ν μλ£κ΅¬μ‘° (linaer)
- λ°°μ΄ (Array)
- μ°κ²°λ¦¬μ€νΈ (Linked List)
- μ€ν (Stack)
- ν (Queue)
λΉμ ν μλ£κ΅¬μ‘° (non-linear)
- νΈλ¦¬ (Tree)
- κ·Έλν (Graph)
1. λ°°μ΄
1) μ μ
κ°μ μλ£νμ κ°λ μ¬λ¬ λ°μ΄ν°λ₯Ό νλμ λ³μ μ΄λ¦μΌλ‘ λͺ¨μλμ λ°μ΄ν°μ μ§ν©μ²΄
2) νΉμ§
- λ Όλ¦¬μ μμμ 물리μ μμκ° κ°λ€.
- μΈλ±μ€λ₯Ό ν΅ν΄ μ§μ μ μΌλ‘ μμμ μ κ·Όνλ€.
- μ½μ , μμ μ μλ£μ μ΄λμ λ°λ₯Έ μ€λ²ν€λκ° λ°μνκΈ° λλ¬Έμ μ½μ /μμ μ°μ°μ΄ λΉλ²νκ² μΌμ΄λλ μ°μ°μμλ λΆμ ν©νλ€.
2. μ°κ²°λ¦¬μ€νΈ
1) μ μ
λ Έλ (νλ μ΄μμ λ°μ΄ν° νλμ νλ μ΄μμ λ§ν¬ νλλ‘ κ΅¬μ±)λΌλ μ μ₯ꡬ쑰λ₯Ό μ΄μ©ν΄μ μ ν 리μ€νΈλ₯Ό νννλ λ°©λ²
2) νΉμ§
- λ Όλ¦¬μ μμμ 물리μ μμκ° κ°μ§ μλ€.
- λ§ν¬ νλμ μ‘°μ μ ν΅ν΄ λ°°μ΄λ³΄λ€ λΉκ΅μ κ°λ¨νκ² μ½μ /μμ μ°μ°μ ν μ μλ€.
- μμ°¨μ κ·Όμ ν΄μΌνκΈ° λλ¬Έμ κ²μμ λ°°μ΄λ³΄λ€λ ν¨μ¨μ΄ λ¨μ΄μ§λ νΈμ΄λ€.
3) μ’ λ₯
- λ¨μΌ μ°κ²°λ¦¬μ€νΈ (Singly Linked List) : λ Έλκ° νλ°©ν₯μΌλ‘λ§ κ° μ μμ, λ Έλμ λμ΄ μμ
- μ΄μ€ μ°κ²°λ¦¬μ€νΈ (Doubly Linked List) : κ° λ Έλκ° μ΄μ λ Έλ, λ€μ λ Έλμ λν΄μ μ°Έμ‘°νλ ννμ μ°κ²° 리μ€νΈ
- λ¨μΌ μ°κ²° 리μ€νΈ : λ Έλκ° νλ°©ν₯μΌλ‘λ§ κ° μ μμ, λ Έλμ λμ΄ μμ΄ μ λ Έλμ λμ΄ μ²μμΌλ‘ μ΄μ΄μ§ μ μμ
- μ΄μ€ μ°κ²° 리μ€νΈ : λ Έλκ° μλ°©ν₯μΌλ‘ κ° μ μμ, λ Έλμ λμ΄ μμ΄ μ λ Έλμ λμ΄ μ²μμΌλ‘ μ΄μ΄μ§ μ μμ
3. μ€ν
1) μ μ
νμͺ½ λμμλ§ λ°μ΄ν°μ μ½μ κ³Ό μμ κ° μνλλ μ ν 리μ€νΈ
2) νΉμ§
- κ°μ₯ λ¦κ² λ€μ΄κ° λ°μ΄ν°κ° κ°μ₯ λ¨Όμ λμ€λ νμ μ μΆ (LIFO) μ νμμ κ°μ§λ€.
- λ°μ΄ν°λ₯Ό μ½μ νλ push μ°μ°κ³Ό λ°μ΄ν°λ₯Ό μΆλ ₯νλ pop μ°μ°μ΄ μλ€.
- TOPμμλ§ λ°μ΄ν°μ μ½μ κ³Ό μμ κ° μνλλ€.
4. ν
1) μ μ
νμͺ½ λμμλ λ°μ΄ν°μ μ½μ λ§ μνλκ³ λ€λ₯Έ νμͺ½ λμμλ μμ λ§ μνλλ μ ν 리μ€νΈ
2) νΉμ§
- κ°μ₯ λ¨Όμ λ€μ΄κ° λ°μ΄ν°κ° κ°μ₯ λ¨Όμ λμ€λ μ μ μ μΆ (FIFO) μ νμμ κ°μ§λ€.
- κ°μ₯ μλΆλΆμ front / headλΌκ³ νλ©°, κ°μ₯ λ·λΆλΆμ rear / tailμ΄λΌκ³ νλ€.
5-1. νΈλ¦¬
1) μ μ
λ ΈλλΌλ μ 보 νλͺ©μ΄ κ°μ μΌλ‘ μ°κ²°λμ΄ κ³μΈ΅μ μΈ κ΅¬μ‘°λ₯Ό νννλ λΉμ ν μλ£κ΅¬μ‘°
2) μ©μ΄
- μλΈ νΈλ¦¬ (subtree) : νλμ λ Έλμ κ·Έ λ Έλλ€μ μμλ€λ‘ μ΄λ£¨μ΄μ§ νΈλ¦¬
- λ£¨νΈ λ Έλ(root) : λΆλͺ¨κ° μλ λ Έλλ‘ νΈλ¦¬λ νλμ λ£¨νΈ λ Έλλ§μ κ°μ§λ€.
- λ Έλμ μ°¨μ (degree) : νμ νΈλ¦¬ κ°―μ/κ°μ μ (degree)λ‘, κ° λ Έλκ° μ§λ κ°μ§μ μλ₯Ό λ§νλ€.
- 리ν λ Έλ(leaf node), λ¨λ§ λ Έλ : μμμ΄ μλ λ Έλλ₯Ό λ§νλ€.
- λΉλ¨λ§λ Έλ : μ μ΄λ νλμ μμμ κ°μ§λ λ Έλλ₯Ό λ§νλ€.
- λΆλͺ¨ λ Έλ (parent) :
- μμ λ Έλ (child) :
- νμ λ Έλ (sibling) : κ°μ λΆλͺ¨λ₯Ό κ°μ§λ λ Έλλ₯Ό λ§νλ€.
- νμ(μμ, descendent) :
- μ‘°μ(μ μ‘°, ancestor) :
- λ 벨 : λ£¨νΈ λ Έλλ‘λΆν°μ κΈΈμ΄
- λμ΄/κΉμ΄ (height, depth) : λ£¨νΈ λ Έλμμ κ°μ₯ κΉμν μλ λ Έλμ κΉμ΄λ‘ 'κ°μ₯ λ§μ§λ§ λ 벨 + 1'λ‘ κ΅¬ν μ μλ€.
- μ°¨μ(degree) : λ Έλκ° κ°μ§κ³ μλ μμ λ Έλμ κ°μ
- μ²
5-2. μ΄μ§νΈλ¦¬
1) μ μ
κ° λ Έλμ μ°¨μκ° 2μ΄ν(0,1,2)μΈ μμ νΈλ¦¬
2) νΉμ§
- λ 벨 iμμμ μ΅λ λ Έλ κ°μ: 2i
- λμ΄ hμΈ νΈλ¦¬μ μ΅λ λ Έλ κ°μ : 2h - 1
- n0=n2+1 (n0: λ¨μΌ λ Έλμ μ, n2: μ°¨μκ° 2μΈ λ Έλμ μ)
3) μ’ λ₯
- ν¬ν(perfect) μ΄μ§νΈλ¦¬ : λͺ¨λ 리ν λ Έλμ λ λ²¨μ΄ λμΌνκ³ λͺ¨λ λ λ²¨μ΄ κ°λ μ±μμ Έ μλ μ΄μ§ νΈλ¦¬λ₯Ό λ§νλ€.
- μμ (complete) μ΄μ§νΈλ¦¬ : λΆλͺ¨, μΌμͺ½ μμ, μ€λ₯Έμͺ½ μμ μμΌλ‘ μ±μμ§λ νΈλ¦¬λ₯Ό λ§νλ©°, λ§μ§λ§ λ 벨μ μ μΈνκ³ λͺ¨λ λ Έλκ° κ°λ μ°¨ μμ΄μΌ νλ€. λν, λ§μ§λ§ λ 벨μ λ Έλλ μ€κ°μ λΉ κ³³ μμ΄ μΌμͺ½μΌλ‘ λͺ°λ € μμ΄μΌ νλ€.
- μ μ΄μ§νΈλ¦¬ (full) : λ Έλμ°¨μκ° 0 μ΄κ±°λ 2μΈ μ΄μ§νΈλ¦¬λ₯Ό λ§νλ©° κ· ν μ΄μ§νΈλ¦¬ (balanced)λΌκ³ λ νλ€.
6. κ·Έλν
1) μ μ
G = (V, E)
V : μ μ (μ°κ²°ν΄μΌ ν λμ)μ μ§ν©
E : κ°μ (μ°κ²°μ )μ μ§ν©
2) μ’ λ₯
λ°©ν₯μ±μ μμΉμ λ°λΌ 무방ν₯ κ·Έλνμ λ°©ν₯κ·Έλνλ‘ κ΅¬λΆνλ€.
무방ν₯ κ·Έλν (undirected)
(1,0) = (0,1)
λ°©ν₯μ΄ μκΈ° λλ¬Έμ μ΄λλ κ°μ μ΄λ°μμΌλ‘() νννλ€.
λ°©ν₯κ·Έλν (directed)
<1,2> =/= <2,1>
λ°©ν₯μ΄ μκΈ° λλ¬Έμ μ΄λ κ²<> νννλ©° κ°μ΄ λ§μ§ μκΈ° λλ¬Έμ λμ λ€λ₯΄λ€.λν κ°μ€μΉκ° μμ κ²½μ° κ°μ€κ·Έλν(weighted)λΌκ³ νλ€.
3) μ©μ΄
- μΈμ (adjacent)
- λΆμ(incident)
- λΆλΆ κ·Έλν (subgraph)
- κ²½λ‘(path)
- κ²½λ‘μ κΈΈμ΄(length)
- μ°¨μ(degree)
λ°©ν₯ κ·Έλν -> μ§μ μ°¨μ(in-degree), μ§μΆ μ§μ(out-degree)
- λ¨μ κ²½λ‘(simple path)
- μ¬μ΄ν΄(cycle)
- 루ν(loop)
- μ°κ²°(connected)
λ°©ν₯κ·Έλν -> κ°λ ₯ μ°κ²°(strongly-connected), μ½νκ² μ°κ²°(weakly-connected)
4) κ·Έλνμ ꡬν
μΈμ νλ ¬ (adjacency matrix) : μ΄μ€λ°°μ΄μ μ¬μ©ν΄μ ꡬν
λ§μ½ κ°μ€μΉκ° μλ κ·ΈλνμΌ κ²½μ° μ μ΄ μλ μλμΈ 1,0μΌλ‘ ꡬμ±λμ΄ ννλ¨
μΈμ 리μ€νΈ (adjacency list) : linkedList μ¬μ©ν΄μ ꡬν
λ°μν