Probleme la metoda backtracking

Slides:



Advertisements
Similar presentations
Prof.Briciu Daniela Sc.cu cls. I-VIII Luna de Sus
Advertisements

Criterii de divizibilitate
În general exist ă 2 forme mari de conservare : “in situ” şi “ex situ” 1. Conservarea “ in situ” Aceast ă metod ă de conservare const ă în.
De ce campaniile de scurt ă durat ă de SEO și PPC eșueaz ă ? Ionut & imunteanu.com.
-Modelul Entitate-Legatura (ER)-
Subinterogări multiple
Oracle Academy Lead Adjunct
Prof. Elena Răducanu, Colegiul Naţional Bănăţean,Timişoara
CUPRINS Tastatura Imprimanta Scanner Bibliografie Recapitulare.
Lista probleme rezolvate informatica
Proiect informatica Teza pe semestrul I.
Mobile Apps Economy ZF Mobilio - Bucuresti, 24 aprilie 2012
SOFTWARE Tipuri de software.
Metoda Backtracking Metoda Implementarea
A.6. Placa de achiziție Aceasta acționează ca interfață între computer și lumea de afară. Prima sa funcție este de a digitiza semnalele analogice de intrare.
Python re.findall('[a-z]+', text.lower())
Stiva este acea formă de organizare a datelor (structură de date) cu proprietatea că operaţiile de introducere şi scoatere a datelor se fac în vârful ei.
Paxos Made Simple Autor: Puşcaş Radu George
Aparatura auxiliară Generalităţi, clasificare
Popiţiu Bogdan Epm An III
REZOLVAREA RELAŢIILOR MANY TO MANY
METODA BACKTRACKING Examenul de bacalaureat 2012
ASIRA COMMUNICATION.
Generarea modelelor fractale
CONVERSII INTRE SISTEME DE NUMERATIE
-Limbajul SQL-Interogări complexe. Subinterogări-
Problema rucsacului lacom
MANAGEMENT EDUCAŢIONAL PERFORMANT Limbajul de programare Borland Pacal
Tipuri structurate Tipul tablou
SUBNETAREA.
Curs 2 1 Sistem de operare-concepte: 2 Apeluri de sistem
Web Form BuilDer Coffee Cup.
Modificarea structurii unei tabele
Curs 6: Introducere în programarea SAS
DETERMINAREA ALCALINITATII SI PH-UL APELOR NATURALE
Algoritm de crawling optimizat pe similaritate în documente HTML
Formatarea paragrafului
Funcții C/C++ continuare
Impulsul mecanic Impulsul mecanic. Teorema conservarii impulsului mecanic.
Citește-mă Acest slide are rolul de a-ți explica modul în care să folosești umătoarele slide-uri. Șterge-l din prezentarea finală. În următoarele slide-uri.
Tehnoredactarea computerizată
SOAP Simple Object Access Protocol
ERASMUS CLUJ-NAPOCA 25 martie 2014.
PRELUCRARI SPECIFICE TABLOURILOR BIDIMENSIONALE
Eclipsele de soare si de luna
Forms (Formulare).
Scrierea ecuaţiilor în Microsoft Word
Universitatea POLITEHNICA din București - Curs de 16 ore – Curs 11
William Stallings Data and Computer Communications
Îmbunătăţirea serviciilor publice prin intermediul Chartelor de Servicii: Elaborarea şi implementarea Planurilor de Acţiune pentru Îmbunătăţirea Serviciilor.
A great way to create a channel of communication
Functia de documentare
Căutarea şi regăsirea informaţiei
Administrarea reţelelor de calculatoare
CONFIGURATII ELECTRONICE CLASA a IX-a.
Cum să particularizați Microsoft SharePoint Site web online
ARBORI BINARI DE CĂUTARE
Utilizarea Internet in România
Circuite Combinaţionale Logice
Unitatea centrală de prelucrare
Aplicaţii specializate pentru realizarea unei prezentări – PowerPoint
Refracţia luminii.
Configurarea metodelor de management al calităţii în sectorul public
kbkjlj/m/lkiubljj'pl;
- calitatea serviciului de internet -
Comisia blocajelor și neputința legiuitorului
Schimbă vieți, deschide minți
Funcții NULL.
ALGORITMI ŞI SCHEME LOGICE
Adaptari in Oceanul Arctic Cucos Valentina. Ursul polar Ursul polar (Ursus maritimus) este un urs alb care trăiete în zonele nordice îngheate ale Oceanului.
Presentation transcript:

