DFS/BFS 문제를 만났다
DFS 를 할때 이미 메모리에 올라간 노드는 다시 올리지 않는다는 설명이 있었다
하지만 그렇게 될경우 깊이 탐색을 할수 없다
한번에 2개의 인접 노드가 메모리에 올라가게 되고
먼저 올라간 노드는 나중에 올라간 노드가 처리되기 전까지 메모리에 남아있게 된다
나중에 올라간 노드가 다른 인접노드를 메모리에 올릴때
순환하는 노드가 있게 된다면 중복된 노드는 메모리에 올리지 못하고
헤당노드는 탐색을 할수 없다
먼저 처리할 메모리가 다 정리 되고 난뒤 중북 노드를 처리하게 되고
이 노드는 먼저 처리 되었어야 깊이탐색의 의미를 충족 할수 있게 된다
이러한 문제는 인접한 노드를 언제 메모리에 올릴것인지에 어떻게 생각하냐에 따라 달라진다
리스트의 개념은 정해져있지만 어떻게 사용하는지는 알고리즘 문제마다 다르다
그처럼 DFS 알고리즘또한 언제 메모리에 올릴것이냐는 그래프의 인접노드의 모양에 따라 달라질수 있는것이다
글로 풀어쓰면 햇갈리니 이런 생각을 하게된 강의랑크를 걸었다
https://www.youtube.com/watch?v=_hxFgg7TLZQ
해당 유투브 강의는 https://www.youtube.com/@eleanorlim
엔지니어 대한민국
www.youtube.com
얼마없는 시각적 알고리즘 강의 인데 알기 쉽게 설명해준다
해당영상에서의 DFS 설명은 해당 그래프에서 메모리에 올리는 때가 올바를지 몰라도
https://youtu.be/rand1XTwEnE?t=519
8:00 이후 설명
에서 인덱스를 확인 할때 주의 해야할점을 설명해주는대 처음의 강의와 다른 방향으로 설명을 해주신다
DFS/BFS가 어떤원리인지 케치만 하고
문제를 풀때는 유연하게 그 문제에 대응가능 하도록할 필요가 있다
+ 이미 사용한 데이터(방문한 노드)는 메모리에 올리지 않을때 DFS가 불가능하다는 생각은
방문, 탐색에 필요한 특정 규칙을 어떻게 정의 하는지에 따라 다르며
불가능한 가정을 바탕으로 풀어내려 했기 때문에 이러한 의문이 있었다
많은 문제를 풀어보며 해법을 익히는것이 이 의문의 해답 이었다
'생각정리' 카테고리의 다른 글
| ChatGPT와 코드 비교 (greedy) (2) | 2023.06.18 |
|---|---|
| Arrays.sort()와 Collections.sort() (0) | 2023.04.27 |
| 알고리즘 스터디 후기 / 내 문제점 기록 (0) | 2023.04.07 |
| chatGPT 가 GitHub 코드리뷰를 할수있을까? (0) | 2023.02.23 |
| BOJ PS java 2941 크로아티아 알파벳 (0) | 2023.02.17 |
댓글