그래프 - 위상정렬
·
자료구조
# [C언어로 쉽게 풀어쓴 자료구조(천인국)]를 공부하고 주요 내용을 정리하고자 작성하는 글입니다. # 해당 게시글에 대한 모든 피드백 환영합니다. 위상 정렬 Topological Sort 각 정점들의 선행순서를 위반하지 않으면서 모든 정점을 나열하는 것 생각의 순서 1. 진입차수가 0인 정점을 선택한다. (정점이 여러 개인 경우, 임의로 하나를 고른다.) 2. 선택된 정점과 이 정점에 부착된 간선들을 모두 삭제한다. 3. 2번에서 선택된 정점과 인접했던 정점들의 진입차수를 -1 한다. 4. 모든 정점이 사라질 때까지 1~3 과정을 반복한다. 알고리즘 HTML 삽입 미리보기할 수 없는 소스 그림으로 이해하기 아래의 방향 그래프에 대해 위상정렬을 수행해보자. 단, 핵심 키워드가 진입차수라는 점을 유의한다...
그래프 - Floyd 알고리즘
·
자료구조
# [C언어로 쉽게 풀어쓴 자료구조(천인국)]를 공부하고 주요 내용을 정리하고자 작성하는 글입니다. # 해당 게시글에 대한 모든 피드백 환영합니다. Floyd 알고리즘 그래프에 존재하는 모든 정점 사이의 최단 경로를 한번에 모두 찾아주는 알고리즘 Dijkstra 알고리즘에서는 '하나의 정점'에서 '다른 모든 정점'으로의 최단 경로를 찾았다면, Floyd 알고리즘에서는 '모든 정점'에서 '모든 정점'으로의 최단 경로를 구할 수 있다. 즉, 그래프의 모든 정점에 대한 최단 경로쌍을 구할 수 있다. 이 알고리즘의 핵심 원리는 '거쳐가는 정점'을 기준으로 최단 경로를 구한다. 알고리즘 HTML 삽입 미리보기할 수 없는 소스 생각의 순서 1. 하나의 정점에서 다른 정점으로 갈 때, 바로 갈 수 있으면 '기존 인접..
그래프 - Dijkstra 알고리즘
·
자료구조
# [C언어로 쉽게 풀어쓴 자료구조(천인국)]를 공부하고 주요 내용을 정리하고자 작성하는 글입니다. # 해당 게시글에 대한 모든 피드백 환영합니다. Dijkstra의 최단 경로 알고리즘 하나의 시작 정점으로부터, 모든 다른 정점까지의 최단 경로를 찾는 알고리즘. ≫임의의 두 정점 간의 거리는 항상 최단거리가 된다. 생각의 순서 시작정점 = v 정점 v의 인접정점에 대해서, weight[v][*] 값으로 distance[*] 값 초기화 집합 S에 포함 안된 정점에 대해서, 최소 distance 정점 u를 찾는다. 정점 u를 집합 S에 추가한다. 정점 u의 인접 정점 && 집합 S에 없는 정점에 대해 기존의 거리보다 정점 u를 거쳐가는게 더 빠르면 distance[z] = distance[u] + weigh..
그래프 - 최단경로
·
자료구조
# [C언어로 쉽게 풀어쓴 자료구조(천인국)]를 공부하고 주요 내용을 정리하고자 작성하는 글입니다. # 해당 게시글에 대한 모든 피드백 환영합니다. 최단경로 Shortest Path 그래프에서 정점 i와 j를 연결하는 경로 중에서 간선들의 가중치 합이 최소가 되는 경로 최단경로를 찾는 알고리즘 Dijkstra 알고리즘 하나의 시작정점에서 다른 정점까지의 최단 경로를 구함 Floyd 알고리즘 모든 정점에서 다른 모든 정점까지의 최단 경로를 구함 최단 경로 VS 최소비용트리 최소 비용 트리 최소의 비용으로 모든 점을 다 연결할 때 사용한다. 모든 점을 다 이은 경로가 최단 거리라고 말할 수 있지만, 임의의 두 점 간의 거리가 최단 거리라는 보장은 없다 최단 경로 임의의 두 점 간의 최단 거리 구할 때 사용한..
그래프 - Prim의 MST 알고리즘
·
자료구조
# [C언어로 쉽게 풀어쓴 자료구조(천인국)]를 공부하고 주요 내용을 정리하고자 작성하는 글입니다. # 해당 게시글에 대한 모든 피드백 환영합니다. Prim의 MST 알고리즘 시작 정점에서 출발하여 신장 트리 집합을 단계적으로 확장해 나가는 방법으로, 이전 단계에서 만들어진 신장 트리 집합에 인접한 정점들 중에서 최저 간선으로 연결된 정점을 선택한다. 아래의 그래프를 이용해 이해하며 위의 정의를 곱씹어 본다. 시작 정점을 0으로 두자. ==> 신장트리 집합: { 0 } 0의 인접 정점 중 최소 간선을 선택하자. ==> 신장트리 집합: { 0, 5 } 이 상태에서 신장트리 집합에 인접(*)한 정점을 살펴보면, 1과 4가 있다. 간선 (0,1)과 (5,4)의 가중치를 비교해보면 (5,4)가 27로서 (0,1..
그래프 - Kruskal의 MST 알고리즘
·
자료구조
# [C언어로 쉽게 풀어쓴 자료구조(천인국)]를 공부하고 주요 내용을 정리하고자 작성하는 글입니다. # 해당 게시글에 대한 모든 피드백 환영합니다. Kruskal의 MST 알고리즘 이 알고리즘은 탐욕적인 방법을 사용해 최소 비용 신장 트리를 알아낸다. 탐욕적인 방법이란, 선택할 때마다 그 순간에 가장 좋다고 판단되는 것을 선택하는 방법이다. *탐욕적인 방법 = 그리디 알고리즘 = greedy method 하지만, 항상 최적의 결론을 내리는가에 대한 검증이 필요한데, 크루스칼 알고리즘은 최적의 해답을 주는 것으로 증명이 되어 있어서 이 부분은 신경쓰지 않아도 된다. 크루스칼 알고리즘을 사용하는 이유는 최소 비용 신장 트리(MST)를 알아내기 위함이다. 최소비용신장트리가 되기 위해 필수적으로 만족해야 하는 ..