Műveletigény, aszimptotika

- Elemezzük a programozásból tanult elemi programozási tételek műveletigényét.
- Összegzés
megoldás
- Megszámolás
- Maximum kiválasztás
- Lineáris keresés
- Logaritmikus keresés összehasonlításainak számát
A tételek specificikációját, algoritmusát Gregorics Tibor által, a programozás tárgyhoz
készített segéd anyagból vettük át.
http://people.inf.elte.hu/gt/prog/progtetel_intervallum.pdf
- Elemezzük a buborék rendezés egyszerű változatát. Hány összehasonlítást
és cserét végez az algoritmus legjobb/legrosszabb/átlagos esetben? Az
átlagos eset vizsgálatához feltehetjük, hogy minden elem különböző és minden
permutáció ugyanolyan valószínűségű.
- Készítsük el a buborék rendezés következő, módosított változatának
algoritmusát. A belső
ciklusban megjegyezzük az utolsó csere helyét, hiszen tudhatjuk, hogy utána
már az elemek rendezettek, így a következő menetben elég az utolsó csere helyéig
vizsgálni az elemek sorrendjét. Hány összehasonlítást és cserét végez a
módosított
algoritmus legjobb/legrosszabb esetben?
- A számítógépes matematikai eljárások egy valós szám nemnegatív
egész kitevős hatványát ügyes ismételt szorzásokkal számítják ki úgy,
hogy közben magát a kitevőt kettő hatványainak összegeként alakítják ki.
Határozzuk meg, hogy az alábbi Legendre-algoritmus hány szorzást végez a
legjobb és a legrosszabb esetben.
- Készítsük el a maximum kiválasztó rendezés algoritmusát A[1..n] tömbre.
Elemezzük hány összehasonlítást és cserét végez az algoritmus.
- Bizonyítsuk be az aszimptotikus függvényosztályok alábbi tulajdonságait:
- Reflexivitás: Θ, Ο, Ω
- Tranzitivitás: Θ, Ο, Ω
- Szimmetria: Θ
- Ο és Ω közötti "felcserélt" szimmetria: f(n) ∈ Ο(g(n))
⇔ g(n) ∈ Ω(f(n))
- Bizonyítsuk be, hogy az Ο, Ω, Θ függvényosztályok zártak
az összeadásra és a pozitív számmal való szorzásra nézve.
Például legyen f ∈ Ο(g) és h ∈ Ο(g) , valamint c > 0.
Lássuk be, hogy ekkor f+h ∈ Ο(g), ill. c*f ∈ Ο(g).
- Lássuk be, hogy polinom esetén a legmagasabb fokú tag meghatározza a nagyságrendet:
ak*nk + ak-1*nk-1 + ...+ a1*n
+ a0 = Θ(nk)
- Lássuk be, hogy logan=Θ(logbn), ahol a,b > 1 .
(A logaritmus alapszámának nincs szerepe az aszimptotikus viselkedés szempontjából.)
- Lássuk be, hogy na ∈ Ο(na+ε) és
na ∉ Θ(na+ε), a ≥ 0 és ε > 0 esetén.
(Polinomiális lépésszám esetén a legmagasabb fokú tag kitevőjében a legcsekélyebb változás is
éles aszimptotikus változást eredményez.)
-
Lássuk be, hogy az összegben a nagyobbik függvény határozza meg az
aszimptotikát. Ha szekvenciába rakunk két algoritmust, melyek futási ideje
f(n) illetve g(n), akkor aszimptotikus
viselkedés szempontjából a kettő együtt a nagyobbik nagyságrendbe fog
tartozni.
f(n) + g(n) = Θ (max(f(n),g(n)))
-
Adottak a következő fiktív futási idők: lg(n), √n, n, n*lg(n),
n2, n3, 2n
Számítsuk ki, hogy 1 000 000 művelet / mp műveleti sebességet feltételezve,
mennyi ideig futna a megoldás n=10, 100, 1000, 10000 adatra.
Fejezzük ki a futási időt valamely "értelmes" időegységben (mp, perc, óra, nap,
év).
megoldás
-
Rendezze aszimptotikusan növekvő sorrendbe az alábbi függvényeket, ha
vannak köztük egyenlők, azt is jelölje:

megoldás
-
Igazoljuk: 3n3+2n2-3n-1 = Θ(n3)
(Adjunk konkrét c1, c2 konstansokat, és n0
értéket!)
-
Rendezze aszimptotikusan növekvő sorrendbe az alábbi függvényeket, ha vannak
köztük egyenlők, azt is jelölje:

megoldás
-
Rendezze aszimptotikusan növekvő sorrendbe az alábbi függvényeket, ha vannak
köztük egyenlők, azt is jelölje:

-
A megfelelő definíciók alapján igazolja, vagy cáfolja:
3n = Ω(2n)
3n = Θ(2n)
- A megfelelő definíció alapján igazolja, vagy cáfolja:
2n+1 = O(2n)
22n = O(2n)
- Igazolja a következő állítást:
lg(n!) = O(n log(n))
- A definíció alapján mutassa meg, hogy
n3 + 2n2 - n ≠ Θ(n2)
Mit kellene Θ helyett írnunk, hogy igaz legyen az egyenlőség?