Vissza az előzőleg látogatott oldalra (nem elérhető funkció)Vissza a modul kezdőlapjáraUgrás a tananyag előző oldalára (37)Ugrás a tananyag következő oldalára (39)Fogalom megjelenítés (nem elérhető funckió)Fogalmak listája (nem elérhető funkció)Oldal nyomtatása (nem elérhető funkció)Oldaltérkép megtekintéseSúgó megtekintése

Tanulási útmutató

Összefoglalás

A tananyag vége felé közeledve kitekintünk a továbblépési lehetőségekre. Olyan feladatokat nézünk át, amelyek alapvetően más tantárgyak témakörébe tartoznak, de a Programozási alapismeretek tantárgy eszközkészletével tökéletesen megoldhatóak.

Ebben a leckében a mohó stratégia egy klasszikus példáját nézzük meg.

Követelmény

Önállóan megoldható feladatok

Mohó algoritmusok

Benzinkút probléma

Feladat

A Budapest-Párizs útvonalon N benzinkút van, az i-edik Bi távolságra Budapesttől (az első Budapesten, az utolsó Párizsban). Egy tankolás az autónak K kilométerre elég.

Készítsünk programot, amely megadja a lehető legkevesebb benzinkutat, ahol tankolni kell, úgy, hogy eljuthassunk Budapestről Párizsba!

Bemenet

N,K:Egész

B:Tömb[1..N:Egész]

Kimenet

Db:Egész

T:Tömb[1..N-1:Egész]

Előfeltétel

∀i(1≤i<N): B[i+1]-B[i]≤K

Utófeltétel

Db=??? és T⊆(1,…,N-1) és T[1]=1 és

∀i(1≤i<Db): B[T[i+1]]-B[T[i]]≤K és B[N]-B[T[Db]]≤K

A megfogalmazásból látható, hogy a tankolási helyek halmaza az összes benzinkút halmazának egy részhalmaza lesz.

Állítsuk elő az összes részhalmazt, majd válogassuk ki közülük a jókat (amivel el lehet jutni Párizsba), s végül adjuk meg ezek közül a legkisebb elemszámút!

Probléma: 2N részhalmaz van!

Optimalizálási probléma megoldására szolgáló algoritmus gyakran olyan lépések sorozatából áll, ahol minden lépésben adott halmazból választhatunk. Sok optimalizálási probléma esetén a dinamikus programozási megoldás túl sok esetet vizsgál annak érdekében, hogy az optimális választást meghatározza. Bizonyos esetekben ennél egyszerűbb, hatékonyabb algoritmus is létezik. A mohó stratégia mindig az adott lépésben optimálisnak látszó választást teszi. Vagyis, a lokális optimumot választja abban a reményben, hogy ez globális optimumhoz fog majd vezetni.

A megoldás: Budapesten mindenképpen kell tankolni! Menjünk, ameddig csak lehet, s a lehető legutolsó benzinkútnál tankoljunk! … Belátható, hogy ezzel egy optimális megoldást kapunk. A megoldás tehát egy kiválogatás tétel! Az a specialitása, hogy a kiválogatás feltétele nem csupán az adott elem valamely tulajdonságától függ, hanem az adott elemtől és a korábban már kiválogatott elemektől.

Benzinkút(N,B,Db,T):

Db:=1; T[1]:=1

Ciklus i=2-től N-1-ig

Ha B[i+1]-B[T[Db]]>K akkor Db:=Db+1; T[Db]:=i

Ciklus vége

Eljárás vége.

Tekintse meg az alábbi animációt, amelyben összefoglaljuk a lecke lényegét!

Az animáció a Mohó algoritmusok című előadáson vezet végig.

Flash lejátszó letöltése

Mohó algoritmusok.

Vissza a tartalomjegyzékhez

Fel a lap tetejére
Új Széchenyi terv
A projekt az Európai Unió támogatásával, az Európai Szociális Alap társfinanszirozásával valósul meg.