느슨하게 말하면, 시간 복잡도는 입력 크기가 증가함에 따라 알고리즘의 작업 수 또는 런타임이 어떻게 증가 하는지를 요약하는 방법입니다.
인생의 대부분의 것들과 마찬가지로, 칵테일 파티는 우리가 이해하는 데 도움이 될 수 있습니다.
의 위에)
파티에 도착하면 모든 사람의 손을 흔들어야합니다 (모든 항목에 대해 작업 수행). 참석자의 수가 N
증가함에 따라 모든 사람의 손을 흔드는 데 걸리는 시간 / 작업이로 증가합니다 O(N)
.
왜 O(N)
그렇지 cN
않습니까?
사람들과 악수하는 데 걸리는 시간에는 차이가 있습니다. 이것을 평균화하여 상수로 캡처 할 수 c
있습니다. 그러나 여기서 모든 사람과 악수하는 기본적인 작업 은 O(N)
무엇이든간에 항상 비례합니다 c
. 우리가 칵테일 파티에 가야하는지에 대해 토론 할 때, 우리는 종종 그 모임이 어떻게 보이는지에 대한 세부적인 내용보다 모든 사람을 만나야한다는 사실에 더 관심이 있습니다.
O (N ^ 2)
칵테일 파티의 호스트는 모든 사람들이 다른 사람들을 만나는 어리석은 게임을 원합니다. 따라서 N-1
다른 사람을 만나야 합니다. 다음 사람이 이미 당신을 만났기 N-2
때문에 사람들을 만나야합니다 . 이 시리즈의 합은입니다 x^2/2+x/2
. 참석자의 수가 증가함에 따라이 x^2
용어는 빠르게 커지 므로 다른 모든 것을 삭제합니다.
O (N ^ 3)
다른 모든 사람을 만나야하며, 각 회의 중에는 회의실에있는 다른 모든 사람에 대해 이야기해야합니다.
O (1)
호스트는 무언가를 발표하려고합니다. 그들은 와인 글라스를 딩하고 큰 소리로 말합니다. 모두가들을 수 있습니다. 참석자가 몇 명인지는 중요하지 않습니다.이 작업은 항상 같은 시간이 걸립니다.
O (로그 N)
호스트는 모든 사람을 알파벳 순서로 테이블에 배치했습니다. 댄은 어디에 있습니까? 당신은 그가 아담과 맨디 사이에 있어야한다고 생각합니다 (분명히 맨디와 잭 사이는 아닙니다!). 그는 조지와 맨디 사이에 있습니까? 아담과 프레드 사이, 신디와 프레드 사이에 있어야합니다. 그리고 ... 우리는 세트의 절반과 그 세트의 절반을 보면서 Dan을 효율적으로 찾을 수 있습니다. 궁극적으로 O (log_2 N) 개인을 봅니다.
O (N 로그 N)
위의 알고리즘을 사용하여 테이블에서 앉을 위치를 찾을 수 있습니다. 많은 사람들이 한 번에 하나씩 테이블에 와서 모두이 작업을 수행하면 O (N log N) 시간이 걸립니다. 항목을 비교해야 할 때 모음을 정렬하는 데 걸리는 시간입니다.
최고 / 최악의 사례
당신은 파티에 도착하고 이니 고를 찾아야합니다-얼마나 오래 걸립니까? 도착 시간에 따라 다릅니다. 모두가 밀링 작업을하는 경우 최악의 상황을 경험 한 경우 O(N)
시간 이 걸립니다 . 그러나 모든 사람이 테이블에 앉으면 O(log N)
시간 이 걸립니다 . 또는 호스트의 와인 글라스 소리를 활용할 수 있으며 O(1)
시간 이 걸립니다 .
호스트를 사용할 수 없다고 가정하면 Inigo 찾기 알고리즘 에 도착한 당사자의 상태에 따라 O(log N)
하한과 상한 이 있다고 말할 수 있습니다 O(N)
.
우주 및 커뮤니케이션
알고리즘이 공간 또는 통신을 사용하는 방법을 이해하는 데 동일한 아이디어를 적용 할 수 있습니다.
Knuth는 전자의 "곡의 복잡성" 에 관한 멋진 논문을 썼습니다 .
정리 2 : 복잡도 O (1)의 노래는 임의로 긴 곡이 있습니다.
증거 : (케이시와 선샤인 밴드로 인해). (15)에 의해 정의 된 노래 Sk를 고려하지만
V_k = 'That's the way,' U 'I like it, ' U
U = 'uh huh,' 'uh huh'
모든 k.