Probleme la metoda backtracking

1.Generarea permutărilor Se citeşte un număr natural n. Să se genereze permutările de n elemente ale mulţimii {1,2,…,n}. Simulaţi executarea algoritmului pentru n=3. Type vector = array[1..100] of integer; Var x:vector; n: integer; Procedure solutie; Var i: integer; Begin Write (‘(‘); For i:= 1 to do write (x[i],’,’); Writeln (x[n],’)’) End; Function continuare (k:integer):Boolean; Var i:integer; ok:Boolean; Ok:= true ; If k = 1 then continuare:= true Else if i:= 1 to k-1 do if x[k]=x[i] then ok:= false Continuare:= ok;  

Procedure back (K:integer); Var i:integer; Begin If (k=n+1) then solutie Else For i:= 1 to n do Begin x[k]:=I ; If continuare (k) then back (k+1); End; Write (‘n=’); readln (n); Back(1); Readln; End. Pt n=3 se genereaza: (1,2,3), (1,3,2), (2,1,3), (2,3,1), (3,1,2), (3,2,1),

2.Generarea permutărilor unui vector Se citesc cele n elemente ale unui vector a de numere întregi. Să se genereze permutările de n elemente ale mulţimii {a1,a2,…,an}. Simulaţi executarea algoritmului pentru n=3. Type vector= array[1..20] of integer Var a,x: vector; Procedure citire ( var n:integer; var a:vector); Var i:integer; Begin Write (‘n=’); readln (n); For i:=1 to n do Write (‘a[‘,i,’]=’); Readln (a[i]) End; Procedure solutie; Write (a[x[i]],’ ‘);Writeln;

Function continuare ( k:integer):Boolean; Var i:integer; Begin Continuare:= true; For i:= 1 to k-1 do if x[i]=x[k] then continuare := false; End; Procedure back (k:integer); Var i: integer; If (k=n+1) then solutie Else for i:=1 to n do X[k]:= i ; If continuare (k) then back ( k+1); Citire (n,a); Back(1); End.

3.Generarea aranjamentelor Se citesc două numere naturale n şi p. Să se genereze toate aranjamentele de n elemente luate câte p ale mulţimii {1,2,…,n}. Simulaţi executarea algoritmului pentru n=4 şi p=2.   Type vector= array [1..20] of integer; Var x:vector; N,p: integer; Procedure solutie; Var i:integer; Begin For i:= 1 to p do Write (x[i],’ ‘); End; Function continuare (k:integer):Boolean; Continuare:= true; For I:= 1 to k-1 do if x[i]=x[k] then continuare:= false;

Procedure back (K:integer); Var i: integer; Begin If ( k=p+1) then solutie Else for I:=1 to n do W[k]:=I; If continuare (k) then back(k+1); End; Write ( ‘n=’); readln(n); Write ( ‘p=’); readln(p); Back(1); End. Pentru n=4 si p=2 se genereaza: (1,2),(1,3),(1,4), (2,1),(2,3),(2,4), (3,1),(3,2),(3,4), (4,1),(4,2),(4,3)

