140 likes | 399 Views
Grup Scolar Indrustrial Sarmasag Disciplina Informatica Clasa a XI-a B Grupa I :Csoka Eliza,Erdei Erzsebet,Forgacs Zsolt,Kis Lorant,Pusok Jozsef. Metoda Divide et impera Profesor coordonator: Boti Sandor. TABLA DE MATERII NOTIUNI INTRODUCTIVE APLICATII DIVIDE ET IMPERA:.
E N D
Grup Scolar Indrustrial SarmasagDisciplina InformaticaClasa a XI-a BGrupa I:Csoka Eliza,Erdei Erzsebet,Forgacs Zsolt,Kis Lorant,Pusok Jozsef. Metoda Divide et impera Profesor coordonator: Boti Sandor
TABLA DE MATERII NOTIUNI INTRODUCTIVE APLICATII DIVIDE ET IMPERA: • “Turnurilor din Hanoi”; • Sortare rapida ; • Sortare prin interclasare; • Sortare prin insertie binara;
Divide et impera: • Tehnicaasta a fostnumita “divide et impera“, sau “dezbinasistapaneste” si de aceastatehnicadepindea in mare parte linisteaimperiului roman. Orice s-arfiimpus, oricehotararearfiluatimparatul, nu era nimeni care sai se opunapentru ca grupurileeraumicisipoliticaimpusa era de asanaturaincatgrupurile nu puteaugasi un numitorcomunpentru a se adunasi a tine pieptdictaturii.
Nu, nu discut despre programare sau despre algoritmi. Nu ma refer la “divide et impera” tehnica de programare ci la “divide et impera” ca politica aplicata de romani asupra provinciilor ocupate. • Pentru cei care au chiulit grosolan de la orele de istorie mentionez ca imperiul roman avea prostul obicei de a cuceri orice imperiu/regat/trib pe care i se punea pata. Pentru ca provinciile sa fie tinute sub control au venit cu o tactica draguta si anume de a le separa si izola cat mai bine, astfel oamenii nefiind capabili sa se uneasca in grupuri pentru a face fata cuceritorilor.
Acum, la aproape 1500 de ani de la caderea imperiului roman ne place sa credem ca suntem mai intelepti, ca nu suntem ca prostimea fara scoala care putea fi manipulata de imparat, ca avem un cap care il folosim si ca suntem condusi asa cum vrem noi sau ca cel putin avem un cuvant de spus in ceea ce priveste conducerea tarii.
PROBLEMA TURNURILOR DIN HANOI Prezentarea algoritmului rezolvarii Fie trei tije verticale notate A,B,C .Pe tija A se gasesc asezate n discuri de diametre diferite ,in ordinea crescatoare a diametrelor,privind de sus in jos . Initial ,tijele B si C sunt goale .Sa se afiseze toate mutarile prin care discurile de pe tija A se muta pe tija B , in aceeasi ordine ,folosind ca tija de manevra C si resspectand urmatoarele reguli
la fiecare pas se muta un singur disc; un disc se poate aseza numai peste un disc cu diametrul mai mare . Rezolvarea acestei probleme se bazeaza pe urmatoarele considerente logice : -daca n=1 ,atunci mutarea este immediata AB(mut discul de pe A pe B); daca n=2,atunci sirul mutarilor este : AC,AB,CB; daca n>2 procedam astfel :
-mut (n-1)discuri AC; • -mut un disc AB ; • -mut cele (n-1)discuri CB. • Observam ca problema initiala se descompune in trei subprobleme mai simple ,similare problemei initiale: mut (n-1)discuri AC ,mut ultimul disc pe B ,mut cele (n-1)discuri C-->B.Dimensiunile acestor subprobleme sunt : n-1,1,n-1.
program turnurile _hanoi; var n:byte; procedurehanoi(n:byte;a,b,c:char); begin if n=1 thenwriteln(a,’’,b) else begin hanoi(n-1,a,c,b); 18518g624s writeln(a,’’,b); 18518g624s hanoi(n-1,c,b,a); 18518g624s end; end; begin write(‘nr discuripetija A =’);readln(n); writeln(‘mutarilesunturmatoarele :’); hanoi(n,’A’,’B’,’C’); readln;readln; end.
Un Schema generală a algoritmului bazat pe metoda desparte şi stăpîneşte procedureDesparteSiStapineste(i,j : integer; var x : tip); varm : integer; x1, x2 : tip; begin ifSolutieDirecta(i, j)thenPrelucrare(i, j, x) else begin m:=(j-i)div2; DesparteSiStapineste(i, i+m, x1); DesparteSiStapineste(i+m+1, j, x2); Combina(x1, x2, x); end; end;
ProceduraPrelucrare procedurePrelucrare(i, j : integer; Varx:real { returneaza elementul maximal din A[i],A[j]} begin x:=A[i]; ifA[i]<A[j] then x:=A[j]; end; { Prelucrare }
FuncţiaSolutieDirecta functionSolutieDirecta(a, b, c, d : real; vari : integer) : boolean; { Returneaza true daca placa curenta nu are gauri.} { In caz contrar returneaza false si numarul uneia din gauri } label1; var j : integer; begin SolutieDirecta:=true; forj:=1tondo if (X[j]>a)and(X[j]<c)and (Y[j]>b)and(Y[j]<d)and begin SolutieDirecta:=false; i:=j; goto 1; end; 1:end; { SolutieDirecta }