목록2024/11/26 (2)
컴퓨터공학 💻 도서관📚
싸이클(Cylce)은 '순환'을 의미한다. 일반적으로 싸이클은 좋지 못한 현상이다. 자칫 무한 루프에 빠질 수 있고 순환을 이루는 개체간의 종속성이 올라간다. 간선을 의존관계라고 생각해보면 A는 C에 의존하고 C는 B에 의존하고 B는 A에 의존한다. 종속성이 커질수록 결합도가 올라가 유지보수가 어려워진다. 원본 그래프에 존재하는 모든 간선을 활용하진 않고 일부 간선을 활용해서 모든 노드가 포함되어 있는 부분 그래프를 만든 것이 신장 트리이다. 최소 신장 트리 (MST, Minimum Spanning Tree) 크루스칼 알고리즘은 간선을 하나씩 확인하면서 최소 신장 트리에 포함을 시킬지, 시키지 않을지를 결정하는 방식으로 동작한다 (원래는 비용에 따라 오름차순 정렬을 해야 하는데 여기에..
(밑에 있는 예시를 보고 이해하기) 노드3과 노드4의 부모 노드는 다르다 여기서 두 노드가 같은 집합에 포함되어 있는지 확인하기 위해서는 각 노드의 루트노드를 찾아야 한다 노드3 : 3 --> 2 --> 1 노드4 : 4 --> 1 두 노드의 부모 노드를 따라가보니 두 노드의 루트 노드가 같으므로 두 노드는 같은 집합에 포함되어 있음을 확인할 수 있다. 서로소 집합 자료구조에서는 대부분 루트 노드에 바로, 즉시 접근할 수 없다 대부분 루트 노드를 찾기 위해 부모 태이블을 확인하며 계속 거슬러 올라가야 한다 find 함수는 특정 원소가 속한 집합을 찾기 위해 루트 노드를 반환한다 find 함수는 그 이름을 관행적으로 find_parent 라는 이름으로 짓는다 C++ 코드 자바 코드 ..