4.Generarea combinărilor Se citesc două numere naturale n şi p. Să se genereze toate combinările de n elemente luate câte p ale mulţimii {1,2,…,n}. Simulaţi executarea algoritmului pentru n=4 şi p=2.   Type vector = array [0..20] of integer; Var x:vector; N,p : integer; Procedure solutie; Var i: integer; Begin For i:=1 to p do write (x[i], ‘ ‘); Writeln; End; Procedure back ( k: integer); Var I : integer; If (k=p+1) then solutie Else for i:= x[k-1]+1 to n do

Begin X[k]:=I; Back (k+1); End; Write (‘n=’); readln (n); Write (‘p=’); readln (p); Back(1); End.   Pentru n=4 si p=2 se genereaza: (1,2) (1,3) (1,4) (2,3) (2,4) (3,4)

5.Generarea partiţiilor unui număr natural Se citeşte numărul natural n. Să se genereze toate modurile de descompunere a lui n ca sumă de numere naturale. Simulaţi executarea algoritmului pentru n=5.   Type vector = array [1..20] of integer Var x: vector; N,s: integer; Procedure solutie (k:integer); Var i: integer; Begin For i:= 1 to k do write (x[i], ‘ ‘); Writeln; End; Function continuare ( k: integer): Boolean; Continuare:= ( x[k]+s)< n;  

Procedure back (k:integer); Begin If (s=n) then solutie (k-1) Else X[k]:=0; While continuare(k) do X[k]:= x[k]+1; S:=s+x[k]; Back k(k+1); S:=s-x[k]; End; Write(‘n=’); Readln(n); Back(1); Readln; End. Pentru n=5 Raspuns: 1+1+1+1+1; 1+1+1+2; 1+1+2+1; 1+2+1+1; 1+1+3; 1+3+1; 2+1+1+1; 2+1+2; 2+2+1; 3+1+1; 3+2; 4+1; 5+0.

6.Generarea submulţimilor Se citeşte numărul natural n. Să se genereze toate submulţimile mulţimii {1,2,…,n}. Simulaţi executarea algoritmului pentru n=3.   Type stiva= array[1..20] of integer; Var x: stiva N,k: integer; Procedure solutie ; Var I : integer; Begin For i:= 1 to n do write (x[i], ‘ ‘);Writeln; End; Function continuare (k:integer):Boolean; Continuare:= true;  

Procedure backtrack; Bagin K:=1; x[k]:= -1; While (k>0) do Begin while (x[k]<1) do X[k]:= x[k]+1; If continuare (k) then if (k=n) then solutie Else begin K:=k+1; X[k]:= -1; End; K:=k-1; Write (‘n=’); readln(n); Backtrack; End. Pentru n=3 si multimea {1,2,3} Submultimile generate sunt: {Ø},{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}.

7.Problema colorării hărţilor Fiind data o hartă cu n ţări, se cere toate soluţiile de colorare a hărţii, utilizând cel mult 4 culori, astfel încât două ţări cu frontieră comună să fie colorate diferit.   Const c:array[1..4] of char= (‘G’,’R’,’A’,’V’); Type vector= array[1..50] of integer; Matrice= array[1..50,1..50] of integer; Var A: matrice; X:vector; N:integer; Procedure citire (var n:integer; var A:matrice); Var I,j:integer; Begin Write (‘n=’); readln(n); For i:=1 to n do For j:=1 to n do Begin write (‘A[‘,I,’,’,j,’]=’); Readln ( A[I,j]) End; Procedure solutie; Var i: integer;  

For i:=1 to n do Writeln ( ‘tara’,I,’:’, C[x[i]]); End; Function continuare (k:integer):Boolean; Var i: integer; Begin Continuare := true ; For i:= 1 to k-1 do If ( A[I,k]=1) and ( x[i]=x[k]) then Continuare :=false Procedure back(k:integer); Var i:integer; If(k=n+1) then solutie Else For i:= 1 to 4 do Begin x[k]:= i ; If continuare (k) then Back(k+1) Citire (n,A); Back(1); End.  

