본문 바로가기

CS/데이터구조

Week1-2 Asymptotic Analysis_Linear and Binary Search

Linear Search: 선형 탐색

특정 값을 찾기위해, 맨 앞에서부터 순서대로 하나하나 확인하는 탐색방법이다.

앞에서 설명했던, 임의의 정수 n개가 들어간 n개의 배열에서 최댓값을 찾는 경우 또한 선형탐색이라 볼 수 있다.

최악의 경우, n번 시행하므로, 선형탐색의 Time complexity 는 n의 꼴의 함수로 표현할 수 있다.

이떄, 앞의 계수나 뒤에 더해진 상수값은 굳이 신경쓰지 않아도 된다.

Asymptotic Analysis 는 n이 무한대로 갈때로 가정하기 때문에 n의 계수의 차이와 상수값의 차이는 고려하지 않고, 만약 T(n)의 꼴이라면 Asymptotic Analysis 관점에서 본다면 같은 Time Complexity 를 가지고 있다고 할 수 있음.  

Binary Search: 이진 탐색

미리 오름차순이나 내림차순으로 정렬되어있는 데이터를 대상으로한다.

이게 무슨말이냐 하면, 100개의 정렬된 1부터 100까지의 숫자가 써있는 카드가 존재한다고 가정하자.

여기서, 33이라는 숫자를 찾으려고한다.

그렇다면, 우선 100개의 카드뭉치를 반으로 가른다.

그렇게되면 1-50 과 51-100 의 두 카드뭉치가 있고, 첫번째 카드뭉치를 제외하고 나머지 카드뭉치는 고려대상에서 제외시키자. 너가찾으려는 값은 33이니까 보지않아도된다. 

이런식으로 크기는 한번 수행할때마다, 전체 갯수의 절반이 되고, 찾으려는 값 33이 나올때까지, 즉 카드의 갯수가 한장이 될때까지 수행하면된다. 

 

이걸 일반화해서 표현해보자.

n   ->   n * 1/2   ->   n * 1/2 * 1/2   ->   ....   --> n *(1/2)^K    ( n은 데이터의 갯수, K는 시행횟수 )

 

n *(1/2)^K = 1 을 만족해아한다. 

K에 대해 정리

--> K= log 2 n

 

따라서, 이진탐색의 그래프는 로그함수의 형태를 띄고, 선형탐색의 그래프는 직선의 형태를 띄게된다.

시행횟수가 적을수록 좋으므로, 함수값이 더 아래에 분포되어있는 Binaty Search가 시간복잡도 측면에서 Linear Search 보다 좋은 알고리즘이라고 말할 수 있다.  

 

'CS > 데이터구조' 카테고리의 다른 글

Week1-2 Asymptotic Ananysis_Landau Symbols  (0) 2022.09.14
Week1-2 Asymptotic Analysis  (0) 2022.09.14