„Algoritmuselmélet - Vizsga, 2013.05.30.” változatai közötti eltérés
49. sor: | 49. sor: | ||
}} | }} | ||
===6. Feladat=== | ===6. Feladat (Van megoldás)=== | ||
Egy ország ''n'' kis szigetből áll. Szerezné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 <math>O(n^2)</math> 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). | |||
{{Rejtett | {{Rejtett | ||
|mutatott=<big>'''Megoldás'''</big> | |mutatott=<big>'''Megoldás'''</big> | ||
|szöveg= | |szöveg= | ||
*Az élek súlya legyen a "Veszteség" = Fenntartás - Bevétel (Így a súly minél kisebb, annál nagyobb a Profitunk). Ezt <math>O(n^2)</math> időben el tudjuk végezni. | |||
*Az így kapott G gráfra futtassunk egy Prim-algoritmust, ami <math>O(n^2)</math> időben keres nekünk egy minimális feszítőfát, ez legyen F. Ez azért jó, mert így bármelyik szigetről bármelyik szigetre eltudunk jutni a lehető legnagyobb profittal bíró útvonalakon. | |||
*Mivel a cél a profitmaximalizálás, így minden olyan élt, aminek nem pozitív a súlya (tehát profitot termel, vagy legalábbis nincs rajta veszteségünk), felvesszük a F gráfhoz, ez legyen az M gráf. Ez is <math>O(n^2)</math> időt vesz igénybe. | |||
*Az M gráfról elmondhatjuk, hogy bármelyik szigetről bármelyik szigetre el tudunk jutni, és a hajóhálózat a legnagyobb profittal rendelkezik. | |||
*Tulajdonképpen <math>3*O(n^2)</math> időt igényel az algoritmus, ami összességben még mindig <math>O(n^2)</math>, tehát az algoritmus jó. | |||
}} | }} | ||
A lap 2013. június 7., 22:51-kori változata
2013.06.06. vizsga megoldásai
1. Feladat
TODO
2. Feladat
TODO
3. Feladat
TODO
4. Feladat
TODO
5. Feladat (Van megoldás)
Egy algoritmus lépésszámáról tudjuk, hogy Értelmezés sikertelen (formai hiba): {\displaystyle T(n) = T\left(\left \lfloor \frac{n}{4} \right \rfloor\right) + Ο(n^2)} és tudjuk azt is, hogy . Bizonyítsa be, hogy .
Azt kell észrevennünk, hogy ez tulajdonképpen egy mértani sor, amire van képletünk:
ahol , vagyis
6. Feladat (Van megoldás)
Egy ország n kis szigetből áll. Szerezné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 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).
- Az élek súlya legyen a "Veszteség" = Fenntartás - Bevétel (Így a súly minél kisebb, annál nagyobb a Profitunk). Ezt időben el tudjuk végezni.
- Az így kapott G gráfra futtassunk egy Prim-algoritmust, ami időben keres nekünk egy minimális feszítőfát, ez legyen F. Ez azért jó, mert így bármelyik szigetről bármelyik szigetre eltudunk jutni a lehető legnagyobb profittal bíró útvonalakon.
- Mivel a cél a profitmaximalizálás, így minden olyan élt, aminek nem pozitív a súlya (tehát profitot termel, vagy legalábbis nincs rajta veszteségünk), felvesszük a F gráfhoz, ez legyen az M gráf. Ez is időt vesz igénybe.
- Az M gráfról elmondhatjuk, hogy bármelyik szigetről bármelyik szigetre el tudunk jutni, és a hajóhálózat a legnagyobb profittal rendelkezik.
- Tulajdonképpen időt igényel az algoritmus, ami összességben még mindig , tehát az algoritmus jó.
7. Feladat
TODO
8. Feladat
TODO