본문 바로가기

Algorithm

(5)
크러스컬 알고리즘 구현 2 (붕괴법칙을 적용한 방법) 프로그램 개요 : C 언어를 사용한 크러스컬 알고리즘(Kruskal Algorithm) 구현.붕괴법칙을 적용하지 않은 크러스컬 알고리즘.붕괴법칙을 적용한 크러스컬 알고리즘 프로그램 구조 및 설계:이전 글과 이어지는 포스팅입니다. 프로그램의 구조와 설계 방법은 아래 링크에서 보실 수 있습니다.2021.04.09 - [알고리즘] - 크러스컬 알고리즘 구현 1 (붕괴법칙을 적용하지 않은 방법)크러스컬 알고리즘 구현 1 (붕괴법칙을 적용하지 않은 방법)프로그램 개요 : C 언어를 사용한 크러스컬 알고리즘(Kruskal Algorithm) 구현. 붕괴법칙을 적용하지 않은 크러스컬 알고리즘. 붕괴법칙을 적용한 크러스컬 알고리즘 입력 파일 : 프로그램 실행 결과 :sobamemil.tistory.com 참고로 아래 ..
크러스컬 알고리즘 구현 1 (붕괴법칙을 적용하지 않은 방법) 프로그램 개요 : C 언어를 사용한 크러스컬 알고리즘(Kruskal Algorithm) 구현.붕괴법칙을 적용하지 않은 크러스컬 알고리즘.붕괴법칙을 적용한 크러스컬 알고리즘 크러스컬 알고리즘에 대한 설명은 아래 링크의 이전 글에서 볼 수 있습니다.2020.07.02 - [알고리즘] - 크러스컬(Kruskal) 알고리즘크러스컬(Kruskal) 알고리즘크러스컬(Kruskal) 알고리즘이란? 크러스컬 알고리즘은 최소 비용 신장 그래프를 찾는 알고리즘 입니다. 변의 개수를 E, 꼭지점의 개수를 V라고 한다면 크러스컬 알고리즘은 O(ElogV)의 시간 복잡도sobamemil.tistory.com 이 글에서는 예로 주어진 그래프에 대해서 크러스컬 알고리즘으로 문제를 해결하는 방법과 코드를 작성하였습니다. 입력 가중치..
크러스컬(Kruskal) 알고리즘 크러스컬(Kruskal) 알고리즘이란? 크러스컬 알고리즘은 최소 비용 신장 그래프를 찾는 알고리즘 입니다. 변의 개수를 E, 꼭지점의 개수를 V라고 한다면 크러스컬 알고리즘은 O(ElogV)의 시간 복잡도를 갖습니다. 크러스컬의 MST(욕심쟁이 방법) 알고리즘 간략 코드 : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 edge_set kruskal_MST(edge_set E, int n) { sort(E); // 간선 정렬 edge_set MST_E = { }; for (i=0; i
합병 정렬(Merge Sort) 알고리즘 합병 정렬(Merge Sort)이란? 분할 정복 알고리즘(=Divide and conquer algorithm 즉, 그대로 해결할 수 없는 문제를 작은 문제로 분할하여 문제를 해결하는 방법이나 알고리즘입니다.)의 하나로 O(n log n)의 시간 복잡도를 가지고 있습니다. 합병 정렬의 작동 알고리즘은 아래와 같습니다. 리스트의 길이가 1 이하이면 이미 정렬된 것으로 본다. 그렇지 않은 경우에는 분할(divide) : 정렬되지 않은 리스트를 절반으로 잘라 비슷한 크기의 두 부분 리스트로 나눈다. 정복(conquer) : 각 부분 리스트를 재귀적으로 합병 정렬을 이용해 정렬한다. 결합(combine) : 두 부분 리스트를 다시 하나의 정렬된 리스트로 합병한다. 이때 정렬 결과가 임시배열에 저장된다. 복사(c..
삽입 정렬(Insertion Sort) 알고리즘 삽입 정렬(Insertion Sort)이란? 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘입니다. 삽입 정렬의 시간 복잡도는 O(n2)이며 안정 정렬입니다. 또한 배열이 길어질수록 효율이 매우 떨어지지만 구현이 간단하다는 장점이 있습니다. 삽입 정렬 알고리즘을 구현하기 전에 의사코드(Pseudocode)로 먼저 이해를 하고 코드를 작성하는 것이 더 쉽게 작성할 수 있을 것입니다. Pseudocode : 1 2 3 4 5 6 7 8 9 //InsertionSort pseudo code InsertionSort(A,n) // sort A[1...n] for j