Probleme de recursivitate

Trimis la data: 2003-12-10 Materia: Informatica Nivel: Liceu Pagini: 26 Nota: / 10 Downloads: 3736
Autor: Eugen voicu Dimensiune: 36kb Voturi: Tipul fisierelor: doc Acorda si tu o nota acestui referat: 1 2 3 4 5 6 7 8 9 10
vezi mai multe detalii vezi mai putine detalii
Raporteaza o eroare
La intalnirea unei astfel de probleme, daca nu cunoastem aceasta tehnica,suntem tentati sa generam toate elementele produsului cartezian A1A2A3…An si fiecare element sa fie testat daca este solutie.Rezolvand problema in acest mod,timpul de executie este atat de mare ,incat poate fi considerat infinit,neavand nici o valoare practica.

De exemplu,daca dorim sa generam toate permutarile unei multimi finite A,nu are rost sa generam produsul cartezian A1A2A3…An pentru ca apoi,sa testam,pentru fiecare element al acestuia,daca este sau nu permutare .

Tehnica Backtracking are la baza un principiu extrem de simplu:
•se construieste solutia pas cu pas:x1x2x3…xn;
•daca se constata ca,pentru o valoare aleasa,nu avem cum sa ajungem la solutie ,se renunta la acea valoare si se reia cautarea din punctul in care am ramas

Concret:
•se alege primul element x1 ce apartine lui A1
•presupunand generate elementele x1,x2,x3…xk apartinand multimilor A1 A 2A3…Ak+1 se alege(daca exista) x,primul element disponibil din multimea Ak+1,apar astfel 2 posibilitati:

1)nu s-a gasit un astfel de element,caz in care se reia cautarea considerand generate elementele x1,x2,x3…xk+1 iar aceasta se reia de la urmatorul element al multimii Ak ramas netestat
2)a fost gasit,caz in care se testeaza daca acesta indeplineste anumite coditii de continuare ,aparand astfel alte doua posibilitati:
2.1) le indeplineste,caz in care se testeaza daca s-a ajuns la solutie si apar din nou doua posibilitati

2.1.1) s-a ajuns la solutie ,se tipareste solutia si se reia algoritmul considerand generate elementele x1,x2,…xk(se cauta in continuare un alt element al multimii Ak+1 ramas netestat)
2.1.2) nu s-a ajuns la solutie ,caz in care se reia algoritmul considerand generate elementele x1,x2,x3…xk+1 si se cauta un prim element xk+2  Ak+2

2.2) nu le indeplineste caz in care se reia algoritmul considerand generate elementele x1x2 x3…xk iar elementul xk+1 se cauta intre elementele multimii Ak+1 ramase netestate.Algoritmul se termina atunci cand nu mai exista nici un element
x1A1 netestat.

Observatie: tehnica Backtracking are ca rezultat obtinerea tuturor solutiilor problemei.In cazul in care se cere o singura solutie se poate forta oprirea atunci cand a fost gasita.

Pentru usurarea intelegerii metodei,vom prezenta o rutina unica aplicabila oricarei probleme,rutina care utilizeaza notiunea de stiva.Rutina va apela proceduri si functii care au totdeauna acelasi nume si parametri si care din punct de vedere al metodei realizeaza acelasi lucru.

Sarcina rezolvitorului este de a scrie explicit pentru fiecare problema in parte procedurile si functiile apelate de Backtraking.Evident,o astfel de abordare conduce la programe lungi.Nimeni nu ne opreste,ca dupa intelegerea metodei sa scriem programe scurte specifice fiecarei probleme in parte(de exemplu scurtam substantial textul doar daca renuntam la utilizarea procedurilor si functiilor)

Nota explicativa
Referatele si lucrarile oferite de Referate.ro au scop educativ si orientativ pentru cercetare academica.

Iti recomandam ca referatele pe care le downloadezi de pe site sa le utilizezi doar ca sursa de inspiratie sau ca resurse educationale pentru conceperea unui referat nou, propriu si original.

Referat.ro te invata cum sa faci o lucrare de nota 10!
Linkuri utile
Programeaza-te online la salonul favorit Descarca gratuit aplicatiile pentru iOS si Android Filmulete haioase Filme, poante si cele mai tari faze Jocuri Cele mai tari jocuri de pe net Referate scoala Resurse, lucrari, referate materiale pentru lucrari de nota 10
Toate imaginile, textele sau alte materiale prezentate pe site sunt proprietatea referat.ro fiind interzisa reproducerea integrala sau partiala a continutului acestui site pe alte siteuri sau in orice alta forma fara acordul scris al referat.ro. Va rugam sa consultati Termenii si conditiile de utilizare a site-ului. Informati-va despre Politica de confidentialitate. Daca aveti intrebari sau sugestii care pot ajuta la dezvoltarea site-ului va rugam sa ne scrieti la adresa webmaster@referat.ro.
Confidentialitatea ta este importanta pentru noi

Referat.ro utilizeaza fisiere de tip cookie pentru a personaliza si imbunatati experienta ta pe Website-ul nostru. Te informam ca ne-am actualizat politica de confidentialitate pentru a integra cele mai recente modificari privind protectia persoanelor fizice in ceea ce priveste prelucrarea datelor cu caracter personal. Inainte de a continua navigarea pe Website-ul nostru te rugam sa aloci timpul necesar pentru a citi si intelege continutul Politicii de Cookie. Prin continuarea navigarii pe Website-ul nostru confirmi acceptarea utilizarii fisierelor de tip cookie conform Politicii de Cookie. Nu uita totusi ca poti modifica in orice moment setarile acestor fisiere cookie urmarind instructiunile din Politica de Cookie.


Politica de Cookie
Am inteles