본문 바로가기

그래프16

[알고리즘] 위상 정렬 (Topological Sorting) 위상 정렬 (Topological Sorting) 사이클이 없는 유향 그래프의 모든 정점을 정렬하는 알고리즘 간선 (i, j) 가 존재하면 정점 i는 반드시 정점 j보다 앞에 위치해야한다. → 사이클이 있으면 이 성질을 만족할 수 없다. 시간 복잡도 : O(V+E) 알고리즘 각 노드마다의 진입 간선을 보관하는 배열 in_edge 생성 맨 처음, 진입 간선이 없는 노드들을 queue에 추가 queue가 빌 때까지 반복문 실행 현재 노드 now 출력 now에 연결된 진출 노드들 탐색 진출 노드 next의 진입 간선 줄이기 next의 진입 간선이 0이면 next 앞에 있는 노드들이 모두 출력되었다는 의미이므로 next를 queue에 추가 import java.util.*; public class Main { .. 2020. 9. 17.
[자료구조] 신장 트리, 최소 비용 신장 트리 신장 트리 (Spanning Tree) 신장(Spanning) : 모든 노드를 포함한다는 의미 트리의 일종이기 때문에 cycle이 없어야 한다. 기존 그래프가 가진 모든 노드를 순환 없이 서로 연결시킨 트리 트리 간선 : 신장 트리에 포함된 간선 비트리 간선: 신장 트리에 포함되지 않은 간선 ​ 최소 비용 신장 트리 (Minimum Cost Spanning Tree) 무향 가중 그래프의 신장 트리 중에서 가중치의 합이 최소인 신장 트리 최소 신장 트리 구하는 알고리즘 : Prim(프림), Kruskal(크루스칼) 1197번: 최소 스패닝 트리 첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타.. 2020. 9. 15.
[자료구조] 그래프 (Graph) 그래프 (Graph) 노드(Node, Vertex), 간선 (Edge)의 집합 객체 사이의 연결 관계를 표현하는 자료구조 가장 표현력이 우수한 자료구조로, 현실세계의 다양한 문제를 효과적으로 모델링하는 목적 트리는 계층구조가 아닌 일반적인 관계는 나타낼 수 없다는 한계를 지님 ​ 그래프 종류 구분 종류 설명 간선의 방향성 무방향 그래프 방향X 방향 그래프 방향O 간선의 가중치 가중 그래프 간선에 가중치 할당 구조적 특징 완전 그래프 연결 가능한 최대 간선 수 가짐 부분 그래프 원래 그래프의 일부분 다중 그래프 중복된 간선 포함 ​ 1. 무방향 그래프 간선에 방향이 없는 그래프 노드 : V(A) = { A, B, C, D, E} 간선 : G(A) = {(A,B), (B, D), (C,D), (D,E), (.. 2020. 9. 15.
[알고리즘] 순위 (프로그래머스 Level3) 코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr 그래프 탐색 문제이다. 순위라고 했으므로 현재 그래프 내에서의 각 노드들의 위치를 알아내야 하는 문제이다. 즉, 각 선수마다 해당 선수보다 강한 선수 + 약한 선수의 수를 구해서 합쳐서 n이 된다면 랭킹을 정확하게 구할 수 있는 선수이다. 예전에도 비슷한 문제를 풀어본 기억이 있는데 'DFS + 역그래프 + DP + Set'을 적절히 활용하면 쉽게 풀 수 있다. Solution 예시 input을 단방향 그래프로 그린 모습이다. 보다시피 2번 선수 뒤에는 1, 3, 4번, 앞에는 5번 선수가 있으므로 다른 모든 선수와의 관계를 명확히 할 수 있다. 5번 또한 본인 뒤에 .. 2020. 9. 7.