내가 목록을 걷고 주문한 모든 요소를 삭제하면 평균적으로 얼마나 많은 요소가 남을 것인가?

cs.stackexchange https://cs.stackexchange.com/questions/119835

문제

길이 $ n $ 의 균일하게 무작위로 가장 적합한 목록이 있습니다. 나는 요소 별 요소를 걷고, 순서가 꺼지면 (목록의 이전 내역 요소와 비교하여) 요소를 삭제합니다. 내가 남긴 것은 순서대로 보장되는 더 짧은 목록입니다.

예 :이 목록의 별표의 요소는 걷는 동안 삭제됩니다.

[1, 4, 2 *, 3 *, 5, 7, 6 *] -> [1, 4, 5, 7]

내 질문은 평균적으로 나머지 목록의 길이가 될 것입니까? 이 분포의 간단한 / 명백한 형태가 있습니까?

및 하나의 후속 조치 : 우리가 정렬 알고리즘 (드롭 정렬이라고 함)을 위해 이것을 사용한 경우, 런타임은 무엇입니까? 분명히하려면 알고리즘은 다음과 같을 것입니다. $$ \ textit {dropsort} (\ text {list})=textit {merge} (\ text {나머지 목록}, \ text {dropsort} (\ text {거부 된 목록} )) $$

이 질문은이 r / programmerhumor post .

에서 영감을 얻었습니다.

도움이 되었습니까?

해결책

기대의 선형성을 사용하여 평균을 계산할 수 있습니다.

$ x $ 은 유지되는 요소의 수를 나타냅니다. $ X_I $ 표시기 R.V가되도록하십시오. $ i $ th 요소가 유지되거나 그렇지 않으면 0이면 1입니다. 그런 다음 $ x= x_1 + 도트 + x_n $ , 그래서

$$ \ mathbb {e} [x]= mathbb {e} [x_1] + \ dots + \ mathbb {e} [x_n]=PR [x_1= 1] + \ DOTS + \ PR [x_n= 1]. $$

이제 $ i $ th 요소는 첫 번째 $ i $ 목록의 요소. 따라서 $ \ PR [x_i= 1]=FRAC {1} {i} $ , 그래서

$$ \ mathbb {1} {1} + \ fRAC {1} {2} + \ dots + \ frac {1} {n} \ 약 \ log (n) + \ gamma $$

다른 단어의 평균 길이는 $ o (\ log n) $

입니다.

배포가 무엇인지 모르겠습니다.

경험적으로 $ T (n) \ 약 t (n- \ log (n)) + o (n- \ log (n)) + o (n- \ log (n)) + o (n- \ log (n))와 같은 재발을 만족시킬 것으로 예상되는 실행 시간이 재발을 만족시킬 것입니다. n) $ o \ left (\ frac {n ^ 2} {\ log n} \ right) $ 시간에 해당하는 $ .

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 cs.stackexchange
scroll top