Ahne algoritmi on algoritmi , joka koostuu paikallisesti optimaalisten päätösten tekemisestä kussakin vaiheessa olettaen, että myös lopullinen ratkaisu osoittautuu optimaaliseksi. Tiedetään, että jos tehtävän rakenne on annettu matroidilla , niin ahnealgoritmin soveltaminen antaa globaalin optimin.
Jos algoritmin yleinen optimaalisuus on lähes aina totta, se on yleensä parempi kuin muut optimointitekniikat, kuten dynaaminen ohjelmointi .
Ahneen algoritmin soveltuvuuden arvioimiselle tietyn ongelman ratkaisemiseen ei ole olemassa yleisiä kriteerejä, mutta ahneilla algoritmeilla ratkaistuilla ongelmilla on kaksi ominaisuutta: ensinnäkin niihin soveltuu Greedy Choice -periaate ja toiseksi niillä on Optimaalisuus osatehtäville. omaisuutta .
Ahneen valinnan periaatteen sanotaan pätevän optimointiongelmaan , jos paikallisesti optimaalisten valintojen sarja tuottaa globaalisti optimaalisen ratkaisun. Tyypillisessä tapauksessa optimiteetin todistaminen noudattaa seuraavaa kaaviota:
Ongelmalla sanotaan olevan optimaalisuusominaisuus aliongelmien johtamiseksi tulokseen , jos ongelman optimaalinen ratkaisu sisältää optimaaliset ratkaisut kaikille sen aliongelmille. Esimerkiksi patenttivaatimusten valintaongelmassa voidaan huomata, että jos on optimaalinen vaatimusjoukko, joka sisältää väitteen numero 1, niin on optimaalinen vaatimusjoukko pienemmälle vaatimusjoukolle , joka koostuu niistä vaatimuksista, joille .
Tehtävä. Tietyn valtion rahajärjestelmä koostuu kolikoista, joiden nimellisarvo on . Määrä on laskettava liikkeeseen mahdollisimman pienellä määrällä kolikoita.
Ahne algoritmi tämän ongelman ratkaisemiseksi on seuraava. Suurin mahdollinen määrä nimellisarvoisia kolikoita otetaan : . Samalla tavalla saamme kuinka monta pienemmän arvon kolikkoa tarvitaan jne.
Tähän ongelmaan ahne algoritmi ei aina anna optimaalista ratkaisua, vaan vain joillekin, kanonisille rahajärjestelmille, kuten USA:ssa käytetyille (1, 5, 10, 25 senttiä). Ei-kanonisilla järjestelmillä ei ole tätä ominaisuutta. Joten esimerkiksi 24 kopikan määrä 1, 5 ja 7 kopikan kolikoilla. ahne algoritmi vaihtaa näin: 7 kopekkaa. - 3 kpl, 1 kop. - 3 kappaletta, kun taas oikea ratkaisu on 7 kopekkaa. - 2 kpl, 5 kopekkaa. - 2 kpl. [yksi]
Muotoilu nro 1. Hakemukset tunneiden johtamiseen tietylle yleisölle annetaan. Jokaisessa hakemuksessa on ilmoitettu oppitunnin alku ja loppu ( ja -: nnelle hakemukselle). Pyyntöjen risteyksen tapauksessa vain yksi niistä voidaan täyttää. Sovellukset numeroilla ja ovat yhteisiä, jos välit ja eivät leikkaa (eli tai ). Sovellusten valinnan tehtävänä on kerätä mahdollisimman monta toistensa kanssa yhdistettyjä hakemuksia.
Muotoilu nro 2. Konferenssissa , jotta epäviralliseen viestintään jäisi enemmän aikaa, eri osiot murskattiin eri yleisöille. Äärimmäisen laaja-alainen tiedemies haluaa osallistua useille luennoille, jotka pidetään eri osastoissa. Jokaisen raportin alku ja loppu tunnetaan. Määritä enimmäismäärä raportteja, joihin voit osallistua.
Tässä on ahne algoritmi, joka ratkaisee tämän ongelman. Samalla oletetaan, että sovellukset on järjestetty kasvavassa päättymisajan järjestyksessä. Jos näin ei ole, voit lajitella ne ajoissa ; tilaukset, joilla on sama päättymisaika, tehdään satunnaisessa järjestyksessä.
Activity-Selector(s,f)
Luokkien alun ja lopun taulukot syötetään tämän algoritmin tuloon. Joukko A koostuu valittujen pyyntöjen numeroista ja j on viimeisen pyynnön numero. Ahne algoritmi etsii järjestystä, joka alkaa aikaisintaan j : nnen lopussa, sisällyttää sitten löydetyn järjestyksen A :een ja j antaa sen numeron. Näin ollen joka kerta valitsemme sen (ei vielä alkanut) oppitunnin, jonka loppuun on vähiten aikaa jäljellä.
Algoritmi toimii , eli lajittelu ja näytteenotto. Jokaisessa vaiheessa valitaan paras ratkaisu. Osoittakaamme, että lopulta saamme optimaalisen.
Todiste . Huomaa, että kaikki tilaukset lajitellaan ei-laskevaan päättymisaikaan. Hakemus numero 1 sisältyy luonnollisesti optimiin (jos ei, niin korvaamme varhaisimman järjestyksen optimissa sillä, tämä ei pahenna sitä). Heittämällä pois kaikki sovellukset, jotka ovat ristiriidassa ensimmäisen kanssa, saamme alkuperäisen ongelman vähemmällä sovelluksella. Väittelemällä induktiolla pääsemme optimaaliseen ratkaisuun samalla tavalla.
Ahneiden algoritmien yleistys on Rado-Edmonds-algoritmi .
Useille NP-luokkaan kuuluville ongelmille ahneet algoritmit eivät tarjoa optimaalista ratkaisua. Nämä sisältävät:
Siitä huolimatta useissa ongelmissa ahneet algoritmit antavat hyviä likimääräisiä ratkaisuja.
Koneoppiminen ja tiedon louhinta | |
---|---|
Tehtävät | |
Opettajan kanssa oppimista | |
ryhmäanalyysi | |
Mittasuhteiden vähentäminen | |
Rakenteellinen ennustaminen | |
Anomalian havaitseminen | |
Piirrä todennäköisyysmallit | |
Neuroverkot | |
Vahvistusoppiminen |
|
Teoria | |
Lehdet ja konferenssit |
|