Backtracking-ul

20

description

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. - PowerPoint PPT Presentation

Transcript of Backtracking-ul

Page 1: Backtracking-ul
Page 2: Backtracking-ul

Ce ştiu despre aceasta metodă?

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.

Ce este backtracking-ul ?Exemplu

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 ?

Page 3: Backtracking-ul

Programare vizuală

Inteligenţă artificială

Limba spaniola

Limba engleză

Educaţie fizică

Analiză matematică

Inginerie software

Criptografie si teoria codurilor

Baze de date şi tehnologii web

Algoritmi şi bioinformatică

Posibilitatea nr. 1Posibilitatea nr. 2

Page 4: Backtracking-ul

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?

Page 5: Backtracking-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ţă.

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ţă.

Page 6: Backtracking-ul

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.

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.

Page 7: Backtracking-ul

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.

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.

Page 8: Backtracking-ul

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.

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.

Page 9: Backtracking-ul

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.

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.

Page 10: Backtracking-ul

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.

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.

Page 11: Backtracking-ul

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ă.

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ă.

Page 12: Backtracking-ul

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.

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.

Page 13: Backtracking-ul

1

2

3

4

5

6

7

8

1 2 3 4 5 6 7 8

5 4

6 6

7 8

5 7

4 5

3 3

Vectorul stivă

6

5

4

3

2

1

Page 14: Backtracking-ul

Theodoric! Pregăteşte-te! Vin după tine!

Page 15: Backtracking-ul

Codul sursă#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

Page 16: Backtracking-ul

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); }

Citirea matricei

Coordonate cal

Coordonate rege

Daţi clickDaţi click

Page 17: Backtracking-ul

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

Daţi clickDaţi click

Page 18: Backtracking-ul

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!

Page 19: Backtracking-ul

Ce am invatat!!!

Să lucrez mai uşor cu backtracking-ul!

Când anume trebuie să folosesc backtracking-ul!

Să gândesc logic şi să rezolv problemele pe rând!

Page 20: Backtracking-ul

Bibliografie!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!!

CAST:

Grozavu Elena as The Horse

Murariu Ana Maria as King Theodoric I

Stoica Maria as Atilla the hun

CAST:

Grozavu Elena as The Horse

Murariu Ana Maria as King Theodoric I

Stoica Maria as Atilla the hun