Deli in vladaj (računalništvo)

Iz Wikipedije, proste enciklopedije

Skoči na: navigacija, iskanje
Za druge pomene glejte Deli in vladaj (razločitev).

Deli in vladaj (angleško Divide and Conquer) predstavlja strategijo delitve problema na manjše probleme, ki so prvotnemu problemu enaki (enakega tipa). Tak postopek ponavljamo, dokler nismo sposobni rešiti podproblemov.

Strategija temelji na rekurziji.

[uredi] Algoritmi

[uredi] Splošna procedura

procedure DeliInVladaj(a, dno, vrh, rešitev) 
                    // a[dno], a[dno+1], ... , a[vrh]; dno>=1   so podatki
begin
 if problem majhen (dno, vrh) then
   resi (a, dno, vrh, rešitev)
 else
   begin  // problem ni majhen, potrebna delitev
     s := deli(dno,vrh)    // index delitve, razdeli na 2 podproblema
     DeliInVladaj(a, dno, s, rešitev)     // reši levi podproblem
     DeliInVladaj(a, s+1, vrh, rešitev)   // reši desni podproblem
     Združi(dno, s, vrh, rešitev)         // združi rešitve posameznega podproblema
   end
end