Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

Hasonló dokumentumok
Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

A félév során előkerülő témakörök

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

2. Rekurzió. = 2P2(n,n) 2 < 2P2(n,n) 1

Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n).

Számjegyes vagy radix rendezés

1. ábra. Számláló rendezés

Programozási módszertan. Függvények rekurzív megadása "Oszd meg és uralkodj" elv, helyettesítő módszer, rekurziós fa módszer, mester módszer

Számláló rendezés. Példa

7. előadás. Gyorsrendezés, rendezés lineáris lépésszámmal. Adatszerkezetek és algoritmusok előadás március 6.

14. Mediánok és rendezett minták

Függvények növekedési korlátainak jellemzése

Dr. Schuster György február / 32

Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1.

Fibonacci számok. Dinamikus programozással

Algoritmusok helyességének bizonyítása. A Floyd-módszer

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

Algoritmusok Tervezése. 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás

Nagyordó, Omega, Theta, Kisordó

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

Algoritmuselmélet 1. előadás

Partíció probléma rekurzíómemorizálással

Programozási módszertan. Mohó algoritmusok

ALGORITMUSOK ÉS PROBLÉMAOSZTÁLYOK (1. előadás)

Algoritmuselmélet 2. előadás

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Felvételi tematika INFORMATIKA

1. előadás. számításokban. Adatszerkezetek és algoritmusok előadás február 12. Kósa Márk, Pánovics János, Szathmáry László és Halász Gábor

Kupacrendezés. Az s sorban lévő elemeket rendezzük a k kupac segítségével! k.empty. not s.isempty. e:=s.out k.insert(e) not k.

Bánsághi Anna 2014 Bánsághi Anna 1 of 68


Algoritmusokfelülnézetből. 1. ELŐADÁS Sapientia-EMTE

1. előadás: Halmazelmélet, számfogalom, teljes

Hatékonyság 1. előadás

Algoritmuselmélet 1. előadás

26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

... fi. ... fk. 6. Fabejáró algoritmusok Rekurzív preorder bejárás (elsőfiú-testvér ábrázolásra)

A valós számok halmaza

1. ábra. Egy rekurzív preorder bejárás. Egy másik rekurzív preorder bejárás

KOVÁCS BÉLA, MATEMATIKA I.

RSA algoritmus. P(M) = M e mod n. S(C) = C d mod n. A helyesség igazoláshoz szükséges számelméleti háttér. a φ(n) = 1 mod n, a (a 1,a 2,...

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Diszkrét matematika I.

Programozási módszertan. Dinamikus programozás: szerelőszalag ütemezése Mátrixok véges sorozatainak szorzása

2018, Diszkrét matematika

Kupac adatszerkezet. 1. ábra.

Elmaradó óra. Az F = (V,T) gráf minimális feszitőfája G-nek, ha. F feszitőfája G-nek, és. C(T) minimális

Algoritmusok bonyolultsága

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

Kiterjesztések sek szemantikája

Gráfok, definíciók. Gráfok ábrázolása. Az adott probléma megoldásához ténylegesen mely műveletek szükségesek. Ábrázolások. Példa:

Algoritmizálás, adatmodellezés tanítása 7. előadás

Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem }

Ordó, omega, theta, rekurzió :15 11:45. Megoldás. A nagyságrendi sorra tekintve nyilvánvalóan igaz pl., hogy: 1

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él.

BBTE Matek-Infó verseny mintatételsor Informatika írásbeli vizsga

Nagy Gábor compalg.inf.elte.hu/ nagy

Halmaz: alapfogalom, bizonyos elemek (matematikai objektumok) Egy halmaz akkor adott, ha minden objektumról eldönthető, hogy

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Gyakorló feladatok ZH-ra

Alkalmazott modul: Programozás. Programozási tételek, rendezések Giachetta Roberto

Nagy Gábor compalg.inf.elte.hu/ nagy

Algoritmusok vektorokkal keresések 1

Haladó rendezések. PPT 2007/2008 tavasz.

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Relációk Függvények. A diákon megjelenő szövegek és képek csak a szerző (Kocsis Imre, DE MFK) engedélyével használhatók fel!

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Egyesíthető prioritási sor

RE 1. Relációk Függvények. A diákon megjelenő szövegek és képek csak a szerző (Kocsis Imre, DE MFK) engedélyével használhatók fel!

2016, Diszkrét matematika

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Rendezések. Összehasonlító rendezések

Bevezetés. 1. fejezet. Algebrai feladatok. Feladatok

