Metoda Greedy este o tehnică de programare care alege la fiecare pas opțiunea local optimă, în speranța că aceasta va conduce la soluția global optimă. Algoritmul face o alegere care pare cea mai bună în momentul curent, fără a reconsidera deciziile anterioare, iar corectitudinea sa este garantată doar pentru problemele care respectă proprietatea de substructură optimală și alegerea greedy.
Metoda Greedy (lacomă) este o tehnică de programare utilizată pentru rezolvarea problemelor de optimizare. Ea constă în alegerea la fiecare pas a opțiunii locale optimale (cea mai bună din momentul respectiv) în speranța că aceasta va conduce la soluția global optimă.
Această abordare este eficientă deoarece, de multe ori, complexitatea sa este polinomială (de obicei O(n log n) sau O(n)), dar nu garantează întotdeauna optimul global.
Doar problemele care respectă următoarele două proprietăți sunt rezolvate corect prin metoda Greedy:
Pentru a aplica corect metoda, trebuie demonstrată corectitudinea algoritmului, de obicei prin inducție sau prin tehnica schimbului (exchange argument).
Avem n spectacole, fiecare cu timp de început și sfârșit. Se dorește selectarea unui număr maxim de spectacole care nu se suprapun.
Algoritmul greedy:
Explicație: prin alegerea celui care se termină cel mai devreme, lăsăm cât mai mult timp pentru restul.
Exemplu: spectacolele (1,3), (2,5), (4,6), (5,7)
Avem un rucsac de capacitate C și n obiecte, fiecare cu greutatea g_i și valoarea v_i. Se poate lua orice fracțiune dintr-un obiect. Se cere valoarea maximă transportată.
Algoritmul greedy:
Exemplu: C=10, obiecte: (v=60, g=10, raport=6), (v=100, g=20, raport=5), (v=120, g=30, raport=4)
Alt exemplu: C=50
Se dă o sumă S și monede cu valori 1, 5, 10, 50, 100. Găsiți numărul minim de monede.
Algoritmul greedy: alege cât mai multe monede de valoare mare care nu depășesc suma rămasă.
Exemplu: S=178
Acest sistem este canonic, deci soluția este optimă.
Exemplu de eșec: pentru monede de 1, 3, 4, suma 6
Vrei exerciții pe lecția asta + AI care te ajută pas cu pas?
Cont gratuit — 20 întrebări AI/zi, exerciții nelimitate.