Algoritmuselmélet - Vizsga, 2013.05.30.

A lap korábbi változatát látod, amilyen Arklur (vitalap | szerkesztései) 2013. június 15., 13:31-kor történt szerkesztése után volt. (2. Feladat (Van megoldás))


2013.06.06. vizsga megoldásai

1. Feladat

TODO

Megoldás
TODO

2. Feladat (Van megoldás)

Adja meg a 2-3 fa definícióját! Adjon felső becslést a fa szintszámára n tárolt elem esetén, állítását bizonyítsa is!

Megoldás

Adja meg a 2-3 fa definícióját!

  • Elemeket csak a levelekben tárolunk.
  • Az elemek balról jobbra növekvő sorrendben állnak.
  • Minden belső csúcsnak 2, vagy 3 fia lehet, se több, se kevesebb. (Kivéve, ha csak 1 elemet tárolunk a fában, mert akkor a gyökérnek csak 1 fia van.)
  • A fa levelei a gyökértől egyenlő távolságra vannak (vagyis a levelek 1 szinten vannak).
  • A belső csúcsokban mutatókat (M) és 1, vagy 2 kulcsot (S) tárolunk.
    • Ha a csúcsnak 2 fia van, akkor 2 mutatót, és egy kulcsot tárol. Fájl:2 3 2.png
      • A bal részfában az elemek kisebbek, mint S1.
      • A jobb részfában az elemek nagyobb-egyenlőek, mint S1 (vagyis az 1. elem S1).
    • Ha a csúcsnak 3 fia van, akkor 3 mutatót, és 2 kulcsot tárol. Fájl:2 3 3.png
      • A bal részfában az elemek kisebbek, mint S1.
      • A középső részfában az elemek nagyobb-egyenlőek, mint S1 (vagyis az 1. elem S1), de kisebbek, mint S2.
      • A jobb részfában az elemek nagyobb-egyenlőek, mint S2 (vagyis az 1. elem S2).
Fájl:2 3 pelda.PNG

Adjon felső becslést a fa szintszámára n tárolt elem esetén, állítását bizonyítsa is!

log2n+1mlog3n+1, ahol m a fa szintszáma.

Bizonyítás:

  • log2n+1m
    • Minden belső csúcsnak legalább 2 fia van, így az i. szinten legalább 2i1 csúcs van, tehát: 2m1nm1log2nmlog2n+1
  • mlog3n+1
    • Minden belső csúcsnak maximum 3 fia van, így az i. szinten maximum 3i1 csúcs van, tehát: 3m1nm1log3nmlog3n+1

3. Feladat

TODO

Megoldás
TODO

4. Feladat

TODO

Megoldás
TODO

5. 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

Van olyan c>0 és n0, hogy n>n0 esetén T(n)=T(n4)+O(n2)T(n4)+cn2T(n16)+c(n2+(n242))T(n64)+c(n2+(n242)+(n2162)) 1+cn2(i=0log4n(116)i)

Azt kell észrevennünk, hogy ez tulajdonképpen egy mértani sor, amire van képletünk:
i=0kri=1rk+11r, ahol k=log4n,r=116, vagyis 1116log4n+11116

1116log4n+11116<2,ha n1 (A lényeg, hogy felülről becsüljük!)

Tehát T(n)=1+2cn2=O(n2)

6. Feladat

Egy ország n kis szigetből áll. Szeretnénk néhány hajójáratot indítani a szigetek között úgy, hogy bárhonnan bárhova el lehessen jutni (esetleg átszállással). Ehhez ismerjük bármely két szigetre, hogy mennyibe kerül egy évben a hajójárat fenntartása közöttük, illetve azt, hogy mekkora az itt várható éves bevétel. Adjon algoritmust, ami ezen adatok ismeretében O(n2) időben meghatározza, hogy hol indítsuk el a hajójáratokat, ha a lehető legnagyobb várható éves hasznot (vagy a lehető legkisebb veszteséget) szeretnénk elérni. (Egy szigeten egy hajóállomás van csak).

Megoldás
TODO

7. Feladat

TODO

Megoldás
TODO

8. Feladat

TODO

Megoldás
TODO