-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
NoteNoteNote
Description
π μ½κ² λ°°μ°λ μκ³ λ¦¬μ¦ μ± Chapter 10: κ·Έλν
π κ·Έλνμ νν
- μΈμ νλ ¬
- νλ ¬ ννλ²μ μ΄ν΄νκΈ° μ½κ³ κ°μ μ μ‘΄μ¬ μ¬λΆλ₯Ό μ¦κ° μ μ μλ€λ μ₯μ μ΄ μλ€.
- λμ
n x nνλ ¬μ΄ νμνλ―λ‘ n2μ λΉλ‘νλ 곡κ°μ΄ νμνκ³ , νλ ¬μ μ€λΉ κ³Όμ μμ νλ ¬μ λͺ¨λ μμλ₯Ό μ±μ°λ λ°λ§ n2μ λΉλ‘νλ μκ°μ΄ λ λ€. κ·Έλ¬λ―λ‘ O(n2) λ―Έλ§μ μκ°μ΄ μμλλ μκ³ λ¦¬μ¦μ΄ νμν κ²½μ°μ νλ ¬ ννλ²μ μ¬μ©νλ©΄ νλ ¬μ μ€λΉ κ³Όμ μμλ§ Ι΅(n2)μ μκ°μ μλͺ¨ν΄λ²λ € μ μ νμ§ μλ€. - κ°μμ λ°λκ° μμ£Ό λμ κ·Έλνμμλ μΈμ νλ ¬ ννμ΄ μ ν©νλ€.
- JavaScript μμ
- μΈμ 리μ€νΈ
- μΈμ 리μ€νΈλ 곡κ°μ΄ κ°μ μ μ΄μμ λΉλ‘νλ μλ§νΌ νμνλ―λ‘ λμ²΄λ‘ νλ ¬ ννμ λΉν΄ 곡κ°μ λλΉκ° μλ€. λͺ¨λ κ°λ₯ν μ μ μμ λΉν΄ κ°μ μ μκ° μ μ λ μ μ©νλ€. νμ§λ§, κ±°μ λͺ¨λ μ μ μμ λν΄ κ°μ μ΄ μ‘΄μ¬νλ κ²½μ°μλ μ€νλ € 리μ€νΈλ₯Ό λ§λλ λ° νμν μ€λ²ν€λλ§ λ λ λ€. κ·Έλμ κ°μ μ λ°λκ° λμ κ²½μ°μλ μ ν©νμ§ μλ€.
- JavaScript μμ
π λλΉ μ°μ νμ(BFS)κ³Ό κΉμ΄ μ°μ νμ(DFS)
- BFS
- BFSλ λ¨Όμ 루νΈμ μμμ μ°¨λ‘λ‘ λ°©λ¬Ένλ€. λ€μμΌλ‘ λ£¨νΈ μμμ μμ, μ¦ λ£¨νΈμμ λ κ°μ κ°μ μ κ±°μ³μ λλ¬ν μ μλ μ μ μ λ°©λ¬Ένλ€.
- BFSμ μν μκ°μ Ι΅(V + E)μ΄λ€
- κ²½μ£Όλ‘ κ±΄μ€: 2020 μΉ΄μΉ΄μ€ μΈν΄μ½
- DFS
- DFSλ 루νΈμ μμ μ μ μ νλ λ°©λ¬Έν λ€μ μλλ‘ λ΄κ²¨κ° μ μλ κ³³κΉμ§ λ΄λ €κ°λ€. λ μ΄μ λ΄λ €κ° μκ° μμΌλ©΄ μλ‘ λλμμ€λ€κ° λ΄κ²¨κ° κ³³μ΄ μμΌλ©΄ μ¦κ° λ΄λ €κ°λ€.
- DFSμ μνμκ°μ Ι΅(V + E)μ΄λ€.
- DFS & BFS JavaScript λ¬Έμ μμ
π μ΅μ μ μ₯ νΈλ¦¬
- νλ¦Ό μκ³ λ¦¬μ¦
- νλ¦Ό μκ³ λ¦¬μ¦μ μ§ν© Sλ₯Ό 곡μ§ν©μμ μμνμ¬ λͺ¨λ μ μ μ ν¬ν¨ν λκΉμ§(μ¦,
S=Vκ° λ λκΉμ§) ν€μλκ°λ€. 맨 μ²μ μ μ μ μ μΈνκ³ λ μ μ μ νλ λν λλ§λ€ κ°μ μ΄ νλμ© νμ λλ€. - νλ¦Ό μκ³ λ¦¬μ¦μ μν μκ°μ μ΅μνμ μ¬μ©νμ λ
O(ElogV)μ΄λ€.
- νλ¦Ό μκ³ λ¦¬μ¦μ μ§ν© Sλ₯Ό 곡μ§ν©μμ μμνμ¬ λͺ¨λ μ μ μ ν¬ν¨ν λκΉμ§(μ¦,
- ν¬λ£¨μ€μΉΌ μκ³ λ¦¬μ¦
- ν¬λ£¨μ€μΉΌ(Kruskal) μκ³ λ¦¬μ¦μ μ¬μ΄ν΄μ λ§λ€μ§ μλ λ²μμμ μ΅μ λΉμ© κ°μ μ νλμ© λν΄κ°λ©΄μ μ΅μ μ μ₯ νΈλ¦¬λ₯Ό λ§λ λ€.
- ν¬λ£¨μ€μΉΌ μκ³ λ¦¬μ¦μ μν μκ°μ
O(ElogV)μ΄λ€.
- νλ‘κ·Έλλ¨Έμ€ μ¬ μ°κ²°νκΈ° λ¬Έμ λ₯Ό ν¬λ£¨μ€μΉΌκ³Ό νλ¦Ό μκ³ λ¦¬μ¦μ μ¬μ©ν΄ λ¬Έμ νμ΄
π μμ μ λ ¬
- μμ
iμ μμjμ¬μ΄μ κ°μ(i, j)κ° μ‘΄μ¬νλ€λ©΄ μμiλ λ°λμ μμjλ³΄λ€ λ¨Όμ μνλλ€. λͺ¨λ κ°μ μ λν΄μ μ΄ μ±μ§λ§ λ§μ‘±νλ©΄ μ΄λ€ μμλΌλ μ’λ€. μ΄λ¬ν μ±μ§μ λ§μ‘±νλ μ λ ¬μ μμ μ λ ¬μ΄λΌ νλ€. - κ°μ (i, j)κ° μ‘΄μ¬νλ©΄ μ λ ¬ κ²°κ³Όμμ μ μ iλ λ°λμ μ μ jλ³΄λ€ μμ μμΉν΄μΌ νλ€.
- λ§μ½ κ·Έλνμ μ¬μ΄ν΄μ΄ μλ€λ©΄ μ΄ μ±μ§μ κ²°μ½ λ§μ‘±λ μ μμΌλ―λ‘ μμ μ λ ¬μ ν μ μλ€.
- μμ μ λ ¬ μκ³ λ¦¬μ¦μ μν μκ°μ
for루νλnλ² λ°λ³΅λλ€. λ§€ λ°λ³΅ λλ§λ€ 1κ°μ μ μ μ΄ μ νλκ³ ν΄λΉ μ μ μ΄ μ°κ²°λ μ§μΆ κ°μ μ΄ λͺ¨λ μ κ±°λλ€. κ° κ°μ μ λ¨ ν λ²μ©λ§ μ·¨κΈλλ€. κ·Έλ¬λ―λ‘ μ΄ μν μκ°μ Ι΅(V + E)μ΄λ€.
π μ΅λ¨ κ²½λ‘
- λ€μ΅μ€νΈλΌ μκ³ λ¦¬μ¦
- λͺ¨λ κ°μ κ°μ€μΉκ° μμ΄ μλ μΌλ°μ μΈ κ²½μ°λ‘, λ€μ΅μ€νΈλΌ μκ³ λ¦¬μ¦μΌλ‘ λ¬Έμ λ₯Ό νΌλ€.
- λ€μ΅μ€νΈλΌ μκ³ λ¦¬μ¦μ νλ¦Ό μκ³ λ¦¬μ¦κ³Ό κ±°μ μ μ¬νκ³ μν μκ°λ λμΌνλ€ νμ μ΄μ©νλ©΄ O(ElogV) μκ°μ΄ μμλλ€.
- νμ μ¬μ©νμ§ μκ³ λ°°μ΄μ μ¬μ©ν μ O(EV) μκ°μ΄ μμ. JavaScript κ²½μ° μ°μ μμνλ₯Ό μ§μ ꡬνν΄μΌ νλ€.
- νλ‘κ·Έλλ¨Έμ€ κ°μ₯ λ¨Ό λ Έλ
- νλ‘κ·Έλλ¨Έμ€ λ°°λ¬
- JavaScript λ€μ΅μ€νΈλΌ μκ³ λ¦¬μ¦ μμ
- 벨λ§-ν¬λ μκ³ λ¦¬μ¦
- μμ κ°μ€μΉκ° μ‘΄μ¬νλ κ²½μ°λ‘. 벨λ§-ν¬λ μκ³ λ¦¬μ¦μ΄ μ΄ μ νμ λ¬Έμ λ₯Ό νΌλ€. (μμ κ°μ€μΉλ νμ©νμ§λ§ κ°μ€μΉ ν©μ΄ μμΈ μ¬μ΄ν΄μ μ λ νμ©νμ§ μλλ€.)
- 벨λ§-ν¬λ μκ³ λ¦¬μ¦μ μμ μ¬μ΄ν΄μ΄ μ‘΄μ¬νλ©΄ λ¬Έμ μμ²΄κ° μ±λ¦½λμ§ μλλ€.
- 벨λ§-ν¬λ μκ³ λ₯΄μ¦μ μ¬μ©ν΄μΌ νλ κ³³μ λ€μ΅μ€νΈλΌ μκ³ λ¦¬μ¦μ μ¬μ©νλ©΄ μ λλ‘ ν΄λ₯Ό ꡬνμ§ λͺ»νλ€. λ°λλ‘ λ€μ΅μ€νΈλΌ μκ³ λ¦¬μ¦μ μ¬μ©ν΄ ν΄λ₯Ό ꡬν μ μλ κ²½μ°μλ νμ 벨λ§-ν¬λ μκ³ λ¦¬μ¦μ μ¨λ λλ€. κ·Έλ¬λ λ²¨λ§ ν¬λ μκ³ λ¦¬μ¦μ O(ElogV) μκ°μ΄ μμλλ λ€μ΅μ€νΈλΌ μκ³ λ¦¬μ¦μ λΉν΄ μκ°μ΄ λ§μ΄ κ±Έλ¦°λ€.
- JavaScript μμ
- λͺ¨λ μ μ΅λ¨ κ²½λ‘ μκ³ λ¦¬μ¦(νλ‘μ΄λ-μμ¬ μκ³ λ¦¬μ¦)
- νλ‘μ΄λ-μμ¬ μκ³ λ¦¬μ¦μ λμ νλ‘κ·Έλλ°μ μ리λ₯Ό μ΄μ©νμ§λ§ Ι΅(n3)μ ν΄κ²°νλ€.
- μ΄ μκ³ λ¦¬μ¦μ μν μκ°μ Ι΅(n)μ
for루νκ° μΈ κ²Ή μ€μ²©λμκ³ , κ° κ²½μ°μ λ¨ λ κ°μ§ κ²½μ°μ λμλ₯Ό λΉκ΅νλ κ²μΌλ‘ μμ μκ°μ΄ κ±Έλ € Ι΅(n3) μκ°μ μνλλ€. - νλ‘κ·Έλλ¨Έμ€ μμ
- νλ‘μ΄λ-μμ¬ μκ³ λ¦¬μ¦ JavaScript μμ
- μ¬μ΄ν΄μ΄ μλ κ·Έλνμ μ΅λ¨ κ²½λ‘
- λ€μ΅μ€νΈλΌ μκ³ λ¦¬μ¦, 벨λ§-ν¬λ μκ³ λ¦¬μ¦, μ¬μ΄ν΄μ΄ μλ κ·Έλνμ μ΅λ¨ κ²½λ‘ μκ³ λ¦¬μ¦μ νλμ μμ μ μ μμ λ€λ₯Έ λͺ¨λ μ μ κΉμ§ μ΅λ¨ κ²½λ‘λ₯Ό ꡬνλ€.
- λͺ¨λ μ μ΅λ¨ κ²½λ‘ μκ³ λ¦¬μ¦μ λͺ¨λ μ μ μ κ°μ μ΅λ¨ κ²½λ‘λ₯Ό ꡬνλ€. μ¦, μ μμ μκ³ λ¦¬μ¦μ
n-1κ°μ κ²½λ‘λ₯Ό ꡬνμ§λ§, νμμ μκ³ λ¦¬μ¦μn(n-1)κ°μ κ²½λ‘λ₯Ό ꡬνλ€. κ·Έλμ μμ μ νμ λ¨μΌ μμμ μ΅λ¨ κ²½λ‘ λ¬Έμ λΌ νκ³ , λ€μ μ νμ λͺ¨λ μ μ΅λ¨ κ²½λ‘ λ¬Έμ λΌκ³ νλ€.
π κ°μ°κ²° μμ
- μ ν₯ κ·Έλν G=(V, E)μμ Vμ λͺ¨λ μ μ μ(u, v)μ λν΄μ κ²½λ‘
u -> vμv -> uκ° μ‘΄μ¬νλ©΄ κ·Έλν Gλ κ°νκ² μ°κ²°λμλ€κ³ λ§νλ€. μ¦, μ΄λ€ λ μ μ μ μ‘λλΌλ μλ°©ν₯μΌλ‘ μλ‘μκ² μ΄λ₯΄λ κ²½λ‘κ° μ‘΄μ¬νλ©΄ κ°νκ² μ°κ²°λμλ€κ³ νλ€. κ·Έλνμμ κ°νκ² μ°κ²°λ λΆλΆ κ·Έλνλ€μ κ°κ° κ°μ°κ²° μμ(Strongly Connected Component)λΌ νλ€. - κ°μ°κ²° μμ ꡬνκΈ° μκ³ λ¦¬μ¦μ μν μκ°μ 1λ²μ DFSλ Ι΅(V+E)μκ°μ΄ λ λ€. 2μ κ·Έλν GRμ λ§λλ κ³Όμ λ λͺ¨λ κ°μ μ ν λ²μ© νμΌλ©΄μ λ°©ν₯λ§ λ°κΎΈμ΄μ£Όλ©΄ λλκΉ Ι΅(V+E)μκ°μ΄ λ λ€. 3λ²μ DFSλ Ι΅(V+E)μκ°μ΄ λ λ€. κ·Έλ¬λ―λ‘ μκ³ λ¦¬μ¦μ μ΄ μν μκ°μ Ι΅(V+E)μ΄λ€.
μ± μ μλ μμ λ₯Ό 곡λΆνκ³ μμ λ₯Ό JavaScriptλ‘ νμ΄λ³΄κΈ°
Metadata
Metadata
Assignees
Labels
NoteNoteNote