8.Săritura calului Se consideră o tablă de şah nxn şi un cal plasat în colţul din stânga, sus. Se cere să se afişeze un drum al calului pe table de şah, astfel încât să treacă o singură dată prin fiecare pătrat al tablei.   Type vector= array [1..400] of integer; Matrice = array [1..20,1..20] of integer; Const dx : array [1..8] of integer = (-2,-1,1,2,2,1,-1,-2); Dy : array[1..8] of integer = (-1,-2,-2,-1,1,2,2,1); Var A: matrice; X,y:vector; N: integer; Procedure solutie; Var I,j:integer; Begin writeln; For i:= 1 to n do For j:= 1 to n do Begin Write ( A[I,j], ’ ‘); Writeln; End;  

Function continuare ( k:integer):Boolean; Var ok:Boolean; Begin Ok:= true; If (x[k]<1) or (k[k]>n) or (y[k]<1) or (y[k]>n) Or ( A[x[k],y[k]]>0) Then ok:false; Continuare :=ok; End; Procedure back(k:integer); Var I:integer; If (k= nxn+1) then solutie Else begin For i:=1 to 8 do

Begin X[k]:= x[k-1]+ dx[i]; Y[k]:=y[k-1]+dy[i]; A[x[k],y[k]]:=k; If continuare (k) then Back(k+1); A[x[k],y[k]]:=0; End; Write ( ‘n=’); readln(n); X[1]:=1 , y[1]:= 1, A[1,1]:=1; Back(2); Readln; End.

9.Problema reginelor Să se determine toate posibilităţile de aranjare a n regine pe o tablă de şah de dimensiune nxn astfel încât reginele să nu se atace reciproc. Regina atacă piesele aflate pe aceeaşi linie, coloană sau diagonală.   Type vector= array [1..30] of integer; Var x: vector; N: integer; Procedure solutie; Var i,j: integer; Begin Writeln; For i:= 1 to n do For j:= 1 to n do If x[i]=j then write (‘*’) Else write (‘ ‘); End; Function continuare (k:integer):Boolean; Var i:integer; ok:Boolean;  

ok:=true; For i:= 1 to k-1 do If (x[k]=x[i]) or (abs (x[k]-x[i])=(k-i)) then ok := false Continuare :=ok; End; Procedure back(k:integer); Var i:integer; Begin If ( k=n+1)then solutie Else For i:= 1 to n do X[k]:= i If continuare (k) then Back(k+1); Write (‘n=’); readln(n); Back (1); Readln; End.  

10.Problema turelor Să se determine toate posibilităţile de aranjare a n ture pe o tablă de şah de dimensiune nxn astfel încât turele să nu se atace reciproc. Tura atacă piesele aflate pe aceeaşi linie sau coloană.   Type vector= array [1..30] of integer; Var x: vector; N: integer; Procedure solutie ; Var I,j: integer; Begin For i:= 1 to n do For j:=1 to n do If x[i]=j then write (‘*’) Else write (‘ ‘); Writeln; End; Function continuare (k:integer):Boolean; Var i:integer; ok:Boolean; Ok:= true ;  

If k = 1 then continuare:= true Else if i:= 1 to k-1 do If x[k]=x[i] then ok:= false Continuare:= ok; End; Procedure back (K:integer); Var i:integer; Begin If (k=n+1) then solutie Else For i:= 1 to n do Begin x[k]:=I ; If continuare (k) then back (k+1); Write (‘n=’); readln (n); Back(1); Readln; End.  

Probleme de tip grila

1. Folosind modelul combinărilor se generează numerele naturale cu câte trei cifre distincte din mulţimea {1,2,3,7}, numere cu cifrele în ordine strict crescătoare, obţinându-se, în ordine: 123, 127, 137, 237. Dacă se utilizează exact aceeaşi metodă pentru a genera numerele naturale cu patru cifre distincte din mulţimea {1,2,3,4,5,6,7,8}, câte dintre numerele generate au prima cifră 2 şi ultima cifră 7? 2347 2357 2367 2457 2467 2567 6 numere 2. Folosind tehnica bactracking un elev a scris un program care generează toate numerele de câte n cifre (0<n≤9), cifrele fiind în ordine strict crescătoare. Dacă n este egal cu 5, scrieți în ordine crescătoare toate numerele având cifra unităților 6, care vor fi generate de program. 12346 , 12356 , 12456 , 13456 , 23456  

