Peruutushaku

Backtracking haku , backtracking on yleinen  menetelmä löytää ratkaisuja ongelmaan, joka vaatii täydellisen luettelon kaikista mahdollisista vaihtoehdoista tietyssä joukossa M. Yleensä sen avulla voit ratkaista ongelmia, joissa esitetään kysymyksiä, kuten: "Luettelo kaikki mahdolliset vaihtoehdot . .. , "Kuinka monta tapaa ...", "Onko tapa ...", "Onko esine olemassa ..." jne.

Termi backtracking loi vuonna 1950 amerikkalainen matemaatikko Derrick Henry Lehmer .

Pienet tiedonesitys- tai toteutusominaisuuksiin liittyvät backtracking-menetelmän muutokset ovat saaneet muita nimiä: haara ja sidottu menetelmä , syvällinen haku , yritys ja erehdys -menetelmä jne. Paluuhaun keksivät monet tutkijat lähes samanaikaisesti ja itsenäisesti ennen sen muodollista kuvausta.

Menetelmän kuvaus

Ongelman ratkaisu paluumenetelmällä rajoittuu osittaisen ratkaisun peräkkäiseen laajentamiseen. Jos seuraavassa vaiheessa tällainen laajennus epäonnistuu, palataan lyhyempään osaratkaisuun ja jatketaan etsintää. Tämän algoritmin avulla voit löytää kaikki ratkaisut ongelmaan, jos niitä on. Menetelmän nopeuttamiseksi laskelmat pyritään järjestämään siten, että ilmeisen sopimattomat vaihtoehdot löydetään mahdollisimman aikaisessa vaiheessa. Usein tämä voi merkittävästi lyhentää ratkaisun löytämiseen kuluvaa aikaa.

Käyttämällä

Klassinen esimerkki backtracking-algoritmin käytöstä on kahdeksan kuningattaren ongelma . Sen sanamuoto on seuraava: "Järjestä 8 kuningatarta tavalliselle 64-soluiselle shakkilaudalle niin, ettei kukaan heistä joudu toisen hyökkäyksen kohteeksi." Ensin yksi kuningatar asetetaan laudalle, ja sitten he yrittävät asettaa jokaisen seuraavan kuningattaren, jotta jo vakiintuneet kuningattaret eivät lyö sitä. Jos seuraavassa vaiheessa tällaista asetusta ei voida tehdä, he palaavat yhden askeleen taaksepäin ja yrittävät laittaa aiemmin asennettua kuningattaren toiseen paikkaan.

Lisäksi backtracking-menetelmän avulla voit ratkaista monia muita luettelointiongelmia. Esimerkiksi käyttämällä sitä voit saada tietyn joukon M kaikki osajoukot , sijoittelut , permutaatiot ja yhdistelmät.

Haitat

Paluumenetelmä on yleinen. On melko helppoa suunnitella ja ohjelmoida algoritmeja ongelmien ratkaisemiseksi tällä menetelmällä. Aika ratkaisun löytämiseen voi kuitenkin olla hyvin pitkä ongelman pienilläkin ulottuvuuksilla (alkutietojen määrä) ja se on niin pitkä (voi olla vuosia tai jopa vuosisatoja), että käytännön soveltamisesta ei voi olla kysymys. . Siksi tällaisia ​​algoritmeja suunniteltaessa on välttämätöntä arvioida teoreettisesti niiden työskentelyaika tietyillä tiedoilla. On myös valintaongelmia, joihin voit rakentaa ainutlaatuisia, "nopeita" algoritmeja, joiden avulla voit saada nopeasti ratkaisun myös suurilla ongelmamitoilla. Peruutusmenetelmä on tehoton tällaisissa ongelmissa.

Katso myös

Linkit