Greedy Search -algoritmi on ongelmanratkaisutapa, joka valitsee aina parhaan mahdollisen vaihtoehdon kussakin vaiheessa ottamatta huomioon päätöksen pitkän aikavälin vaikutusta. Vaikka se ei takaa maailmanlaajuisesti optimaalisen ratkaisun löytämistä, tämä menetelmä toimii usein nopeasti ja on yksinkertaista toteuttaa.
Kuinka se toimii
- Alustus: Aloita tyhjällä tai alkuperäisellä ratkaisulla.
- Paikallinen optimaalinen valinta: Valitse jokaisessa vaiheessa paikallisesti optimaalinen valinta tavoitefunktion tai määriteltyjen kriteerien perusteella.
- Käytä valintaa: Käytä optimaalista valintaa nykyiseen ratkaisuun.
- Toista: Toista vaiheet 2–4, kunnes parempaa paikallista valintaa ei voida tehdä.
Esimerkki: Knapsack Problem
Harkitse Knapsack Problem, jossa meillä on reppu maksimipainolla ja luettelo tavaroista painoineen ja arvoineen. Tavoitteena on valita kohteita maksimoimaan repun kokonaisarvo. Greedy Search lähestymistapa tähän ongelmaan on valita kohteet korkeimman arvo-painosuhteen perusteella.
Esimerkki koodista C++:ssa
Tässä esimerkissä käytämme Greedy Search -lähestymistapaa ratkaistaksemme Knapsack Problem. Lajittelemme tavarat laskevan arvo-painosuhteen perusteella ja valitsemme tuotteet, joiden suhde on korkein ja jotka silti mahtuvat repun painorajaan.