3. Utilizând metoda backtracking sunt generate numerele de 3 cifre care au cifrele în ordine crescătoare, iar cifrele aflate pe poziţii consecutive sunt de paritate diferită. Ştiind că primele cinci soluţii generate sunt, în această ordine: 123, 125, 127, 129, 145, care este cel de al 8-lea număr generat?   123 125 127 129 145 147 149 167   4. Utilizând metoda backtracking sunt generate în ordine crescătoare toate numerele de 3 cifre, astfel încât cifrele sunt în ordine crescătoare, iar cifrele aflate pe poziţii consecutive sunt de paritate diferită. Ştiind că primele trei soluţii generate sunt, în această ordine, 123, 125, 127, scrieţi toate numerele generate care au suma cifrelor egală cu 12. 129 147 345  

5. Utilizând metoda backtracking se generează permutările cuvântului info. Dacă primele trei soluţii generate sunt: fino, fion, fnio care este cea de-a cincea soluţie? Info fino fion fnio fnoi foin 1234 3124 3142 3214 3241 3412 6. Câte numere cu exact două cifre pot fi construite folosind doar cifre pare distincte? 24 26 28 42 46 48 62 64 68 82 84 86 12 numere   7. Un algoritm generează, în ordine lexicografică, toate şirurile alcătuite din câte n cifre binare (0 şi 1). Ştiind că pentru n=5, primele 4 soluţii generate sunt 00000, 00001, 00010, 00011, precizaţi care sunt ultimele 3 soluţii generate, în ordinea obţinerii lor. 11101 11110 11111  

8. Un algoritm generează în ordine descrescătoare, toate numerele de n cifre (n<9), cu cifrele în ordine strict crescătoare, care nu au două cifre pare alăturate. Dacă pentru n=5, primele 5 soluţii generate sunt 56789, 45789, 45679, 45678, 36789, precizaţi care sunt următoarele 3 soluţii generate, în ordinea obţinerii lor. 35679 35678 34789 9 Un program citeşte o valoare naturală nenulă impară pentru n şi apoi generează şi afişează în ordine crescătoare lexicografic toate combinaţiile formate din n cifre care îndeplinesc următoarele proprietăţi: - încep şi se termină cu 0; modulul diferenţei între oricare două cifre alăturate dintr-o combinaţie este 1. Astfel, pentru n=5, combinaţiile afişate sunt, în ordine, următoarele: 01010, 01210. Dacă se rulează acest program şi se citeşte pentru n valoarea 7, imediat după combinaţia 0101210 va fi afişată combinaţia: a. 0121210 b. 0123210 c. 0111210 d. 0121010

10. Pentru generarea în ordine crescătoare a numerelor cu n cifre formate cu elementele mulţimii {0,2,8} se utilizează un algoritm backtracking care, pentru n=2, generează, în ordine, numerele 20,22,28,80,82,88. Dacă n=4 şi se utilizează acelaşi algoritm, precizaţi câte numere generate sunt divizibile cu 100? 2000 2200 8000 8800 2800 8200 6 numere 11. Având la dispoziţie cifrele 0, 1 şi 2 putem genera, în ordine crescătoare, numere care au suma cifrelor egală cu 2 astfel încât primele 6 numere generate sunt, în această ordine: 2, 11, 20, 101, 110, 200. Folosind acelaşi algoritm se generează numere cu cifrele 0, 1, 2 şi 3 care au suma cifrelor egală cu 4. Care va fi al 7-lea număr din această generare ? 13 22 31 103 112 121 130

