Ahne algoritmi - Greedy algorithm
Ahne algoritmi on mikä tahansa algoritmi , joka seuraa ongelmanratkaisu heuristisen tehdä paikallisesti optimaalinen valinta kussakin vaiheessa. Monissa ongelmissa ahne strategia ei tuota optimaalista ratkaisua, mutta ahne heuristiikka voi tuottaa paikallisesti optimaalisia ratkaisuja, jotka lähentävät maailmanlaajuisesti optimaalista ratkaisua kohtuullisessa ajassa.
Esimerkiksi ahne strategia matkustavaan myyjäongelmaan (joka on erittäin monimutkainen laskennallisesti) on seuraava heuristinen: "Vieraile matkasi jokaisessa vaiheessa lähimmässä vieraamattomassa kaupungissa." Tämän heuristisen tarkoituksena ei ole löytää paras ratkaisu, mutta se päättyy kohtuullisessa määrin vaiheita; optimaalisen ratkaisun löytäminen tällaiseen monimutkaiseen ongelmaan vaatii tyypillisesti kohtuuttoman monta vaihetta. Matemaattisessa optimoinnissa ahneat algoritmit ratkaisevat optimaalisesti yhdistelmäongelmat, joilla on matroidien ominaisuuksia, ja antavat vakio-kerroin-likiarvot submodulaarisen rakenteen optimointitehtäville.
Erityispiirteet
Yleensä ahneilla algoritmeilla on viisi osaa:
- Ehdokasjoukko, josta luodaan ratkaisu
- Valintatoiminto, joka valitsee parhaan ehdokkaan, joka lisätään ratkaisuun
- Toteutettavuusfunktio, jota käytetään määrittämään, voidaanko ehdokasta käyttää ratkaisun edistämiseen
- Tavoitefunktio, joka antaa arvon ratkaisulle tai osittaiselle ratkaisulle, ja
- Ratkaisutoiminto, joka ilmaisee, kun olemme löytäneet täydellisen ratkaisun
Ahneat algoritmit tuottavat hyviä ratkaisuja joihinkin matemaattisiin ongelmiin , mutta eivät muihin. Useimmilla ongelmilla, joilla he työskentelevät, on kaksi ominaisuutta:
- Ahne valinta omaisuutta
- Voimme tehdä sen valinnan, joka tällä hetkellä näyttää parhaalta, ja ratkaista myöhemmin syntyvät osaongelmat. Ahnean algoritmin tekemä valinta voi riippua tähän mennessä tehdyistä valinnoista, mutta ei tulevista valinnoista tai kaikista osaongelman ratkaisuista. Se tekee iteratiivisesti yhden ahneen valinnan toisensa jälkeen, pienentäen jokaisen annetun ongelman pienemmäksi. Toisin sanoen ahne algoritmi ei koskaan harkitse uudelleen valintojaan. Tämä on tärkein ero dynaamiseen ohjelmointiin , joka on tyhjentävä ja joka varmasti löytää ratkaisun. Jokaisen vaiheen jälkeen dynaaminen ohjelmointi tekee päätöksiä kaikkien edellisessä vaiheessa tehtyjen päätösten perusteella ja voi harkita uudelleen edellisen vaiheen algoritmista polkua ratkaisuun.
- Optimaalinen rakenne
- "Ongelmalla on optimaalinen alarakenne, jos optimaalinen ratkaisu ongelmaan sisältää optimaaliset ratkaisut osaongelmiin."
Epäonnistumisen tapaukset
Ahneat algoritmit eivät pysty tuottamaan optimaalista ratkaisua moniin muihin ongelmiin ja voivat jopa tuottaa ainutlaatuisen pahimman mahdollisen ratkaisun. Yksi esimerkki on edellä mainittu matkustava myyjäongelma : jokaiselle kaupunkimäärälle on määritetty etäisyydet niiden kaupunkien välillä, joille lähin naapuri heuristiikka tuottaa ainutlaatuisen pahimman mahdollisen kiertueen. Katso muita mahdollisia esimerkkejä kohdasta horisontin vaikutus .
Tyypit
Ahneita algoritmeja voidaan luonnehtia "lyhytnäköisiksi" ja myös "palautumattomiksi". Ne ovat ihanteellisia vain ongelmille, joilla on "optimaalinen alarakenne". Tästä huolimatta moniin yksinkertaisiin ongelmiin parhaiten soveltuvat algoritmit ovat ahneita. On kuitenkin tärkeää huomata, että ahne algoritmia voidaan käyttää valintaalgoritmina priorisoimaan haun vaihtoehdot tai haarautunut algoritmi. Ahnealla algoritmilla on muutamia muunnelmia:
- Puhtaat ahneat algoritmit
- Ortogonaaliset ahneat algoritmit
- Rento ahne algoritmit
Teoria
Ahneilla algoritmeilla on pitkä historia yhdistelmäoptimoinnista ja teoreettisesta tietojenkäsittelytieteestä . Ahneiden heuristiikkojen tiedetään tuottavan epäoptimaalisia tuloksia monista ongelmista, joten luonnollisia kysymyksiä ovat:
- Mihin ongelmiin ahneat algoritmit toimivat optimaalisesti?
- Mihin ongelmiin ahneat algoritmit takaavat suunnilleen optimaalisen ratkaisun?
- Mihin ongelmiin ahne algoritmi ei takaa optimaalista ratkaisua?
Näihin kysymyksiin on olemassa laaja kirjallisuus, joka vastaa yleisiin ongelmaluokkiin, kuten matroideihin , sekä erityisiin ongelmiin, kuten sarjaan .
Matroidit
Matroid on matemaattinen rakenne, joka yleistää käsitettä lineaarinen riippumattomuus välillä vektoriavaruuksia mielivaltaisiin sarjaa. Jos optimointitehtävässä on matroidin rakenne, asianmukainen ahne algoritmi ratkaisee sen optimaalisesti.
Submodulaariset toiminnot
Joukon osajoukoille määritettyä funktiota kutsutaan submodulaariseksi, jos jokaisella meillä on se .
Oletetaan, että halutaan löytää joukko, joka maksimoi . Ahne algoritmi, joka rakentaa joukon lisäämällä vähitellen eniten kussakin vaiheessa kasvavaa elementtiä , tuottaa ulostulona vähintään joukon . Toisin sanoen ahne toimii yhtä hyvin kuin optimaalinen ratkaisu.
Samankaltaiset takuut ovat todistettavissa, kun tuotokselle asetetaan lisärajoituksia, kuten kardinaalisuusrajoituksia, vaikka ahnean algoritmiin vaaditaan usein pieniä muutoksia. Katso yleiskatsaus.
Muita takuisiin liittyviä ongelmia
Muita ongelmia, joihin ahne algoritmi antaa vahvan takuun, mutta ei optimaalista ratkaisua, ovat
Monilla näistä ongelmista on vastaavat alarajat; eli ahne algoritmi ei toimi pahimmassa tapauksessa paremmin kuin takuu.
Sovellukset
Ahneat algoritmit eivät yleensä (mutta ei aina) löydä maailmanlaajuisesti optimaalista ratkaisua, koska ne eivät yleensä toimi tyhjentävästi kaikessa datassa. He voivat sitoutua tiettyihin valintoihin liian aikaisin estäen heitä löytämään parhaan kokonaisratkaisun myöhemmin. Esimerkiksi kaikki tunnetut ahne väritys algoritmeja kaavio värjäys ongelma ja kaikki muut NP-täydellisiä ongelmat eivät aina löytää optimaalisia ratkaisuja. Siitä huolimatta ne ovat hyödyllisiä, koska ne keksivät nopeasti ja antavat usein hyviä likimääräisiä arvoja optimaaliseen.
Jos ahne algoritmi voidaan osoittaa tuottavan globaalin optimin tietylle ongelmaluokalle, siitä tulee tyypillisesti valintamenetelmä, koska se on nopeampi kuin muut optimointimenetelmät, kuten dynaaminen ohjelmointi . Esimerkkejä tällaisista ahneista algoritmeista ovat Kruskalin algoritmi ja Primin algoritmi vähimmäispituuspuiden löytämiseksi ja algoritmi optimaalisten Huffman -puiden löytämiseksi .
Ahneat algoritmit näkyvät myös verkon reitityksessä . Ahneella reitityksellä viesti välitetään naapurisolmuun, joka on "lähimpänä" kohdetta. Solmun sijainnin käsite (ja siten "läheisyys") voidaan määrittää sen fyysisen sijainnin perusteella, kuten ad hoc -verkkojen käyttämässä maantieteellisessä reitityksessä . Sijainti voi myös olla täysin keinotekoinen rakenne, kuten pienen maailman reitityksessä ja hajautetussa taulukossa .
Esimerkkejä
- Aktiivisuus valinta ongelma on tyypillistä tämän luokan ongelmia, jossa tavoitteena on valita maksimimäärä toimintoja, jotka eivät ole ristiriidassa keskenään.
- Vuonna Macintosh-tietokone pelin Crystal Quest tavoitteena on kerätä kiteitä, tavalla, joka on samanlainen kuin kauppamatkustajan ongelma . Pelissä on demotila, jossa peli käyttää ahneita algoritmeja jokaiseen kristalliin. Tekoälyä ei selitä esteitä, joten demotila usein päättyy nopeasti.
- Sovitus harjoittaminen on esimerkki ahne algoritmi sovelletaan signaalin approksimaatio.
- Ahne algoritmi löytää optimaalisen ratkaisun Malfatin ongelmaan löytää kolme irrotettua ympyrää tietyn kolmion sisältä, jotka maksimoivat ympyröiden kokonaispinta -alan; oletetaan, että sama ahne algoritmi on optimaalinen mille tahansa ympyrälle.
- Ahneella algoritmilla rakennetaan Huffman -puu Huffman -koodauksen aikana, jolloin se löytää optimaalisen ratkaisun.
- Vuonna päätöspuuta oppimista , ahne algoritmeja käytetään yleisesti, mutta ne eivät välttämättä löytää optimaalinen ratkaisu.
- Yksi suosittu tällainen algoritmi on ID3 -algoritmi päätöspuun rakentamiseen.
-
Dijkstran algoritmi ja siihen liittyvä A* -hakualgoritmi ovat todistettavasti optimaalisia ahneita algoritmeja kuvaajahakuun ja lyhyimmän polun löytämiseen .
- * Haku on ehdollisesti optimaalinen, mikä edellyttää " hyväksyttävää heuristiikkaa ", joka ei yliarvioi reitin kustannuksia.
- Kruskalin algoritmi ja Primin algoritmi ovat ahneita algoritmeja tietyn yhdistetyn kuvaajan vähimmäispituuspuiden muodostamiseksi . He löytävät aina optimaalisen ratkaisun, joka ei välttämättä ole ainutlaatuinen yleensä.
Katso myös
Viitteet
Lähteet
- Cormen, Thomas H .; Leiserson, Charles E .; Rivest, Ronald L .; Stein, Clifford (2001). "16 ahneita algoritmeja" . Johdanto algoritmeihin . MIT Paina. s. 370–. ISBN 978-0-262-03293-3.
- Gutin, Gregory; Joo, Anders; Zverovich, Aleksei (2002). "Matkava myyntimies ei saa olla ahne: TSP: n ahne-tyyppisen heuristiikan ylivalta-analyysi" . Diskreetti sovellettu matematiikka . 117 (1–3): 81–86. doi : 10.1016/S0166-218X (01) 00195-0 .
- Bang-Jensen, Jørgen; Gutin, Gregory; Joo, Anders (2004). "Kun ahne algoritmi epäonnistuu" . Erillinen optimointi . 1 (2): 121–127. doi : 10.1016/j.disopt.2004.03.007 .
- Bendall, Gareth; Margot, François (2006). "Yhdistelmäongelmien ahne tyyppinen vastustus" . Erillinen optimointi . 3 (4): 288–298. doi : 10.1016/j.disopt.2006.03.001 .
- Feige, U. (1998). "Kynnys ln n likimääräisen kannen arvioimiseksi" (PDF) . ACM: n lehti . 45 (4): 634–652. doi : 10.1145/285055.285059 . S2CID 52827488 .
- Nemhauser, G .; Wolsey, LA; Fisher, ML (1978). "Analyysi approksimaatioista submodulaaristen joukkofunktioiden maksimoimiseksi - I" . Matemaattinen ohjelmointi . 14 (1): 265–294. doi : 10.1007/BF01588971 . S2CID 206800425 .
- Buchbinder, Niv; Feldman, Moran; Naor, Joseph (Seffi); Schwartz, Roy (2014). "Submodulaarinen maksimointi kardinaalirajoituksilla" (PDF) . ACM-SIAM-symposiumin diskreettejä algoritmeja käsittelevän kahdeskymmenesviidennen viidennen vuotuisen symposiumin tulokset . Teollisen ja soveltavan matematiikan yhdistys. doi : 10.1137/1.9781611973402.106 . ISBN 978-1-61197-340-2.
- Krause, A .; Golovin, D. (2014). "Submodulaarinen toimintojen maksimointi" . Julkaisussa Bordeaux, L .; Hamadi, Y .; Kohli, P. (toim.). Toimivuus: Käytännöllisiä lähestymistapoja vaikeisiin ongelmiin . Cambridge University Press. s. 71–104. doi : 10.1017/CBO9781139177801.004 . ISBN 9781139177801.
Ulkoiset linkit
- "Ahne algoritmi" , Encyclopedia of Mathematics , EMS Press , 2001 [1994]
- Lahja, Noah. "Esimerkki ahneesta kolikosta" .
