์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
Recent Posts
Link
Tags
- select
- modify
- ABAP
- call function
- Import
- dev
- Function Module
- ๊น์ด์ฐ์ ํ์
- ๋ชจ๋ํ
- SAP
- PRD
- structure
- t์ฝ๋
- ์๊ณ ๋ฆฌ์ฆ
- ์ด๋ถํ์
- abap dictionary
- ๋๋น์ฐ์ ํ์
- ์ค๋ฒ3
- ๋จ๋ฐฉํฅํ์
- Internal Table
- screen
- Export
- ์คํธ๋ญ์ฒ
- qas
- ์๋ฐฉํฅํ์
- tasknumber
- ์ค๋ฒ2
- ๋ฐฑ์ค
- subscreen
- screen program
Archives
- Today
- Total
CS Student’s SAP&Tech Journey๐ซ
[์๊ณ ๋ฆฌ์ฆ] ๊น์ด์ฐ์ ํ์(DFS)์ด๋ ๋ณธ๋ฌธ
์๊ณ ๋ฆฌ์ฆ/์๊ณ ๋ฆฌ์ฆ ๊ฐ๋
[์๊ณ ๋ฆฌ์ฆ] ๊น์ด์ฐ์ ํ์(DFS)์ด๋
์ธํฌ๋งํฑ 2024. 10. 31. 17:291. ๊น์ด ์ฐ์ ํ์ DFS ( Depth - First Search)
DFS๋ ๊น์ด ์ฐ์ ํ์์ด๋ผ๊ณ ๋ ๋ถ๋ฅด๋ฉฐ ๊ทธ๋ํ์์ ๊น์ ๋ถ๋ถ์ ์ฐ์ ์ ์ผ๋ก ํ์ํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. DFS๋ ์คํ ์๋ฃ๊ตฌ์กฐ ํน์ ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํ๋ฉฐ, ๊ตฌ์ฒด์ ์ธ ๋์ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํ์ ์์ ๋ ธ๋๋ฅผ ์คํ์ ์ฝ์ ํ๊ณ ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ๋ฅผ ํฉ๋๋ค.
- ์คํ์ ์ต์๋จ ๋ ธ๋์ ๋ฐฉ๋ฌธํ์ง ์์ ์ธ์ ํ ๋ ธ๋๊ฐ ํ๋๋ผ๋ ์์ผ๋ฉด ๊ทธ ๋ ธ๋๋ฅผ ์คํ์ ๋ฃ๊ณ ๋ฐฉ๋ฌธ์ฒ๋ฆฌํฉ๋๋ค. ๋ฐฉ๋ฌธํ์ง ์์ ์ธ์ ๋ ธ๋๊ฐ ์์ผ๋ฉด ์คํ์์ ์ต์๋จ ๋ ธ๋๋ฅผ ๊บผ๋ ๋๋ค.
- ๋์ด์ 2๋ฒ์ ๊ณผ์ ์ ์ํํ ์ ์์ ๋๊น์ง ๋ฐ๋ณตํฉ๋๋ค.
2. DFS ๋์ ์์ (์์๋ ๋ฒํธ๊ฐ ๋ฎ์ ์ธ์ ๋ ธ๋ ๋ถํฐ ๋ฐฉ๋ฌธ)
- [step 0] ๊ทธ๋ํ ์ค๋น (๋ฐฉ๋ฌธ ๊ธฐ์ค : ๋ฒํธ๊ฐ ๋ฎ์ ์ธ์ ๋
ธ๋๋ถํฐ) / ์์๋
ธ๋ : 1
- [step 1] ์์๋
ธ๋์ธ ‘1’์ ์คํ์ ์ฝ์
ํ๊ณ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ
- [step 2] ์คํ์ ์ต์๋จ ๋
ธ๋์ธ ‘1’์ ๋ฐฉ๋ฌธํ์ง ์์ ์ธ์ ๋
ธ๋ ‘2’, ‘3’, ‘8’,์ด ์์
์ด ์ค์์ ๊ฐ์ฅ ์์ ๋ ธ๋์ธ ‘2’๋ฅผ ์คํ์ ๋ฃ๊ณ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ
- [step 3] ์คํ์ ์ต์๋จ ๋
ธ๋์ธ ‘2’์ ๋ฐฉ๋ฌธํ์ง ์์ ์ธ์ ๋
ธ๋ ‘7’์ด ์์
๋ฐ๋ผ์, ‘7’๋ฒ ๋ ธ๋๋ฅผ ์คํ์ ๋ฃ๊ณ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ
- [step 4] ์คํ์ ์ต์๋จ ๋
ธ๋์ธ ‘7’์ ๋ฐฉ๋ฌธํ์ง ์์ ์ธ์ ๋
ธ๋ ‘6’, ‘8’์ด ์์
์ด ์ค์์ ๊ฐ์ฅ ์์ ๋ ธ๋ ‘6’๋ฒ ๋ ธ๋๋ฅผ ์คํ์ ๋ฃ๊ณ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ
- [step 5] ์คํ์ ์ต์๋จ ๋
ธ๋์ธ ‘6’์ ๋ฐฉ๋ฌธํ์ง ์์ ์ธ์ ๋
ธ๋๊ฐ ์์
๋ฐ๋ผ์ ์คํ์์ 6๋ฒ ๋ ธ๋๋ฅผ ๊บผ๋
- [step 6] ์คํ์ ์ต์๋จ ๋
ธ๋์ธ ‘7’์ ๋ฐฉ๋ฌธํ์ง ์์ ์ธ์ ๋
ธ๋ ‘8’์ด ์์
๋ฐ๋ผ์ ‘8’๋ฒ ๋ ธ๋๋ฅผ ์คํ์ ๋ฃ๊ณ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ
- ์ด๋ฐ ๊ณผ์ ์ ๋ฐ๋ณตํ์ ๋, ์ ์ฒด ๋
ธ๋์ ํ์์์ (์คํ์ ๋ค์ด๊ฐ ์์)๋ ๋ค์๊ณผ ๊ฐ๋ค.
โ๏ธ ํ์ ์์ : 1 → 2 → 7→ 6 → 8 →3→ 4→ 5
3. DFS ์ฝ๋ ์์ (์์๋ ๋ฒํธ๊ฐ ๋ฎ์ ์ธ์ ๋ ธ๋ ๋ถํฐ ๋ฐฉ๋ฌธ)
* ์๋ฐฉํฅ ํ์ ๊ฐ์
* ๋ฐฉ๋ฌธํ ๋
ธ๋์ ์์๋ฅผ ์ถ๋ ฅํ๋ ๋ฌธ์
# ๊ฐ ๋
ธ๋๊ฐ ์ฐ๊ฒฐ๋ ์ ๋ณด๋ฅผ ํํ(2์ฐจ์ ๋ฆฌ์คํธ)
graph = [
[], # 0๋ฒ ๋
ธ๋ ๋น์๋๋ค.
[2,3,8], # 1๋ฒ๋
ธ๋์ ์ฐ๊ฒฐ๋ ๋
ธ๋๋ฒํธ
[1,7], # 2๋ฒ๋
ธ๋์ ์ฐ๊ฒฐ๋ ๋
ธ๋๋ฒํธ
[1,4,5],
[3,5],
[3,4],
[7],
[2,6,8],
[1,7], # 8๋ฒ๋
ธ๋์ ์ฐ๊ฒฐ๋ ๋
ธ๋๋ฒํธ
]
# ๊ฐ ๋
ธ๋๊ฐ ๋ฐฉ๋ฌธ๋ ์ ๋ณด๋ฅผ ํํ(1์ฐจ์ ๋ฆฌ์คํธ)
v = [False]*9
# ์ ์๋ DFS ํจ์ ํธ์ถ
def dfs(graph, start, v): # v๋ ์์๋
ธ๋
v[start]= True # ๋ฐฉ๋ฌธํ ๋
ธ๋๋ True๋ก ๋ฐ๊ฟ์ค๋ค.
print(start, end=' ')
for i in graph[start]: # graph ๋ฐฉ๋ฌธ ๋
ธ๋์ ์ฐ๊ฒฐ๋ ๋
ธ๋์ ๋ฐฉ๋ฌธ ์ฌ๋ถ ํ์ธํ๊ธฐ
if v[i] == False: # ๋ง์ฝ ์ฐ๊ฒฐ๋ ๋
ธ๋๊ฐ ์์ง ๋ฐฉ๋ฌธ์ด ์๋์๋ค๋ฉด
dfs(graph,i,visited) # ๋ค์ dfs ํจ์ ์คํํ์ฌ True๋ก ๋ง๋ค์ด์ฃผ๋ ์์
ํ์
dfs(graph,1,visited)
>> 1 2 7 6 8 3 4 5
'์๊ณ ๋ฆฌ์ฆ > ์๊ณ ๋ฆฌ์ฆ ๊ฐ๋ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] ๊ตฌํ(Implementation) / ํ๋ ฌ, ์๋ฎฌ๋ ์ด์ ๋ฌธ์ ์ ๊ทผ ๋ฐฉ๋ฒ! (1) | 2025.05.16 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] ๊ทธ๋ฆฌ๋(Greedy) ์๊ณ ๋ฆฌ์ฆ์ด๋ (0) | 2025.05.16 |
[์๊ณ ๋ฆฌ์ฆ] ๋๋น์ฐ์ ํ์(BFS)์ด๋ (0) | 2024.11.05 |