blackbbean   5년 전


자료구조를 배울때, 

Floyd보다 더 빠르다고 배웠는데요 (O(V^2) / O(V^3))

왜, 이 문제에서 Floyd는 되고 BFS는 되지 않는지 궁금합니다. 

방향이 고정되지 않아 앞 뒤로 가야하는 상황이 넓이를 크게 만들어서  BFS를 돌릴수없는건가요...?

또, 어떤 감으로(?) 어떤 근거로(?)

이 문제는 Floyd로 접근해야한다! 가 도출되는지 궁금합니다..

사실 전 DFS보단 BFS가 일반적으로 빠르니까 BFS를 결정했거든요. 

한번에 앞,뒤로 가는 데이터 검사도 용이하다 생각했고요.. 

luniro   5년 전

한가지 케이스면 BFS가 빠른 것이 맞습니다

하지만 Floyd는 한 번만 수행하면 각 케이스에 대해 O(1)로 찾아낼 수 있으므로, O(V^3)이 되지만,

BFS의 경우에는 각 케이스에 대해 O(V^2)이므로 총 시간복잡도는 (SV^2)이 되고, 여기서 최악의 경우 V = 400 S = 50000이므로 시간초과가 발생할 여지가 있습니다

blackbbean   5년 전

감사합니다 이해하였습니다. ! 

댓글을 작성하려면 로그인해야 합니다.