본문 바로가기

prim2

프림 알고리즘(Prim's algorithm) 프림 알고리즘이란? 가중치가 있는 연결된 그래프의 모든 꼭짓점을 포함하면서 각 변의 비용의 합이 최소가 되는 부분 그래프인 트리, 즉 최소 비용 생성나무를 찾는 알고리즘 그래프에 간선이 많이 존재하는 밀집 그래프인 경우 적합하다. 시간 복잡도 - O(ElogV), 그래프가 충분히 뺵빽한 경우 피보나치 합을 이용하여 더 빠르게 값을 구할 수 있다. 설명 그래프에서 하나의 노드를 선택한 후 트리를 만든다. 그래프의 모든 간선이 들어있는 집합을 만든다. 모든 노드들을 방문하기 전까지 반복 ->트리 자체와 연결된 간선들 중에서 가중치가 가장 작은 간선을 선택 후 연결되어 있는 노드로 넘어감. 반복이 끝났을 때 최소비용 신창트리가 완성! 관련 문제 섬 연결하기 - https://eoghks0521.tistory... 2019. 10. 17.
섬 연결하기(프로그래머스, Java) 문제링크: https://programmers.co.kr/learn/courses/30/lessons/42861 코딩테스트 연습 - 섬 연결하기 | 프로그래머스 4 [[0,1,1],[0,2,2],[1,2,5],[1,3,1],[2,3,8]] 4 programmers.co.kr 알고리즘 설명: 가장 cost가 싼 간선으로 모든 노드를 연결하는 알고리즘이다. 양 방향으로 간선의 cost값을 알기 위해서 배열을 사용하여 두 방향 (A -> B, B -> A)의 cost를 넣어놓았다. 노드 0부터 탐색을 시작한다. 0부터 시작하므로 visited[0] = true 메서드 재귀호출하여 탐색한다. 재귀호출은 노드(섬)의 개수만큼 호출을 하고 변수 count를 만들어 재귀 호출한 횟수를 체크한다. 이중 for문으로 탐.. 2019. 10. 16.