220 likes | 401 Views
Backtracking-ul. pentru toţi. Ce ştiu despre aceasta metodă?. Backtracking-ul până acum. Tehnic ă utilizat ă în cazul în care este necesar ă generarea mai multor solu ţ ii, alc ă tuit ă dintr-o succesiune de subprograme menite s ă u ş ureze sarcina programatorului. Exemplu.
E N D
Backtracking-ul pentru toţi
Ce ştiu despre aceasta metodă? Backtracking-ul până acum Tehnică utilizată în cazul în care este necesară generarea mai multor soluţii, alcătuită dintr-o succesiune de subprograme menite să uşureze sarcina programatorului. Exemplu Ce este backtracking-ul ? Cătălina este o studentă în anul I la facultatea de informatică din Bucureşti. Ea trebuie să-şi aleagă 5 cursuri opţionale din cele 10 propuse, printre care unul trebuie să fie de programare vizuală şi unul de limba spaniolă. Ce ar putea să aleagă pentru a-şi completa programul de opţionale ?
Programare vizuală Inteligenţă artificială Criptografie si teoria codurilor Limba engleză Limba spaniola Ş.a.m.d. Algoritmi şi bioinformatică Baze de date şi tehnologii web Posibilitatea nr. 1 Posibilitatea nr. 2 Educaţie fizică Inginerie software Analiză matematică
Ce vreau săştiu! Cum functionează backtracking-ul? La ce tip de probleme îl pot aplica? Cum mă ajutăîn viaţa de zi cu zi? Cum ne ajută logica dobândită după lucrul cu backtraking-ul?
Un altfel de backtracking Atilla şi Theodoric I Era odată un rege nemilos şi însetat după putere pe nume Atilla. Ca urmare a multor cuceriri barbare şi violente el a fost închis într-o temniţă.
Tot atunci mai era şi un cal tânăr ce încă din copilărie auzise de marele rege Atilla şi îşi dorea să-l slujească graţie admiraţiei ce i-o purta. Credea că va învăţa multe lucruri de la un asemenea lider eminent care a reuşit să-şi mărească regatul fără probleme.
Pentru a-i putea fi de folos lui Atilla, calul s-a dus la un vrăjitor pentru a-i cere o putere supranaturală. Acesta i-a dat copite de foc cu care putea alerga ca vântul, dar în acelaşi timp ardea tot ceea ce călca astfel nemaiputând să se întoarcă pe acelaşi drum.
De cum l-a întâlnit, Atilla a acceptat calul ca noul său prieten credincios. Chiar avea nevoie de ajutor întrucât avea planuri mari pentru o regiune pe care dorea de mai mult timp să o cotropească. Văzând cât de naiv este fanul său imparicopitat, Atilla l-a tratat ca atare pentru a-l feri de adevăr.
Imediat ce a evadat, Atilla a pornit neîntârziat spre castelul lui Theodoric, regele ale cărui pământuri le vroia, lăsând în urma sa câmpii şi păduri arse de copitele înflăcărate ale calului său.
Când Atilla l-a prins pe Theodoric, calul şi-a dat seama cât de mare a fost greşeala pe care a făcut-o ajutându-l pe Atilla. Până atunci crezuse că acesta este un rege puternic, dar nu şi tiran.
Aşa că l-a înşfăcat pe Atilla şi l-a purtat până la închisoarea sa atât de repede că regele nici nu şi-a dat seama ce i se întâmplă.
O dată ajunşi şi Atilla închis, calul a rămas să-l păzească pe prizonier pentru a-şi ispăşi păcatele dar şi din motivul că arsese totul în jurul său şi nu mai putea pleca.
Atilla şi Theodoric I pe tabla de şah 1 2 3 4 5 6 7 8 6 5 4 3 2 1 3 3 1 2 3 4 5 6 7 8 4 5 5 7 7 8 6 6 5 4 Vectorul stivă
Theodoric! Pregăteşte-te! Vin după tine! Şi acum ... 3 1 2
Codulsursă #include<fstream.h> #include<stdlib.h> ifstream f (“atilla.in”); int dx[]={-2,-1,1,2,2,1,-1,-2}; int dy[]={1,2,2,1,-1,-2,-2,-1}; int t[100][100],st[100][2],i,j,n,k,xc,xr,yc,yr; Bibliotecile Fişierul Mişcările calului
Citirea matricei void main() {f>>n; for(i=1;i<=n;i++) for(j=1;j<=n;j++) f>>t[i][j]; f>>xc>>yc; f>>xr>>yr; f.close(); back(1,xc,yc); } Coordonate cal Coordonate rege Daţi click
Daţi click void back(int k, int lin, int col) {int i, l, c; if( solutie (k) ) tipar(k); else{ st[k][0]=lin; st[k][1]=col; for(i=0;i<=7;i++) {l=lin+dx[i]; c=col+dx[i]; if(l<=n&&l>=1&&c<=n&&c>=1&&t[l][c]==0) {t[l][c]=1; back(k+1,l,c) t[l][c]=0; }}} } Se pun în stivă coordonatele calului Se execută mişcarea calului
int solutie(int k) { int ok=0; for(j=1;j<k;j++) if(st[j][0]==xr&&st[j][1]==yr) ok=1; if(k>1&&st[k][0]==xc&&st[k][1]==yc&&ok==1) return 1; else return 0; } Verifica dacăAtilla(calul) a ajuns la rege!
Ce am invatat!!! Să gândesc logic şi să rezolv problemele pe rând! Să lucrez mai uşor cu backtracking-ul! Când anume trebuie să folosesc backtracking-ul!
Bibliografie! CAST: Grozavu Elena as The Horse Murariu Ana Maria as King Theodoric I Stoica Maria as Atilla the hun Pozele – internet Algoritmul – “Manual de Informatică Profil real clasa a XI-a”, Vlad Huţanu şi Tudor Sorin, editura L&S Soft, 2006 MULTUMIM PENTRU ATENTIA ACORDATA!!