๋ฒจ๋ง-ํฌ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋? ํ ๋ ธ๋์์ ๋ค๋ฅธ ๋ ธ๋๊น์ง์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์์ ๊ฐ์ค์น๋ฅผ ๊ฐ๋ edge(๊ฐ์ )์ด ์์ ๋ ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ๊ณผ ์ฐจ์ด๋ ๋ฌด์์ธ๊ฐ? ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ - ๋งค๋ฒ ๋ฐฉ๋ฌธํ์ง ์๋ ๋ ธ๋ ์ค์์ ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ์งง์ ๋ ธ๋๋ฅผ ์ ํํด ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํด๋๊ฐ๋ค. - ์์ ๊ฐ์ค์น๋ฅผ ๊ฐ๋ edge(๊ฐ์ )์ด ์๋ค๋ฉด ์ต์ ์ ํด๋ฅผ ์ฐพ์ ์ ์๋ค. - ์๊ฐ ๋ณต์ก๋๊ฐ ๋น ๋ฅด๋ค. ๋ฒจ๋ง-ํฌ๋ ์๊ณ ๋ฆฌ์ฆ - ๋งค ๋จ๊ณ๋ง๋ค ๋ชจ๋ edge(๊ฐ์ )์ ์ ๋ถ ํ์ธํ๋ฉด์ ๋ชจ๋ ๋ ธ๋๊ฐ์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํด๋๊ฐ๋ค. - ์์ ๊ฐ์ค์น๋ฅผ ๊ฐ๋ edge๊ฐ ์์ด๋ ์ต์ ์ ํด๋ฅผ ์ฐพ์ ์ ์๋ค. - ์๊ฐ ๋ณต์ก๋๊ฐ ๋๋ฆฌ๋ค. ์ฆ, ๋ชจ๋ edge์ ๊ฐ์ค์น๊ฐ ์์์ผ ๋๋ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์, ์์ ๊ฐ์ค์น๋ฅผ ๊ฐ๋..
๋ค์ด๊ฐ๊ธฐ ์ ์ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ์ดํดํ๊ธฐ ์ํด ์ฌ๋ฌ ์ ํ๋ธ์ ๋ธ๋ก๊ทธ๋ฅผ ๋ฐฉ๋ฌธํ์๋๋ฐ ๋์ฒด๋ก ์ค๋ช ์ด ์ด๋ ต๊ฑฐ๋ ์๋ต์ด ๋ง๋ค.. ์ฝ๋ ์ค๋ช ๋ ์์ธํ์ง ์์ ์์ฌ์์ด ์์๋ค. (ํนํ, ๋ธ๋ก๊ทธ์ ์๋ ํ๋ ๊ทธ๋ฆผ์ ์์ด๋ ๊ฒ ๋ฑ๋ฑํ๊ฑธ๊น.. ์ ๋ชจ๋ฅด๋ ์ฌ๋์๊ฒ ๊ฑฐ๋ถ๊ฐ์ด ๋ ๋ค) ์ง์ ํ๋ํ๋ ๊ทธ๋ ค๊ฐ๋ณด๋ฉฐ ์ดํดํ ๋์ ๊นจ๋ฌ์์ ๋ค๋ฅธ ๋ถ๋ค๊ป ์์ธํ๊ณ ์ฝ๊ฒ, ๋ง์น ์๋ฌด๊ฒ๋ ๋ชจ๋ฅด๋ ์ด๋ฆฐ ์์ด์๊ฒ ์ค๋ช ํ๋ฏ์ด ์ค๋ช ํด๋ณด๋ ค๊ณ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์๊ฐ์ด ์ง๋๋ฉด ์์ด๋ฒ๋ฆฌ๋ ๋ฏธ๋์ ๋๋ฅผ ์ํ์ฌ ์์ธํ ๊ธฐ์ ํด๋ณด์๋ค. ์์ธํ ์์๋ถํฐ ์ ์ ๊ณผ์ ์ ์ถ์ํํด๋๊ฐ๋ฏ๋ก ์ดํดํ๊ธฐ ์ฌ์ธ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค. ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ด๋? ๊ทธ๋ํ์ ํ ์ ์ (Vertex ๋๋ Node)์์ ๋ชจ๋ ์ ์ ๊น์ง์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ๊ฐ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, ์ต๋จ ๊ฒฝ๋ก ๋ฌธ์ ์ ์ฌ์ฉ๋๋ค..
BFS๋ ํ๋ฅผ ์ด์ฉํ ๋ฐ๋ณต ๊ตฌ์กฐ๋ก ๊ตฌํํ๋ค. ๋จผ์ ํ๋ฅผ ์ด์ฉํ BFS Pseudo code๋ฅผ ๋ณด๋ฉด์ ์ด๋ป๊ฒ ๊ตฌํํด์ผํ ์ง ์๊ฐํด๋ณด์. 1) ํ๋ฅผ ์ด์ฉํ BFS Pseudo code BFS(G, start_v) let Q be a queue label start_v as discovered Q.enqueue(start_v) while Q is not empty do v := Q.dequeue() if v is the goal then return v for all edges from v to w in G.adjacentEdges(v) do if w is not labeled as discovered then label w as discovered w.parent := v Q.enqueue(w) 2) ํ๋ฅผ ์ด..
1) ์ฌ๊ท๋ฅผ ์ด์ฉํ DFS ๊ตฌํ Pseudo code G๋ ๊ทธ๋ํ, v๋ ์ ์ (vertex)์ผ ๋, DFS(G,v) lable v as discovered for all directed edges from v to w that are in G.adjacentEdges(v) do if vertex w is not labeled as discovered then recursively call DFS(G,w) ์ฌ๊ท๋ฅผ ์ด์ฉํ DFS ๊ตฌํ Python code def recursive_dfs(v, discovered=[]): discovered.append(v) for w in graph[v]: if w not in discovered: discovered = recusrive_dfs(w, discovered) ..
- Total
- Today
- Yesterday
- mdn
- Browser
- react
- ๊ทธ๋ํ
- Component
- Context API
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์ ๋ ฌ
- DB
- ๋ฆฌ์กํธ
- ํจ์
- BOJ
- CSS
- leetcode
- ์๊ณ ๋ฆฌ์ฆ
- JavaScript
- ํ์ด์ฌ
- ์๋ฌ
- useState
- Python
- ์๋ฐ์คํฌ๋ฆฝํธ
- ๋ธ๋ผ์ฐ์
- React Query
- zustand
- github
- DOM
- state
- error
- git
- ์๋ฃ๊ตฌ์กฐ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |