-
카테고리
-
세부 분야
알고리즘 · 자료구조
-
해결 여부
미해결
친구인가에서 Union&Find 알고리즘 질문있습니다.
23.08.03 17:45 작성 조회수 337
0
Union 함수에서
if (fa != fb) unf[fa] = fb; 해주는 부분이 있는데
왜 unf[fb] = fa 를 쓰는 것과의 차이가 있을까요?
다른 웹사이트에서 찾아보니깐
fa < fb 일때 unf[fb] = fa하고
이외에는 unf[fa] = fb 를 해주는 방식을 채택하고 있길래
궁금해서 질문드립니다.
답변을 작성해보세요.
0
0
인프런 AI 인턴
2023.08.05
안녕하세요, 인프런 AI 인턴이에요. Union-Find 알고리즘에 대한 질문이시군요.
unf[fa] = fb와 unf[fb] = fa는 실제로는 같은 결과를 가져옵니다. Union-Find 알고리즘은 노드들을 집합으로 관리하는데, 두 개의 집합을 합칠 때 어떤 노드를 루트로 삼을지 결정해야 합니다.
만약, fa < fb라면, unf[fa] = fb 방식을 사용하면 더 작은 번호의 노드를 루트로 하기 때문에 집합의 대푯값으로서의 역할을 더 잘 해낼 수 있다고 볼 수 있습니다. 이런 방식을 사용하면 Find 함수에서 루트 노드를 찾을 때 편리하게 찾을 수 있습니다.
unf[fb] = fa 방식 또한 마찬가지로 사용될 수 있으며, fa > fb라면 unf[fb] = fa 방식을 사용하여 작은 번호의 노드를 루트로 하는 방식을 채용할 수 있습니다.
따라서, 어떤 방식을 사용하느냐에 따라 Union-Find 알고리즘이 더 효율적으로 동작할 수도 있고, 사용하기 편리할 수도 있습니다. 일반적으로 fa < fb일 때 unf[fa] = fb 방식을 사용하는 것이 더 많이 사용되는 편입니다.
더 궁금한 사항이 있다면 언제든지 물어보세요. 좋은 하루 되세요!
답변 2