12. Generarea tuturor cuvintelor de trei litere mici, nu neapărat distincte, ale alfabetului englez, se poate realiza cu ajutorul unui algoritm echivalent cu cel de generare a: produsului cartezian b. Combinărilor c. aranjamentelor d. Permutărilor 13. Folosind un algoritm de generare putem obţine numere naturale de k cifre care au suma cifrelor egală cu un număr natural s. Astfel, pentru valorile k=2 şi s=6 se generează, în ordine, numerele: 15, 24, 33, 42, 51, 60. Care va fi al treilea număr generat pentru k=4 şi s=5? 1004 1013 1022 14. Utilizăm metoda backtracking pentru generarea tuturor modalităţilor de a scrie numărul 6 ca sumă a cel puţin două numere naturale nenule. Termenii fiecărei sume sunt în ordine crescătoare. Soluţiile se generează în ordinea: 1+1+1+1+1+1, 1+1+1+1+2, 1+1+1+3, 1+1+4, 1+5, 2+2+2, 2+4 şi 3+3. Se aplică exact aceeaşi metodă pentru scrierea lui 9. Câte soluţii de forma 2+... vor fi generate? 2+2+2+3 2+2+5 2+7 2+3+4 4 solutii  

15. Completarea unui bilet de LOTO presupune colorarea a 6 numere dintre cele 49, înscrise pe bilet. O situaţie statistică pe o anumită perioadă de timp arată că cele mai frecvente numere care au fost extrase la LOTO sunt: 2, 20, 18, 38, 36, 42, 46, 48. Câte bilete de 6 numere se pot completa folosind doar aceste valori, ştiind că numărul 42 va fi colorat pe fiecare bilet? a. 21 b. 6! c. 42 d. 56   Combinari de 7 elemente luate cate 5 = 5040/ 240 = 21 16. În câte dintre permutările elementelor mulţimii {‘I’,’N’,’F’,’O’} vocalele apar pe poziţii consecutive? I O N F F I O N I O F N F O I N O I N F N F I O O I F N F N I O N O I F N F O I N I O F F N O I 12 permutari

17. Un algoritm generează în ordine crescătoare toate numerele de n cifre, folosind doar cifrele 3, 5 şi 7. Dacă pentru n=5, primele 5 soluţii generate sunt 33333, 33335, 33337, 33353, 33355, precizaţi care sunt ultimele 3 soluţii generate, în ordinea generării. 77773 77775 77777 18. Un algoritm generează în ordine crescătoare, toate numerele de n cifre (n<9), cu cifre distincte, care nu au două cifre pare alăturate. Dacă pentru n=5, primele 5 soluţii generate sunt 10325, 10327, 10329, 10345, 10347, precizaţi care sunt următoarele 4 soluţii generate, în ordinea obţinerii lor. 10349 10365 10367 10369

19. Utilizăm metoda backtracking pentru generarea tuturor modalităţilor de a scrie numărul 9 ca sumă a cel puţin două numere naturale nenule distincte. Termenii fiecărei sume sunt în ordine strict crescătoare. Soluţiile se generează în ordinea: 1+2+6, 1+3+5, 1+8, 2+3+4, 2+7, 3+6 şi 4+5. Se aplică exact aceeaşi metodă pentru scrierea lui 12. Scrieţi, în ordinea generării, toate soluţiile de forma 2+...   2+3+7 2+4+6 20. Generând şirurile de maximum 3 caractere distincte din mulţimea {A,B,C,D,E}, ordonate lexicografic, obţinem succesiv: A, AB, ABC, ABD,…. Ce şir va fi generat imediat după BAE? Notam literele cu cifre : A B C D E astfel se genereaza: 1 2 3 4 5 1 12 123 124   Dupa B A E se genereaza B C 2 1 5 2 3

Realizator : Madalina Borzasi Cls. a XI-a B Prof. Tomsa Gelu