logo

Algoritmul Divide and Conquer

Algoritmul Divide and Conquer este o strategie de rezolvare a problemelor care implică împărțirea unei probleme complexe în părți mai mici, mai ușor de gestionat, rezolvarea fiecărei părți în mod individual și apoi combinarea soluțiilor pentru a rezolva problema inițială. Este o tehnică algoritmică utilizată pe scară largă în informatică și matematică.

Exemplu: În Merge Sort algoritmul, cel Diviza și cuceri strategia este folosită pentru a sorta o listă de elemente. Imaginea de mai jos ilustrează stările de împărțire și îmbinare pentru a sorta matricea folosind Merge Sort .



Cuprins

Ce este algoritmul Divide and Conquer?

Divide and Conquer este o tehnică de rezolvare a problemelor care implică împărțirea unei probleme mai mari în subprobleme, rezolvarea subproblemelor în mod independent și combinarea soluțiilor acelor subprobleme pentru a obține soluția problemei mai mari.



Etapele algoritmului Divide and Cuquer:

Algoritmul Divide and Conquer poate fi împărțit în trei etape: Divide , A cuceri și Combina .

1. Împărțiți:

  • Împărțiți problema inițială în subprobleme mai mici.
  • Fiecare subproblemă ar trebui să reprezinte o parte a problemei generale.
  • Scopul este de a împărți problema până când nu mai este posibilă o altă împărțire.

2. Cuceri:

  • Rezolvați fiecare dintre subproblemele mai mici individual.
  • Dacă o subproblemă este suficient de mică (denumită adesea cazul de bază), o rezolvăm direct fără recursuri suplimentare.
  • Scopul este de a găsi soluții pentru aceste subprobleme în mod independent.

3. Îmbinați:

  • Combinați sub-problemele pentru a obține soluția finală a întregii probleme.
  • Odată rezolvate subproblemele mai mici, combinăm recursiv soluțiile lor pentru a obține soluția problemei mai mari.
  • Scopul este de a formula o soluție pentru problema inițială prin îmbinarea rezultatelor din subprobleme.

Aplicații ale algoritmului Divide and Conquer:

  • Sortare îmbinare: Sortarea prin îmbinare este un exemplu clasic de algoritm de sortare împărțiți și cuceriți. Acesta descompune matricea în subgrupuri mai mici, le sortează individual și apoi le îmbină pentru a obține matricea sortată.
  • Constatare mediană: Mediana unui set de numere poate fi găsită folosind o abordare împărțire și cuceri. Împărțind recursiv mulțimea în submulțimi mai mici, mediana poate fi determinată eficient.
  • Constatare min și max: Algoritmul Divide and Conquer poate fi folosit pentru a găsi simultan atât elementele minime, cât și cele maxime dintr-o matrice. Prin împărțirea matricei în jumătăți și comparând perechile min-max din fiecare jumătate, totalul min și max poate fi identificat în complexitatea timpului logaritmic.
  • Înmulțirea matricei: Algoritmul lui Strassen pentru înmulțirea matricelor este o tehnică de împărțire și cucerire care reduce numărul de înmulțiri necesare pentru matrici mari prin descompunerea matricelor în submatrici mai mici și combinând produsele lor.
  • Problema cu cea mai apropiată pereche: Problema perechii celei mai apropiate implică găsirea celor mai apropiate două puncte dintr-un set de puncte dintr-un spațiu multidimensional. Un algoritm de împărțire și cucerire, cum ar fi algoritmul de împărțire și cuceri, cea mai apropiată pereche, poate rezolva eficient această problemă prin împărțirea recursiv a punctelor și îmbinarea soluțiilor din subprobleme.

Bazele algoritmului Divide and Conquer:

Algoritmi standard activați Algoritmul Divide and Conquer :

  • Căutare binară
  • Merge Sort
  • Sortare rapida
  • Calculați pow(x, n)
  • Algoritm Karatsuba pentru multiplicare rapidă
  • Înmulțirea matricei a lui Strassen
  • Carcasă convexă (algoritm simplu de împărțire și cucerire)
  • Algoritmul Quickhull pentru Hull convex

Probleme bazate pe căutare binară:

  • Găsiți un element de vârf într-o matrice dată
  • Verificați elementul majoritar într-o matrice sortată
  • K-lea element din două tablouri sortate
  • Aflați numărul de zerouri
  • Găsiți numărul de rotații în matrice Rotated Sorted
  • Găsiți punctul în care o funcție crescătoare monotonă devine pozitivă prima dată
  • Mediana a două matrice sortate
  • Mediana a două matrice sortate de dimensiuni diferite
  • Problema partiției pictorului folosind Căutare binară

Practicați problemele pe Algoritmul Divide and Conquer :

  • Rădăcina pătrată a unui număr întreg
  • Maximul și minimul unei matrice folosind numărul minim de comparații
  • Găsiți frecvența fiecărui element într-o matrice cu interval limitat în mai puțin de timp O(n).
  • Problemă cu gresie
  • Numără inversiuni
  • Problema orizontului
  • Căutați într-o matrice 2D sortată pe rând și pe coloane
  • Alocați un număr minim de pagini
  • Exponentiație modulară (putere în aritmetică modulară)

Link-uri rapide:

  • Aflați structura datelor și algoritmi | Tutorial DSA
  • „Probleme de practică” la Divide and Conquer
  • „Chestionare” despre Divide and Conquer