가 고정되어 있다고 가정하면 (두 링크의 강의가 수행하는 것처럼) 알고리즘 선택에 따라 계산에 O ( n d + k n ) 런타임 또는 O ( n d k ) 런타임 이 필요한지 여부가 결정 됩니다.케이O ( n 일+ k n )O ( n 일k )
먼저, 런타임 알고리즘을 고려해 봅시다 :O ( n 일+ k n )
- 훈련 세트의 모든 관측치 i 에 대해 을 초기화합니다.s e l e c t e d나는= 0나는
- 각 트레이닝 세트의 관측 , 컴퓨팅 D 나 S t I , 트레이닝 세트의 관측으로 새로운 관측의 거리 내가나는디I S t나는나는
- 들면 하기 케이 : 루프 모든 트레이닝 세트의 관측을 통해 색인 선택 I를 최소로 D 나 S t의 I의 값을하고있는 것은 s의 E L E C t E D 난 = 0 . 설정하여 이러한 관찰을 선택 S E L E C t E D 난 = 1 .j = 1케이나는디I S t나는s e l e c t e d나는= 0s e l e c t e d나는= 1
- 선택된 인덱스를 반환케이
각 거리 계산에는 런타임이 필요하므로 두 번째 단계에는 O ( n d ) 런타임이 필요 합니다. 세 번째 단계에서 각 반복 처리를 위해, 우리는 수행 O ( N ) 단계는 전체 요구하므로, 트레이닝 세트의 관측을 통해 반복하여 작업을 O ( N K ) 일. 첫 번째와 네 번째 단계는 O ( n ) 작업 만 필요 하므로 O ( n d + k n ) 런타임을 얻습니다 .O ( 일)O ( n 일)O ( n )O(nk)O(n)O(nd+kn)
이제 런타임 알고리즘을 생각해 봅시다 :O ( n 일k )
- 훈련 세트의 모든 관측치 i 에 대해 을 초기화합니다.s e l e c t e d나는= 0나는
- 들면 하기 k는 모든 트레이닝 세트의 관측을 통해 루프와 거리 계산 : D를 선택된 트레이닝 세트 관측하고 새로운 관측 사이. s e l e c t e d i = 0 인 d 값 이 가장 작은 인덱스 i 를 선택하십시오 . 설정하여 이러한 관찰을 선택 S E L E C t E D 난 = 1 .j = 1케이디나는디s e l e c t e d나는= 0s e l e c t e d나는= 1
- 선택된 인덱스를 반환케이
두 번째 단계에서 각 반복에 대해 새 관측치와 각 훈련 세트 관측치 사이의 거리를 계산하여 반복에 작업이 필요하므로 O ( n d k )가 전체적으로 작동합니다.O ( n 일)O ( n 일k )
두 알고리즘의 차이점은 첫 번째 알고리즘은 거리를 사전 계산하고 저장하고 ( 추가 메모리 필요) 두 번째 알고리즘은 그렇지 않다는 것입니다. 그러나, 우리는 이미 필요한 전체 트레이닝 세트를 저장 주어진 O ( N D ) 뿐만 아니라,은, 메모리 의 E L E는 C t의 전자의 개발 이 요구되는 벡터 O ( N ) 스토리지 두 알고리즘 저장 점근 인 같은. 결과적으로 k > 1 의 더 나은 점근 적 런타임 은 첫 번째 알고리즘을 더 매력적으로 만듭니다.O ( n )O ( n 일)selectedO(n)k>1
알고리즘 개선을 사용하여 런타임 을 얻을 수 있다는 점은 주목할 가치가 있습니다 .O(nd)
- 각 트레이닝 세트의 관측 , 컴퓨팅 D 나 S t I , 트레이닝 세트의 관측으로 새로운 관측의 거리 내가idistii
- 런 quickselect 알고리즘을 컴퓨터 장치 의 최소 거리 O를 ( N ) 런타임kthO(n)
- 계산 된 최단 거리 보다 크지 않은 모든 지수를 반환kth
이 접근법은 효율적인 접근법 찾기 위해 존재한다는 사실을 이용한다 정렬되지 않은 배열을 작은 값.kth
quickselect
.