KOVÁCS BÉLA, MATEMATIKA I.

2. Milyen értéket határoz meg az alábbi algoritmus, ha A egy vektor?. (2 pont)

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

Geometriai algoritmusok

Módosítható Prioritási sor Binomiális kupaccal. Wednesday, March 21, 12

Más szavakkal formálisan:, ahol olyan egész szám, hogy. Más szavakkal formálisan:, ahol olyan egész szám, hogy.

Permutáció n = 3 esetében: Eredmény: permutációk száma: P n = n! romámul: permutări, angolul: permutation

Az informatika logikai alapjai

Algoritmizálás, adatmodellezés 1. előadás

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

Adatszerkezet - műveletek

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

Logika es sz am ıt aselm elet I. r esz Logika 1/36

INFORMATIKA javítókulcs 2016

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Erdélyi Magyar TudományEgyetem (EMTE

Egyszerű programozási tételek

A 2017/2018 tanévi Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai. INFORMATIKA II. (programozás) kategória

Algoritmuselmélet 18. előadás

2014. szeptember 24. és 26. Dr. Vincze Szilvia

Algoritmusok és adatszerkezetek gyakorlat 03 Oszd meg és uralkodj. Nagy

Átírás:

Algoritmus Az algoritmus olyan elemi műveletekből kompozíciós szabályok szerint felépített összetett művelet, amelyet megadott feltételt teljesítő bemeneti adatra végrehajtva, a megkívánt kimeneti adatot eredményezi. Számítási Probléma A számítási probléma bemenet/kimenet feltételpárral meghatározott követelmény. Azt írja elő, hogy a bemeneti feltételt teljesítő adatra a kimeneti feltételt teljesítő adatot kell kiszámítani. Probléma bemenete: egy olyan (esetleg összetett) adat, amely teljesíti a bemeneti feltételt. Például, a rendezési probléma a következőt jelenti. Bemenet: Azonos típusú adatok H = {a 1,...,a n } halmaza, amelyeken értelmezett egy lineáris rendezési reláció. Kimenet: A H halmaz elemeinek egy rendezéstartó felsorolása, tehát olyan {b 1,...,b n } sorozat, amelyre b 1 b 2 b n, és H = {b 1,...,b n }. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik. Specifikáció {B}A{K} Az A algoritmus helyes a {B}A{K} specifikációra nézve, ha minden X bemeneti adatra, amelyre teljesül a B bemeneti feltétel, az algoritmus végrehajtása véges sok elemi művelet végrehajtása után befejeződik, és a keletkezett kimeneti adatra teljesül a K kimeneti feltétel. Beszúró Rendezés BESZÚRÓ-RENDEZÉS (A) For j= 2 to hossz(a) {kulcs:=a[j] i:=j-1 while i>0 és A[i]>kulcs {A[i+1]:=A[i] i:=i-1} A[i+1]:=kulcs} Példa (5,2,4,6,1,3) (5,2 j,4,6,1,3) (2,5,4,6,1,3) (2,5,4 j,6,1,3) (2,4,5,6,1,3) (2,4,5,6 j,1,3) (2,4,5,6,1 j,3) (1,2,4,5,6,3) (1,2,4,5,6,3 j ) (1,2,3,4,5,6) További példa: 1

http://www.youtube.com/watch?v=fdgvezzyyrcfeature=related Futási idő elemzése Legyen A az e 1,...,e m elemi műveletekből felépített algoritmus, és jelölje t i az e i művelet futási idejét (konkrét, vagy hipotetikus gépen). A t i futási idő függhet az e i művelet argumentumaitól. A továbbiakban feltételezzük, hogy minden e i elemi művelet futási ideje c i konstans. Adott x bemenetre jelölje T (A,x) az A algoritmus tényleges futási idejét, ami az x bemeneti adatra ténylegesen végrehajtott elemi műveletek futási idejének az összege. Jelölje x az x bemeneti adat méretét. Ez a méret összetett adat (pl. halmaz, vagy sorozat) esetén általában az adatok száma. Nem összetett adat esetén pedig általában az adat értéke. Az e i elemi műveletek t i futási ideje és az x méret függvény együttesen adja a bonyolultsági mértéket. Algoritmusnak más költsége is van, nevezetesen a memóriaigény, és elosztott algoritmusok esetén fontos a kommunikációs költség is. Legjobb eset: T l j (A,n) = min{t (A,x) : x = n} Legrosszabb eset: T lr (A,n) = max{t (A,x) : x = n} Átlagos eset: Jelölje Pr(x) annak valószínűségét, hogy x bemeneti adata lesz az A algoritmusnak. T a (A,n) = x =n Pr(x)T (A,x) Elemzés Legyen t j a for ciklus j-edik végrehajtásában a while ciklus tesztelések száma. BESZÚRÓ-RENDEZÉS (A) költség végrehajtások száma For j= 2 to hossz(a) c1 n {kulcs:=a[j] c2 n-1 i:=j-1 c3 n-1 while i>0 és A[i]>kulcs c4 t2+t3+...+tn {A[i+1]:=A[i] c5 (t2-1)+...+(tn-1) i:=i-1} c6 (t2-1)+...+(tn-1) A[i+1]:=kulcs} c7 n-1 A teljes költség: n n n c 1 n + c 2 (n 1) + c 3 (n 1) + c 4 t j + c 5 (t j 1) + c 6 j 1) + c 7 (n 1) j=2 j=2 j=2(t Legjobb eset: Ha a tömb már rendezett, akkor minden j-re t j = 1, tehát Ez n lineáris függvénye. T l j (A,n) = c 1 n + c 2 (n 1) + c 3 (n 1) + c 4 (n 1) + c 7 (n 1) Legrosszabb eset: Ha a tömb már fordított sorrendben rendezett, akkor minden j-re t j = j, tehát T lr (A,n) = c 1 n + c 2 (n 1) + c 3 (n 1) + c 4 (n(n + 1)/2 1)+ 2

mivel n j=2 j = n(n + 1)/2 1. A legrosszabb eset n négyzetes függvénye. Az f (n) = O(g(n)) jelentése: f (n) O(g(n)). Az f (n) = Ω(g(n)) jelentése: f (n) Ω(g(n)). c 5 ((n 1)n/2 1) + c 6 ((n 1)n/2 1) + c 7 (n 1), Aszimptotikus jelölések O-jelölés O(g(n)) = { f (n) : ( c,n 0 0)( n n 0 )(0 f (n) cg(n))} Ω-jelölés Ω(g(n)) = { f (n) : ( c,n 0 > 0)( n n 0 )(cg(n) f (n))} Θ-jelölés Θ(g(n)) = { f (n) : ( c 1,c 2,n 0 > 0)( n n 0 )(c 1 g(n) f (n) c 2 g(n))} Az f (n) = Θ(g(n)) jelentése: f (n) Θ(g(n)). Aszimptotikus jelölések o-jelölés o(g(n)) = { f (n) : ( c > 0)( n 0 0)( n n 0 )(0 f (n) cg(n))} Az f (n) = o(g(n)) jelentése: f (n) o(g(n)), ekkor f (n)/g(n) 0. ω-jelölés ω(g(n)) = { f (n) : ( c > 0)( n 0 0)( n n 0 )(cg(n) f (n))} Az f (n) = ω(g(n)) jelentése: f (n) ω(g(n)), akkor f (n)/g(n). Példák 2n + 20 = Θ(n) n 2 = ω(nlogn) log 2 (n) = Θ(log 10 n) n 2 + 20n + 10 = Θ(n 2 ) 2 n = ω(n 100000 ) A konstans költségű elemi műveletek mindegyikét számolhatjuk egységnyi költségűnek. Fő tulajdonságok A Θ reláció tranzitív, reflexív és szimmetrikus, így egy osztályozás tartozik hozzá. 3

A Θ, O, Ω, o, ω relációk mindegyike tranzitív. Ha f (n) = O(g(n)), akkor g(n) = Ω( f (n)). Ha f (n) = o(g(n), akkor f (n) = O(g(n)). Ha f (n) = ω(g(n)), akkor f (n) = Ω(g(n)). Rekurzív algoritmusok Egy objektum definícióját rekurzívnak nevezünk, ha a definíció tartalmazza a definiálandó objektumot. Egy P eljárást (vagy függvényt) rekurzívnak nevezünk, ha P utasításrészében előfordul magának a P eljárásnak a hívása. Faktor(n) If n=1 return 1 Else return n*faktor(n-1) Példa: Faktor(5)=5*Faktor(4) Faktor(4)=4*Faktor(3) Faktor(3)=3*Faktor(2) Faktor(2)=2*Faktor(1) Faktor(1)=1 Euklideszi algoritmus Ha b=0, akkor lnko(a, b) = a. Egyébként ha a b, akkor lnko(a, b) = lnko(b, a mod b). Tehát, ha a b, akkor az alábbi algoritmus kiszámolja a legnagyobb közös osztót. Euklidesz(a,b) If b=0 return a Else return Euklidesz(b, a mod b) Euklidesz(64, 28) = Euklidesz(28, 8) = Euklidesz(8, 4) = Euklidesz(4, 0) = 4 Partíció probléma Az n természetes szám egy partíciója olyan π = (a 1,...,a k ) sorozat, amelyre teljesül: - a 1 a 2 a k > 0 - k i=1 a i = n Jelölje P(n) az n szám összes partíciójának számát. P(1)=1 (1=1) P(2)=2 (2=2, 2=1+1) 4

P(3)=3 (3=3, 3=2+1, 3=1+1+1) P(4)=5 (4=4, 4=3+1, 4=2+2, 4=2+1+1, 4=1+1+1+1+1) 3. Partíciószám számító algoritmus Jelölje P2(n,k) n azon partícióinak számát, amelyben minden elem legfeljebb k. Például P2(4,3) = 4, P2(4,2) = Ekkor a következő összefüggések teljesülnek: P2(1,k) = 1,P2(n,1) = 1 P2(n,n) = 1 + P2(n,n 1) (n = n és a többiek) P2(n,k) = P2(n,n) ha n < k P2(n,k) = P2(n,k 1) + P2(n k,k) ha k < n (k benne van vagy nincs) A megoldás: P(n) = P2(n,n) PARTÍCIÓ(n) Return P2(n,n) P2(n,k) If (k=1) Or (n=1) return 1 If k>=n return P2(n,n-1)+1 return P2(n, k-1)+p2(n-k, k) Rekurziós fa: Olyan fa, amelynek minden pontja egy eljáráshívást jelent adott aktuális paraméterekre, úgy, hogy a pont fiai megfelelnek azoknak az eljáráshívásoknak, amelyek végrehajtódnak az aktuális paraméterek esetén. Futási idő elemzése Legyen E(n,k) a P2(n,k) eljáráshívás hatására végrehajtott eljárásutasítások száma. Ekkor P2(n,k) E(n,k) 2P2(n,k) 1. Lemma P(n) = Ω(2 n ) Bizonyítás Tekintsük az összes olyan [a 1,...,a k ] sorozatot, ahol n a 1 és n a 1 > a 2 > > a k > 1. Ezek száma pontosan 2 n 1, mivel minden ilyen sorozat egyértelműen megadható egy b n 1,...,b 1 bitvektorral, ahol b x = 1 akkor és csak akkor, ha x + 1 eleme a sorozatnak. Mivel k n, ezért k i=1 a i n. Minden ilyen sorozathoz adjunk hozzá a végén annyi 1-est, hogy a számok összege n legyen, tehát n egy partícióját kapjuk. Ha két kiindulási sorozat különböző volt, akkor a kiegészítéssel különböző partíciót kapunk. Következmény. A P algoritmus futási ideje Ω(2 n ). Rekurzív algoritmus helyességének bizonyítása I. Terminálás bizonyítása Bebizonyítandó, hogy minden eljáráshívás végrehajtása véges lépésben befejeződik. (Az eljárás terminál.) Megállási feltétel: Legyen P(x 1,...,x n ) egy n-paraméteres rekurzív eljárás. Az M(x 1,...,x n ) egész értékeket felvevő kifejezés megállási feltétele a P rekurzív eljárásnak, ha 5

1. ábra. 1. M(a 1,...,a n ) 0 minden megengedett a 1,...,a n aktuális paraméterre. 2. Ha M(a 1,...,a n ) = 0 akkor nincs rekurzív hívás P(a 1,...,a n ) végrehajtásakor. 3. Ha van rekurzív hívás P(a 1,...,a n ) végrehajtásakor valamely b 1,...,b n paraméterekre, akkor M(b 1,...,b n ) < M(a 1,...,a n ). Példa: M(n,k) = (n 1) (k 1) megállási feltétel P2-re. II. Helyesség bizonyítása 1. Alaplépés. Annak bizonyítása, hogy az eljárás helyes eredményt számít ki, ha az aktuális paraméterek esetén nincs rekurzív hívás. 2. Rekurzív lépés. Feltéve, hogy minden rekurzív hívás helyes eredményt ad, annak bizonyítása, hogy a rekurzív hívások által adott értékekből az eljárás helyes eredményt számít ki. Összefésülő Rendezés Oszd meg: A rendezendő sorozatot felosztjuk két n/2 méretű részsorozatra. Uralkodj: A két részsorozatot összefésülő rendezéssel rekurzív módon rendezzük. Egyesít: Összefésüljük a két rendezett részsorozatot, így kapjuk a rendezett sorozatot. 6

Összefésülő-rendezés(A,p,r) If p<r Then {q:=[(p+r)/2] Összefésülő-rendezés(A,p,q) Összefésülő-rendezés(A,q+1,r) Összefésül(A,p,q,r)} A teljes tömb rendezését a Összefésülő-rendezés(A,1,hossz(A)) kezdőhívás adja meg. Futási idő elemzés Legyen T (n) az n darab szám Összefésülő-rendezéssel történő rendezésének legrosszabb eset korlátja. Ekkor T (1) = Θ(1) és T (n) = 2T (n/2) + Θ(n), ha n > 1 Állítás T (n) = O(nlogn) Bizonyítás: Teljes indukcióval. Az indukciós lépés: ha clog2 > d. T (n) 2(c n/2log(n/2)) + d n c n(logn log2) + d n c nlogn, Gyorsrendezés Oszd meg: Az A[p,...,r] tömböt két nem üres A[p,...,q] és A[q+1,...,r] résztömbre osztjuk úgy, hogy A[p,...,q] minden eleme kisebb vagy egyenlő A[q + 1,...,r] minden eleménél. Uralkodj: Az A[p,..., q] és A[q + 1,..., r] résztömböket a gyorsrendezés rekurzív hívásával rendezzük. Egyesít: A rendezés helyben rendez, így nincs szükség egyesítésre. GYORSRENDEZÉS(A,p,r) If p<r Then {q=feloszt(a,p,r) GYORSRENDEZÉS(A,p,q) GYORSRENDEZÉS(A,q+1,r)} A teljes tömb rendezését a GYORSRENDEZÉS(A,1,hossz(A) kezdőhívás adja meg. Feloszt eljárás (Hoare féle) Feloszt(A,p,r) x:=a[p] i:=p-1 j:=r+1 while(igaz) {repeat j:=j-1 until A[j]<=x repeat i:=i+1 until A[i]>=x if i<j then csere(a[i],a[j]) else return j} 7

Példa: i[5,3,2,6,1,4,3,7] j x=5 [5 i,3,2,6,1,4,3 j,7] [3 i,3,2,6,1,4,5 j,7] [3,3,2,6 i,1,4 j,5,7] [3,3,2,4 i,1,6 j,5,7] [3,3,2,4,1 j,6 i,5,7] Return 5 Feloszt eljárás (Lomuto féle) Feloszt(A,p,r) x:=a[r] i:=p-1 for j=p to r-1 {if A[j]<=x then {i:=i+1 csere(a[i],a[j])}} csere(a[i+1],a[r]) return i+1 Példa: i[2 j,8,7,1,3,5,6, 4] x=4 [2 i,8 j,7,1,3,5,6, 4] [2 i,8,7 j,1,3,5,6, 4] [2,1 i,7,8,3 j,5,6, 4] [2,1,3 i,8,7,5,6, 4] [2,1,3 i,4,7,5,6,8] Megjegyzés: A Lomuto féle felosztásnál a gyorsrendezést a (A,p,q-1) (A,q+1,r) paraméterekre hívjuk meg. Futási idő elemzés Legrosszabb eset A felosztás mindig egy egyelemű tömbre és a többi elemre oszt. Ekkor Legjobb eset T (n) = A felosztás mindig felezi a tömböt. Ekkor T lr (n) = T lr (n 1) + Θ(n) n k=1 Θ(k) = Θ( n k=1 T l j (n) = 2T (n/2) + Θ(n) k) = Θ(n 2 ). T l j (n) = Θ(nlogn) Átlagos eset 8

Legyen X a eljárás végrehajtása során a FELOSZT által végrehajtott összehasonlítások száma n elemű bemenetre. Ekkor a teljes futási idő O(n + X). Legyen z i az i-edik legkisebb eleme a bemenetnek, és Z i j = {z i,z i+1,...,z j }. Legyen p i j annak a valószínűsége, hogy z i -t és z j -t valamelyik feloszt eljárás összehasonlítja. Ekkor p i j = 2/( j i + 1), mivel akkor lesznek összehasonlítva, ha a Z i j halmazból vagy z i vagy z j az első felosztó elem. Az összehasonlítások várható száma n 1 érték additív. i=1 n j=i+1 2/( j i + 1) = O(nlogn). Itt kihasználjuk, hogy a várható 9