알고리즘 2

서로소 집합 자료구조 - 파이썬

1. 서로소 부분 집합들로 나누어진 원소들의 데이터를 처리하기 위한 자료구조입니다. 2. 서로소 집합 자료구조는 두 종류의 연산을 지원합니다. 2.1 합집합(Union) : 두 개의 원소가 포함된 집합을 하나의 집합으로 합치는 연산입니다. 2.2 찾기(Find) : 특성한 원소가 속한 집합이 어떤 집합인지 알려주는 연산입니다. 3. 서로소 집합 자료구조는 합치기 찾기(Union Find) 자료구조라고도 불립니다. 여러개 합치기 연산이 주어졌을 때 서로소 집합 자료구조의 동작 과정은 아래와 같습니다. 1. 합집합(Union) 연산을 확인하여, 서로 연결된 두 노드 A, B를 확인합니다. 1) A와 B 루트 노드 A`, B`를 각각 찾습니다. 2) A`를 B`의 부모 노드로 설정합니다. (단, A가 B보다 ..

알고리즘 2021.07.15

서로소 집합을 활용한 사이클 판별 - 파이썬

1. 서로소 집합은 무방향 그래프 내에서 사이클을 판별할 때 사용할 수 있습니다. 참고로 방향 그래프에서의 사이클 여부는 DFS를 이용해서 판별할 수 있습니다. 사이클 판별 알고리즘은 아래와 같습니다. 2. 입력받은 각 간선 정보를 하나씩 확인하며 두 노드의 루트 노드를 확인합니다. 1) 루트 노드가 서로 다르다면 두 노드에 대하여 합집합(Union) 연산을 수행합니다. 2) 루트 노드가 서로 같다면 사이클(Cycle)이 발생한 것입니다. 3. 그래프에 포함되어 있는 모든 간선에 대하여 2번 과정을 반복합니다. [초기단계] 모든 노드에 대하여 자기 자신을 부모로 설정하는 형태로 부모 테이블을 초기화 해줍니다. 인덱스 1 2 3 부모 1 2 3 [Step 1] 간선 (1,2)을 확인합니다. 노드 1과 노드..

알고리즘 2021.07.15