Divide Et Impera

Previzualizare referat:

Extras din referat:

Divide et impera se bazeaza pe un principiu extrem de simplu: descompunem problema in doua sau mai multe subprobleme (mai usoare), care se rezolva, iar solutia pentru problema initiala se obtine combinand solutiile problemelor in care a fost descompusa. Se presupune ca fiecare din probleme in care a fost descompusa problema initiala, se poate descompune in alte subprobleme, la fel cum a fost descompusa problema initiala. Procedeul se reia pana cand (in urma descompunerilor repetate) se ajunge la probleme care admit rezolvare imediata.

Evident nu toate problemele pot fi rezolvate prin utilizarea acestei tehnici. Fara teama de a gresi, putem afirma ca numarul lor este relativ mic, tocmai datorita cerintei ca problema sa admita o descompunere repetata.

Divide et impera este o tehnica ce admite o implementare recursiva. Am invatat principiul general prin care se elaboreaza algoritmi recursivi: ce se intampla la un nivel, se intampla la un nivel, se intampla la orice nivel (avand grija sa asiguram conditiile de terminare). Tot asa, se elaboreaza un algoritm prin divide et imoera: la un anumit nivel avem doua posibilitati: am ajuns la o problema care admite o rezolvare imediata, caz in care se rezolva si se revine din apel (conditia de terminare); nu am ajuns in situatia de la punctul 1, caz in care sdescompunem problema in doua sau mai multe subprobleme, pentru fiecare din ele reapelam functia, combinam rezultatele si revnim din apel.

Se citeste un vector cu n componente, numere naturale. Se cere sa se tipareasca valoare maxima.

Trebuie tiparita valoarea maxima dintre numerele retinute in vector de la i la j (initial i= 1, j=n). Pentru aceasta procedam astfel: daca i=j, valoare maxima va fi v[i]; contrar vom imparti vectorul in doi vectori (primul vector va contine componentele de la i la (i+j) div 2, al doilea va contine componentele de la ( (i+j) div 2 +1 la j) , rezolvam subproblemele (aflam maximul pentru fiecare din ele) iar solutia problemei va fi data de valoarea maxima dintre rezultatele celor doua subprobleme.

#include int v[10], n; int max (int i, int j) { int a, b; if (i==j) return v[i]; else { a=max (i, (i+j) /2); b=max ( (i+j) /2+1, j); if (a>b) return a; else return b; } } main () { cout>n; for (int i=1; i ...

Descarcă referat

Pentru a descărca acest document,
trebuie să te autentifici in contul tău.

Structură de fișiere:
  • Divide Et Impera.doc
Alte informații:
Tipuri fișiere:
doc
Diacritice:
Da
Nota:
8/10 (2 voturi)
Nr fișiere:
1 fisier
Pagini (total):
6 pagini
Imagini extrase:
6 imagini
Nr cuvinte:
1 475 cuvinte
Nr caractere:
6 933 caractere
Marime:
13.37KB (arhivat)
Publicat de:
Anonymous A.
Nivel studiu:
Liceu
Tip document:
Referat
Materie:
Informatică
Tag-uri:
informatica, divide et impera
Predat:
la liceu
Sus!