MAX ɾ ࣗͷσʔλ Ij Λอ͍࣋ͯ͠Δͱ͖ɽ ࢝ಈϓϩηεͷΞϧΰϦζϜ 1. ࣗͷσʔλ Ij ΛOUTʹૹ৴͢Δɽ 2. IN ΑΓϝοηʔδ M Λ̍ͭड৴͠ɼҎԼΛ܁Γฦ͢ɽ 1. M > MAX ͷ࣌ɼM Λغ٫͢Δɽ 2. M > MAX ͷ࣌ɼMAX Λ M ʹߋ৽͠ MAX ΛOUTʹૹ৴͢Δɽ 3. M == Ij ͷ࣌ɼOUT ʹ “MAX Ij” Λૹ৴ͯ͠ɼఀࢭ͢Δɽ 4. M == “MAX A” ͷ࣌ɼMAX Λ A ʹߋ৽͠ɼ “MAX A” ΛOUTʹૹ৴ͯ͠ఀࢭ͢Δɽ
Ij ͷ࣌ɼMAX = M ͱ͠ɼMAX Λ OUT ʹૹ৴͢Δɽ 2. M < Ij ͷ࣌ɼMAX = Ij ͱ͠ɼMAX Λ OUT ʹૹ৴͢Δɽ 2. IN ΑΓϝοηʔδ M Λ̍ͭड৴͠ɼҎԼΛ܁Γฦ͢ɽ 1. M > MAX ͷ࣌ɼM Λغ٫͢Δɽ 2. M > MAX ͷ࣌ɼMAX Λ M ʹߋ৽͠ MAX ΛOUTʹૹ৴͢Δɽ 3. M == Ij ͷ࣌ɼOUT ʹ “MAX Ij” Λૹ৴ͯ͠ɼఀࢭ͢Δɽ 4. M == “MAX A” ͷ࣌ɼMAX Λ A ʹߋ৽͠ɼ “MAX A” ΛOUTʹૹ৴ͯ͠ఀࢭ͢Δɽ
ߴʑ n - 1 ճ͔͠ૹ৴ ͞Εͳ͍ɽ → ͲͷΈͪ Si Sn Λ࣋ͭϓϩηεͰغ٫͞ΕΔɽ p(i,k) Λ Si ͕ k ճૹ৴͞ΕΔ֬ͱ͢Δɽ i < k ͳΒ p(i,k) = 0 Ͱ͋Δɽ → Si i ൪ʹখ͍͞ͷͰɼk ճసૹ͞ΕΔ͜ͱͳ͍ɽ Si ͕ஸ k ճૹ৴͞ΕΔͨΊͷɼඞཁे݅ɼk ճͷૹ৴ͰɼSi ͕ ॳΊͯ Si ΑΓେ͖͍σʔλΛอ࣋͢Δϓϩηεʹग़ձ͏͜ͱɽ ࠷ॳͷ k - 1 ճͷૹ৴தʹ Si ͕ Si ΑΓେ͖͍σʔλΛ࣋ͭϓϩηεʹग़ ձΘͳ͍֬ i >= k ͷͱ͖ɾɾɾ (i 1) C(k 1) (n 1) C(k 1)
p(i,k) ɼ Si ( i = 1,2,...,n -1 ) ͕ૹ৴͞ΕΔճͷظ Ei n i n k p(i, k) = (i 1) C(k 1) (n 1) C(k 1) ⇥ n i n k Ei = (n 1) X k=1 kp(i, k) ·ͩσʔλ͕௨աͯ͠ͳ͍ϊʔυ Si ΑΓେ͖͍σʔλΛ࣋ͭϊʔυ
E = 2n + n 1 X i=1 n 1 X k=1 kp(i, k) = 2n + n 1 X k=1 n k + 1 = nHn + n n Λेʹେ͖͘͢ΔͱɼHn 0.69log(n) ʹऩଋ͢ΔɽΑͬͯ CR ͷฏۉ ϝοηʔδෳࡶ O(nlog(n)) Ͱ͋ΓɼNAIVE ΑΓ༏Ε͍͍ͯΔɽ
n k + 1 = 2n + n( 1 2 + 1 3 + . . . + 1 n ) ͜͜Ͱɼn - n ΛࣜʹՃ͑Δͱɼ E = 2n + n( 1 2 + 1 3 + . . . + 1 n ) + n n = n + n( 1 1 + 1 2 + 1 3 + . . . + 1 n ) = n + n n X k=1 1 k = n + nHn