Pri strategiji deli in vladaj se pojavljata dve skupini problemov. V prvo
skupino sodijo problemi, pri katerih je rešitev enega od podproblemov kar
rešitev začetnega problema, kar pomeni, da združevanje rešitev ni potrebno.
V drugo skupino sodijo problemi, za katere končno rešitev dobimo tako, da
z nekim postopkom združujemo rešitve podproblemov.
Klasičen primer metode deli in vladaj, kjer je rešitev enega od podproblemov hkrati rešitev začetnega problema, je iskanje elementa v urejenem
zaporedju s pomočjo bisekcije.
Urejanje z zlivanjem pa je klasičen primer metode deli in vladaj, kjer končno
rešitev dobimo z združevanjem rešitev podproblemov.
Splošen rekurziven algoritem metode deli in vladaj, kjer moramo rešitve
podproblemov združiti, bi lahko opisali z naslednjo pseudokodo:
Metoda RazdeliProblem()
razdeli problem na dva podproblema, ki ju
po potrebi znova delimo, kar je prikazano z rekurzivnim klicem za oba podproblema. Ko podproblema rešimo, rašitvi posameznih podproblemov združimo v rešitev začetnega problema.
def DeliInVladaj(problem, resitev)
if ProblemJeMajhen(problem):
resitev = ResiProblem(problem)
else:
RazdeliProblem(problem, podproblem1, podproblem2)
DeliInVladaj(podproblem1, resitev1)
DeliInVladaj(podproblem2, resitev2)
resitev = ZdruziResitvi(resitev1, resitev2)
Pseudokoda za skupino problemov, kjer je rešitev začetnega problema rešitev enega od podproblemov, kar pomeni, da združevanje ni potrebno, je:
def DeliInVladaj(problem, resitev)
if ProblemJeMajhen(problem):
resitev = ResiProblem(problem)
else:
RazdeliProblem(problem, podproblem1, podproblem2)
if ResitevVProblemu(problem, podproblem1):
DeliInVladaj (podproblem1, resitev)
else:
DeliInVladaj(podproblem2, resitev)