2023. 6. 3. 16:27ㆍ알고리즘
* 정렬 알고리즘은 시간복잡도가 세타(n)이 될 수 없다.
lower bound를 찾아서 이것보다 낮아질 수 없음을 보이기
-> computational complexity analysis
* key값의 비교만으로 정렬하기
예)

lower bound : n lg n
Insertion 정렬
: 이미 정렬된 배열에 원소 하나씩 추가하며 정렬하는 알고리즘
자기보다 작은 원소를 발견할 떄까지 앞으로 보내고 앞 원소는 뒤로 이동

<수도 코드>

Worst case 시간 복잡도:
Basic Operation: s[j]와 x 비교
Input Size: n(key의 개수)
-> 역순으로 정렬되어있을 때 worst case가 발생한다.
-> 이 때 원소 i마다 i-1번의 비교가 발생한다. (2<=i<=n)

Average Case 시간복잡도:

슬롯 k(1<=k<=i)에 x를 배치할 확률은 모든 k에 대하여 동일하므로
주어진 i에 대해 x를 삽입하는데 필요한 평균 비교횟수는
->

->

Lower Bounds for Algorithms that remove at
most one inversion per comparison
* Inversion: 잘못된 순서로 있는 키의 쌍
예)

-> 비교 한번에 기껏해야 inversion 1개를 없앤다.
= remove at most one inversion per comparison
* worst case일때 lower bound : 적어도 n(n-1)/2번 key의 비교
* Average case일때 lower bound 구하기
-> n개의 원소가 배치되어있는 경우의 수는 n!
평균 inversion 개수
=

만약 k개의 inversion을 갖는 순열이있다면: inversion: k개
그것을 transpose하면 C(n,2)-k개의 inversion이 생긴다 : inversion이 아닌 것: k개
* C(n,2): 전체쌍

쌍마다 inversion의 개수는 c(n,2)개
그러므로 평균 inversion 개수는

따라서 Average case일때 lower bound는 n(n-1) /4
'알고리즘' 카테고리의 다른 글
| chap 9. Introduction to the Theory of NP (0) | 2023.06.06 |
|---|---|
| computational complexity : The Sorting Problem(2) (0) | 2023.06.03 |
| Branch and Bound(분기한정) -(2) TSP Problem (0) | 2023.06.02 |
| Branch and Bound(분기한정) -(1)The 0-1 Knapsack Problem (0) | 2023.06.01 |
| 백트래킹 -(3) The 0-1 Knapsack Problem (1) | 2023.05.28 |