Explorați Cărți electronice
Categorii
Explorați Cărți audio
Categorii
Explorați Reviste
Categorii
Explorați Documente
Categorii
Clasa a XI-a H
Prezentare generala
Metoda se bazeaz pe principiul descompunerii problemei n dou sau mai multe subprobleme (mai uoare), care se rezolv, iar soluia pentru problema iniial se obine combinnd soluiile subproblemelor. subproblemele sunt de acelai tip i pentru fiecare din ele se poate aplica aceeai tactic a descompunerii n (alte) subprobleme, pn cnd (n urma descompunerilor repetate) se ajunge la probleme care admit rezolvare imediat. Nu toate problemele pot fi rezolvate prin utilizarea acestei tehnici.(numrul celor rezolvabile prin "divide et impera" este relativ mic, tocmai datorit cerinei ca problema s admit o descompunere repetat)
Prof. Iordachi Lizeta-Mihaela 2
Divide et Impera
Dezbina si Conduce
Divide et impera este o tehnic ce admite o implementare recursiv( "ce se ntmpl la un nivel, se ntmpl la orice nivel-avnd grij s asigurm condiiile de terminare). un algoritm prin divide et impera se elaboreaz astfel:
s-a ajuns la o problem care admite o rezolvare imediat (condiia de terminare), caz n care se rezolv i se revine din apel; nu s-a ajuns n situaia de la punctul anterior, caz n care problema curent este descompus n (dou sau mai multe) subprobleme, pentru fiecare din ele urmeaz un apel recursiv al funciei, dup care combinarea rezultatelor are loc fie pentru fiecare subproblem, fie la final, naintea revenirii din apel.
Cutare binar
Enunt: Se citete un vector cu n componente numere ntregi (numerele se presupun ordonate cresctor) i o valoare ntreag ("nr"). S se decid dac nr se gsete sau nu printre numerele citite, iar n caz afirmativ s se tipreasc indicele componentei care conine aceast valoare. Observatie1: Daca nr se compar pe rnd cu toate cele n componente reprezint o pierdere de performan (nu exploateaz faptul c cele n valori sunt n secven cresctoare). Rezolvare: Vom implementa o funcie care va decide dac valoarea cutat se gsete printre numerele aflate pe poziii de indice cuprins ntre li i ls(iniial, li=1, ls=n) procedand astfel: dac nr coincide cu valoarea de la mijloc, aflat pe poziia de indice m=(li+ls)/2, se tiprete
indicele i se revine din apel (problema a fost rezolvat). n caz contrar, dac mai sunt i alte elemente de analizat (adic li<ls, deci nu au fost verificate toate poziiile necesare), problema se descompune astfel: dac nr este mai mic dect valoarea testat (din mijloc), nseamn c nu se poate afla pe poziiile din partea dreapt, ntruct acestea sunt cel puin mai mari dect valoarea testat. Nr se poate gsi doar printre componentele cu indice ntre li i m - 1, caz n care se reapeleaz funcia cu aceti parametri;[li,m-1] dac nr este mai mare dect valoarea testat (din mijloc), nseamn c nu se poate afla n stnga; se poate gsi doar printre componentele cu indicele ntre m +1 i ls, caz n care se reapeleaz funcia cu aceti parametri.[m+1,ls]
dac nu mai sunt alte elemente de analizat (pentru c i=j i valoarea din mijloc, v*i+, nu coincide cu nr), se concluzioneaz c nr nu apare n cadrul vectorului. Observatie2: problema nu necesit analiza tuturor subproblemelor n care se descompune, ea se reduce la o singur subproblem, iar partea de combinare a soluiilor dispare, rezolvare 5 a este tot de tip "divide et impera".Prof. Iordachi Lizeta-Mihaela
Cautare binara
Cmmdc
Sa se calculeze cmmdc pentru n numere utilizand metoda divide et impera
10
11
Rezolvare: Daca se face mutarea , adica se muta discul de pe tija a pe tija b. Daca n=2 se fac mutarile ac,ab,cb. Daca n>2 . Notam cu H(n,a,b,c) sirul mutarilor celor n discuri de pe tija a pe tija b , utilizand ca tija intermediara, tija c. Conform strategiei Divide et impera incercam sa descompunem problema in alte doua subprobleme de acelasi tip, urmand apoi combinarea solutiilor.
Mutarea celor n discuri de pe tija a pe tija b,utilizand ca tija intermediara tija c, este echivalenta cu: mutarea a n-1 discuri de pe tija a pe tija c , utilizand ca tija intermediara tija b; mutarea discului ramas de pe tija a pe tija b; mutarea a n-1 discuri de pe tija c pe tija b , utilizand ca tija intermediara tija a.
12
13
14