Algoritmuselmélet - PZH, 2013.04.24.

A VIK Wikiből


2013.04.24. PZH megoldásai

1. Feladat (Van megoldás)

Egy algoritmus lépésszámáról tudjuk, hogy T(n)=T(n4)+O(n2) és tudjuk azt is, hogy T(1)=T(2)=T(3)=1. Bizonyítsa be, hogy T(n)=O(n2).

Megoldás

2. Feladat (Van megoldás)

Adott egy teljes bináris fa, a csúcsaiba egész számok vannak írva, összesen n darab (a fa nem feltétlenül bináris keresőfa). Adjon algoritmust, ami O(n) lépésben megkeres egy olyan csúcsot a fában, aminek a részfája kupac, és aminek a magassága a lehető legnagyobb az összes ilyen csúcs közül.

Megoldás

3. Feladat (Van megoldás)

Kukori és Kotkoda egy-egy bináris fára gondolnak (nem feltétlenül bináris keresőfákra). Következik-e, hogy a két fa azonos, ha

(a) inorder bejárással kiolvasva a két fát ugyanazt a számsorozatot kapják?

(b) preorder bejárással kiolvasva a két fát ugyanazt a számsorozatot kapják?

Megoldás

4. Feladat

Éllistával adott n csúcsú, élsúlyozott, irányítatlan gráfként ismerjük egy ország úthálózatát (a csomópontok a városok, az élek a közvetlen összeköttetések a városok között). Az élek súlya azt adja meg, hogy hány (egész) perc alatt tudjuk megtenni az adott útszakaszt. Nagy havazás várható, de szerencsére pontosan tudjuk a következő k percre, hogy mely élek (utak) mikortól nem lesznek járhatóak. Ha egyszer járhatatlanná válnak, akkor úgy is maradnak, ezután már az úton nem lehet közlekedni, és ha épp az adott élen vagyunk, amikor az járhatatlanná válik, akkor elakadunk. Adjon O(k(n+e)) lépést használó algoritmust, ami az adatok ismeretében el tudja dönteni, hogy el lehet-e jutni A városból B városba, ha most azonnal elindulunk!

Megoldás

5. Feladat (Van megoldás)

Egy n soros és kettő oszlopos táblázatban adott n számpár (egy sor egy számpárt tartalmaz, a számok mind különböző egész számok a táblázatban). Szeretnénk a táblázat sorait úgy átrendezni, hogy a 2. oszlop szerint növekvő sorrendben legyenek a sorok (számpárok). Egy fajta műveletet hajthatunk végre: kijelölhetünk néhány egymást alatti sort (számpárt) és ezeket rendezhetjük az első oszlop szerint növekvően vagy csökkenően. Adjon algoritmust, ami csak ezt a fajta műveletet használva O(n) lépésben megoldja a feladatot!

Megoldás

6. Feladat (Van megoldás)

Adott egy n hosszú tömb. Tudjuk, hogy a tömb első néhány (k darab) elem 0, a többi 1, de k értékét nem ismerjük. Adjon O(logk) (nem O(logn) )1 összehasonlítást használó algoritmust, ami meghatározza k értékét.

1 A feladatban O(logk) szerepel, de az csak elgépelés.

Megoldás

7. Feladat

Adott egy n és egy k elemet tartalmazó kupac. Adjon olyan O(n + k) összehasonlítást használó algoritmust, ami létrehoz egy olyan kupacot, ami a két kupacban tárolt elemek halmazának unióját tartalmazza. (TFH a két kupacban csupa különböző számocska áll.)

Megoldás

8. Feladat (Van megoldás)

Bizonyítsa be, hogy egy piros-fekete fában egy levél testvére vagy levél, vagy piros csúcs!

Megoldás