logo

hajota ja hallitse -algoritmi

hajota ja hallitse -algoritmi on ongelmanratkaisustrategia, jossa monimutkainen ongelma hajotetaan pienempiin, paremmin hallittaviin osiin, ratkaistaan ​​jokainen osa erikseen ja yhdistetään sitten ratkaisut alkuperäisen ongelman ratkaisemiseksi. Se on laajalti käytetty algoritmitekniikka tietojenkäsittelytieteessä ja matematiikassa.

Esimerkki: Vuonna Yhdistä lajittelu algoritmi, hajota ja hallitse strategiaa käytetään elementtiluettelon lajitteluun. Alla oleva kuva havainnollistaa jakamisen ja yhdistämisen tilat taulukon lajittelemiseksi Yhdistä lajittelu .



verrata javan merkkijonoihin

Sisällysluettelo

Mikä on hajota ja hallitse -algoritmi?

Divide and Conquer on ongelmanratkaisutekniikka, joka sisältää suuremman ongelman jakamisen osaongelmiin, osaongelmien ratkaisemisen itsenäisesti ja näiden osaongelmien ratkaisujen yhdistämisen saadakseen ratkaisun suuremmalle ongelmalle.



np.zeros

Jaa ja hallitse -algoritmin vaiheet:

Divide and Conquer -algoritmi voidaan jakaa kolmeen vaiheeseen: Jakaa , Valloittaa ja Yhdistää .

1. Jaa:

  • Pura alkuperäinen ongelma pienempiin osaongelmiin.
  • Jokaisen osaongelman tulee edustaa osa kokonaisongelmaa.
  • Tavoitteena on jakaa ongelma, kunnes se ei enää ole mahdollista.

2. Valloita:

  • Ratkaise jokainen pienempi osaongelma erikseen.
  • Jos aliongelma on tarpeeksi pieni (kutsutaan usein perustapaukseksi), ratkaisemme sen suoraan ilman lisärekursioita.
  • Tavoitteena on löytää ratkaisuja näihin osaongelmiin itsenäisesti.

3. Yhdistä:

  • Yhdistä aliongelmat saadaksesi lopullisen ratkaisun koko ongelmaan.
  • Kun pienemmät osaongelmat on ratkaistu, yhdistämme niiden ratkaisut rekursiivisesti saadaksemme ratkaisun suurempaan ongelmaan.
  • Tavoitteena on muotoilla ratkaisu alkuperäiseen ongelmaan yhdistämällä osaongelmien tulokset.

Jaa ja hallitse -algoritmin sovellukset:

  • Yhdistä lajittelu: Yhdistä lajittelu on klassinen esimerkki hajota ja hallitse -lajittelualgoritmista. Se jakaa taulukon pienempiin aliryhmiin, lajittelee ne yksitellen ja yhdistää ne sitten lajiteltuun taulukkoon.
  • Mediaanilöydös: Lukujoukon mediaani voidaan löytää käyttämällä jakaa ja hallitse -lähestymistapaa. Jakamalla joukko rekursiivisesti pienempiin osajoukkoihin, mediaani voidaan määrittää tehokkaasti.
  • Min ja Max löytö: Divide and Conquer -algoritmia voidaan käyttää taulukon minimi- ja maksimielementtien etsimiseen samanaikaisesti. Jakamalla matriisi puoliksi ja vertaamalla kummankin puolikkaan min-max-pareja, kokonaismin ja max voidaan tunnistaa logaritmisen aikamonimutkaisuuden perusteella.
  • Matriisin kertolasku: Strassenin matriisin kertolaskualgoritmi on jakaa ja hallitse -tekniikka, joka vähentää suurten matriisien kertolaskujen määrää pilkkomalla matriisit pienemmiksi alimatriiseiksi ja yhdistämällä niiden tulot.
  • Lähin pari -ongelma: Lähin pariongelma sisältää kahden lähimmän pisteen löytämisen pistejoukosta moniulotteisessa avaruudessa. Jaa ja hallitse -algoritmi, kuten lähimmän parin jakaminen ja hallitse -algoritmi, voi tehokkaasti ratkaista tämän ongelman jakamalla pisteet rekursiivisesti ja yhdistämällä osaongelmien ratkaisut.

hajota ja hallitse -algoritmin perusteet:

Vakioalgoritmit käytössä hajota ja hallitse -algoritmi :

  • Binäärihaku
  • Yhdistä lajittelu
  • Nopea lajittelu
  • Laske pow(x, n)
  • Karatsuba-algoritmi nopeaan kertolaskuun
  • Strassenin matriisikertolasku
  • Convex Hull (yksinkertainen hajoa ja hallitse -algoritmi)
  • Quickhull-algoritmi kuperalle rungolle

Binäärihakuun perustuvat ongelmat:

  • Etsi huippuelementti annetusta taulukosta
  • Tarkista enemmistöelementti lajitellusta taulukosta
  • Kahden lajitellun taulukon K. elementti
  • Etsi nollien lukumäärä
  • Etsi kiertoluku Kierretty lajiteltu -taulukosta
  • Etsi kohta, jossa monotonisesti kasvava funktio tulee positiiviseksi ensimmäisen kerran
  • Kahden lajitellun taulukon mediaani
  • Kahden erikokoisen lajitellun taulukon mediaani
  • Maalarin osioongelma binaarihaulla

Harjoittele ongelmia hajota ja hallitse -algoritmi :

  • Kokonaisluvun neliöjuuri
  • Matriisin maksimi- ja minimiarvo käyttäen minimimäärää vertailuja
  • Etsi kunkin alkion taajuus rajoitetussa taulukossa alle O(n) ajassa
  • Laatoitusongelma
  • Laske inversiot
  • Skyline-ongelma
  • Hae rivi- ja sarakekohtaisesti lajitetussa 2D-taulukossa
  • Varaa sivujen vähimmäismäärä
  • Modulaarinen eksponentio (teho modulaarisessa aritmetiikassa)

Pikalinkit:

  • Opi tietorakenne ja algoritmit | DSA opetusohjelma
  • 'Harjoitteluongelmat' Divide and Conquer -sivustolla
  • 'Tiveliä' aiheesta hajota ja hallitse