Programarea calculatoarelor Lecia 11 Tehnica Divide Et Impera

  • Slides: 11
Download presentation
Programarea calculatoarelor. Lecția 11: Tehnica Divide Et Impera

Programarea calculatoarelor. Lecția 11: Tehnica Divide Et Impera

Abilități: • Utilizarea algoritmilor bazați pe metoda Divide Et Impera în cadrul aplicațiilor de

Abilități: • Utilizarea algoritmilor bazați pe metoda Divide Et Impera în cadrul aplicațiilor de consolă.

Descriere: • Divide et impera este o tehnică specială prin care se pot rezolva

Descriere: • Divide et impera este o tehnică specială prin care se pot rezolva anumite probleme. • Expresia provine din latină unde exista şi este celebră: „Divide et impera”. • În română este mai cunoscut ca: „dezbină şi stăpâneşte”. Expresia este atribuită lui Filip al II-lea, rege al Macedoniei (382 -336 Î. C. ), descriind politica sa împotriva oraşelorstate greceşti. Divide et Impera, ca tehnică de programare, se bazează pe un principiu asemănator celui din viaţa politică şi socială, scopul fiind însă total diferit.

Tehnica “Divide et Impera” constă în două etape: • Divide. Problema dată este împărţită

Tehnica “Divide et Impera” constă în două etape: • Divide. Problema dată este împărţită în două sau mai multe subprobleme de acelaşi tip, dar de dimensiuni mai mici. Subproblemele se rezolvă direct, dacă dimensiunea lor permite aceasta (cazuri elementare), sau, fiind de acelaşi tip, se rezolvă în mod recursiv, prin acelaşi procedeu. • Impera. Se combină soluţiile subproblemelor pentru a obţine soluţia problemei iniţial.

Restricţii: • Metoda Divide Et Impera se poate aplica în rezolvarea unei probleme care

Restricţii: • Metoda Divide Et Impera se poate aplica în rezolvarea unei probleme care îndeplineşte următoarele condiţii : § se poate descompune în ( două sau mai multe) suprobleme; § aceste subprobleme sunt independente una faţă de alta (o subproblemă nu se rezolvă pe baza alteia şi nu se foloseşte de rezultatele celeilalte); § aceste subprobleme sunt similare cu problema iniţială; § la rândul lor subproblemele se pot descompune (dacă este necesar) în alte subprobleme mai simple; § aceste subprobleme simple se pot soluţiona imediat prin algoritmul simplificat.

Schema generală: • Metoda Divide Et Impera admite o implementare recursivă, deoarece subproblemele sunt

Schema generală: • Metoda Divide Et Impera admite o implementare recursivă, deoarece subproblemele sunt similare problemei inițiale, dar de dimensiuni mai mici. • Principiul fundamental al recursivității este autoapelarea unui subprogram când acesta este active, ceea ce se intamplă la un nivel, se întâmplă la orice nivel, având grijă să asigurăm condiţia de terminare a apelurilor repetate. • Asemănător se întâmplă şi în cazul metodei Divide Et Impera.

Algoritmul general:

Algoritmul general:

Aplicații: • Căutare binară; • Determinarea maximului (minimului) dintr-un vector; • Sortarea prin interclasare

Aplicații: • Căutare binară; • Determinarea maximului (minimului) dintr-un vector; • Sortarea prin interclasare (merge sort); • Sortarea rapidă (quick sort)ș • Problema turnurilor Hanoi; • Metoda bisecției pentru rezolvarea unei ecuații neliniare; • Etc.

Problema 1: Căutarea binară • Se dă un vector sortat crescător (v[1. . n])

Problema 1: Căutarea binară • Se dă un vector sortat crescător (v[1. . n]) ce conține valori reale distincte și o valoare x. • Sa se găsească la ce poziție apare x în vectorul dat. • Pentru rezolvarea acestei probleme folosim un algoritm D&I: • Divide: împărțim vectorul în doi sub-vectori de dimensiune n/2. • Stăpânește: aplicăm algoritmul de căutare binară pe sub-vectorul care conține valoarea căutată. • Combină: soluția sub-problemei devine soluția problemei inițiale, motiv pentru care nu mai este nevoie de etapa de combinare.