결정 성 선형 검색 알고리즘의 평균 사례 실행 시간을 도출하려고합니다. 알고리즘은 정렬되지 않은 배열 A의 요소 x를 A [1], A [2], A [3] ... A [n]의 순서로 검색합니다. 요소 x를 찾거나 배열의 끝에 도달 할 때까지 계속됩니다. 나는 wikipedia을 검색했고 주어진 답은 (n + 1)/(k + 1)이었습니다. 여기서 k는 x가 배열에있는 횟수입니다. 나는 다른 방법으로 접근했고 다른 대답을 얻고있다. 아무도 내게 올바른 증거를주고 내게도 내 방법에 문제가 있다는 것을 알려주시겠습니까?선형 검색 알고리즘의 평균 사례 실행 시간
E(T)= 1*P(1) + 2*P(2) + 3*P(3) ....+ n*P(n) where P(i) is the probability that
the algorithm runs for 'i' time (i.e. compares 'i' elements).
P(i)= (n-i)C(k-1) * (n-k)!/n!
Here, (n-i)C(k-1) is (n-i) Choose (k-1). As the algorithm has reached the ith
step, the rest of k-1 x's must be in the last n-i elements. Hence (n-i)C(k-i).
(n-k)! is the total number of ways of arranging the rest non x numbers, and n!
is the total number of ways of arranging the n elements in the array.
단순화시 (n + 1)/(k + 1)을 얻지 못합니다.
어쩌면 나는 바보입니다. 배열의 크기가 N이면 평균 케이스 시간은 N/2입니까 ?? 신경 쓰지 마세요 ... 내 아이폰에서 언급해서는 안됩니다 ... 틀린 질문 q – Kevin
@kevin 중복이 없을 때 그 경우. 그러나 복제본을 가지고있을 때 두 번째 발생을 발견하더라도 (평균 복잡도 계산시) 먼저 검색을 수행하게됩니다. – Zimbabao
@Kevin 사실 다중 복사가없는 평균 케이스는 (n + 1)/2입니다. 1 * (1/n) + 2 * (1/n) + 3 * (1/n) ... + n * (1/n)과 같이 얻을 수 있습니다. – Brahadeesh