Metoda de programare BACKTRACKING

Similar documents
Metoda BACKTRACKING. prof. Jiduc Gabriel

Subiecte Clasa a VI-a

Reflexia şi refracţia luminii. Aplicaţii. Valerica Baban

Metrici LPR interfatare cu Barix Barionet 50 -

Titlul lucrării propuse pentru participarea la concursul pe tema securității informatice

Procesarea Imaginilor

Olimpiad«Estonia, 2003

D în această ordine a.î. AB 4 cm, AC 10 cm, BD 15cm

REVISTA NAŢIONALĂ DE INFORMATICĂ APLICATĂ INFO-PRACTIC

GHID DE TERMENI MEDIA

Structura și Organizarea Calculatoarelor. Titular: BĂRBULESCU Lucian-Florentin

Auditul financiar la IMM-uri: de la limitare la oportunitate

ARBORI AVL. (denumiti dupa Adelson-Velskii si Landis, 1962)

Metoda Backtracking. Metoda backtracking se aplică algoritmilor pentru rezolvarea următoarelor tipuri de

Semnale şi sisteme. Facultatea de Electronică şi Telecomunicaţii Departamentul de Comunicaţii (TC)

Aspecte controversate în Procedura Insolvenţei şi posibile soluţii

Grafuri bipartite. Lecție de probă, informatică clasa a XI-a. Mihai Bărbulescu Facultatea de Automatică și Calculatoare, UPB

Versionare - GIT ALIN ZAMFIROIU

The First TST for the JBMO Satu Mare, April 6, 2018

INFORMAȚII DESPRE PRODUS. FLEXIMARK Stainless steel FCC. Informații Included in FLEXIMARK sample bag (article no. M )

9. Memoria. Procesorul are o memorie cu o arhitectură pe două niveluri pentru memoria de program și de date.

Modalitǎţi de clasificare a datelor cantitative

2. Setări configurare acces la o cameră web conectată într-un router ZTE H218N sau H298N

Mecanismul de decontare a cererilor de plata

Excel Advanced. Curriculum. Școala Informală de IT. Educație Informală S.A.

INSTRUMENTE DE MARKETING ÎN PRACTICĂ:

Baze de date distribuite și mobile

Updating the Nomographical Diagrams for Dimensioning the Concrete Slabs

Printesa fluture. Мобильный портал WAP версия: wap.altmaster.ru

TRAJECTORIES GENERATED BY THE R-R-RRT MECHANISM TRAIECTORII GENERATE DE MECANISMUL R-R-RRT

METODE DE EVALUARE A IMPACTULUI ASUPRA MEDIULUI ŞI IMPLEMENTAREA SISTEMULUI DE MANAGEMENT DE MEDIU

Ghid identificare versiune AWP, instalare AWP şi verificare importare certificat în Store-ul de Windows

Reţele Neuronale Artificiale în MATLAB

ISBN-13:

În continuare vom prezenta unele dintre problemele de calcul ale numerelor Fibonacci.

REZOLVAREA NUMERICĂ A ECUAŢIILOR CU DERIVATE PARŢIALE FOLOSIND METODA LINIILOR

Interogarea (query), este operaţia prin care se obţin datele

La fereastra de autentificare trebuie executati urmatorii pasi: 1. Introduceti urmatoarele date: Utilizator: - <numarul dvs de carnet> (ex: "9",

VIBRAŢII TRANSVERSALE ALE UNEI BARE DUBLU ÎNCASTRATE SOLICITATE LA RĂSUCIRE ÎN MEDIU ELASTIC

Mods euro truck simulator 2 harta romaniei by elyxir. Mods euro truck simulator 2 harta romaniei by elyxir.zip

MS POWER POINT. s.l.dr.ing.ciprian-bogdan Chirila

CURRICULUM VITAE. Languages: English, French

Vizualizarea documentelor xml

CERERI SELECT PE MAI MULTE TABELE

2. In the pattern below, which number belongs in the box? 0,5,4,9,8,13,12,17,16, A 15 B 19 C 20 D 21

HEAPSORT I. CONSIDERAŢII TEORETICE

ARE THE STATIC POWER CONVERTERS ENERGY EFFICIENT?

Nume şi Apelativ prenume Adresa Număr telefon Tip cont Dobânda Monetar iniţial final

Managementul referinţelor cu

INTEROGĂRI ÎN SQL SERVER

ANTICOLLISION ALGORITHM FOR V2V AUTONOMUOS AGRICULTURAL MACHINES ALGORITM ANTICOLIZIUNE PENTRU MASINI AGRICOLE AUTONOME TIP V2V (VEHICLE-TO-VEHICLE)

CERERI SELECT PE O TABELA

Prelucrarea numerică a semnalelor

CAIETUL DE SARCINI Organizare evenimente. VS/2014/0442 Euro network supporting innovation for green jobs GREENET

F. Radulescu. Curs: Utilizarea bazelor de date, anul IV C5.

3. Metoda Back Tracking 4. Metoda Programării Dinamice 5. Metoda Branch and Bound 6. Metode. Euristice 7. Algoritmi Genetici

I. STRATEGII ÎN REZOLVAREA PROBLEMELOR

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

Proiectarea Sistemelor Software Complexe

Vol.I ALGORITMI GENETICI LUȚĂ COSTINA CLAUDIA ALGORITMI GENETICI VOL.I ISBN

MODELUL UNUI COMUTATOR STATIC DE SURSE DE ENERGIE ELECTRICĂ FĂRĂ ÎNTRERUPEREA ALIMENTĂRII SARCINII

Prima. Evadare. Ac9vity Report. The biggest MTB marathon from Eastern Europe. 7th edi9on

Numele şi prenumele elevului... Data susţinerii testului...

Laborator 2. Definirea tablourilor şi a funcţiilor (în linia de comandă) în Matlab 7.0

SAG MITTIGATION TECHNICS USING DSTATCOMS

Managementul Proiectelor Software Metode de dezvoltare

Evoluția pieței de capital din România. 09 iunie 2018

Textul si imaginile din acest document sunt licentiate. Codul sursa din acest document este licentiat. Attribution-NonCommercial-NoDerivs CC BY-NC-ND

Laborator 1. Programare declarativă. Programare logică. Prolog. SWI-Prolog

Funcţii grup şi clauzele GROUP BY, HAVING. Operatorii ROLLUP şi CUBE.

Propuneri pentru teme de licență

ALGORITMI DE OPTIMIZARE EVOLUTIVI UTILIZAȚI ÎN PROIECTAREA DISPOZITIVELOR DE ÎNCĂLZIRE PRIN INDUCȚIE

Dispozitive Electronice şi Electronică Analogică Suport curs 02 Metode de analiză a circuitelor electrice. Divizoare rezistive.

Algoritmi si structuri de date ( ) Informatica Ramnicu Valcea, anul 1

6. Excepţii şi aserţiuni. 6. Excepţii şi aserţiuni

Transmiterea datelor prin reteaua electrica

Update firmware aparat foto

Universitatea Lucian Blaga din Sibiu Facultatea de inginerie Hermann Oberth Catedra de Calculatoare şi automatizări

SUCCESSIVE POSITIONS OF THE R-R-RTR MECHANISM POZIŢII SUCCESIVE ALE MECANISMULUI R-R-RTR

Laborator 2 - Statistică descriptivă

F I Ş A D I S C I P L I N E I 1)

Capitolul 7. Data mining. F. Radulescu. Curs: Utilizarea bazelor de date, anul IV C5.

KAJOT V.RO BLACK PLANET JOC DE NOROC CU RISC LIMITAT

Manual Limba Romana Clasa 5 Editura Humanitas File Type

LIDER ÎN AMBALAJE EXPERT ÎN SISTEMUL BRAILLE

Mircea Merca 1) Articol dedicat Prof. Dr. Ioan Tomescu la a 70-a aniversare

Raport stiintific sintetic

Vol.II ALGORITMI GENETICI LUȚĂ COSTINA CLAUDIA ALGORITMI GENETICI VOL.II ISBN

Capitolul 4 SUBCERERI. F. Radulescu. Curs: Baze de date - Limbajul SQL

METODE NOI ÎN PROIECTARE

UTILIZAREA CECULUI CA INSTRUMENT DE PLATA. Ela Breazu Corporate Transaction Banking

Proiect cofinanțat din Fondul Social European prin Programul Operaţional Sectorial pentru Dezvoltarea Resurselor Umane

CONTRIBUŢII PRIVIND MANAGEMENTUL CALITĂȚII PROIECTULUI ÎN INDUSTRIA AUTOMOTIVE

ACTA TECHNICA NAPOCENSIS

SINGULAR PERTURBATION DETECTION USING WAVELET FUNCTION REPRESENTATION

Candlesticks. 14 Martie Lector : Alexandru Preda, CFTe

Metoda Branch_and_Bound (ramifică şimărgineşte) seaseamănă cu metoda Back_Tracking, însă diferă în primul rând prin ordinea de parcurgere a spaţiului

Class D Power Amplifiers

Annual Project meeting and Workshop 8: W8. Managing research data workshop

Lucrarea de laborator nr. 4

Transcription:

Metoda de programare BACKTRACKING

Sumar 1. Competenţe............................................ 3 2. Descrierea generală a metodei............................. 4 3......................... 7 4. Probleme.............................................. 24 5. Aplicaţii................................................ 28 6. Bibliografie şi webografie................................. 29 2

1. Competenţe Competenţe generale elaborarea algoritmilor de rezolvare a problemelor implementarea algoritmilor într-un limbaj de programare Competenţe specifice analiza problemei în scopul identificării metodei de programare adecvate pentru rezolvarea problemei aplicarea creativă a metodelor de programare pentru rezolvarea unor probleme intradisciplinare sau interdisciplinare, sau a unor probleme cu aplicabilitate practică analiza comparativă a eficienţei diferitelor metode de rezolvare a aceleiaşi probleme şi alegerea unui algoritm eficient de rezolvare a unei probleme elaborarea unui algoritm de rezolvare a unor probleme din aria curriculară a specializării utilizarea tehnicilor moderne în implementarea aplicaţiilor 3

2. Descrierea generală a metodei Rezolvarea unei probleme poate conduce la un obţinerea unui număr foarte mare de soluţii posibile. Nu întotdeauna ne interesează toate soluţiile, ci numai o parte dintre ele, care îndeplinesc anumite condiţii. În astfel de cazuri este indicată folosirea metodei Backtracking (BKT). Soluţia unei probleme rezolvate cu metoda BKT se poate reprezenta sun forma unui vector: S=(s 1,s 2,s 3,...,s n ). Fiecare componentă s i a vectorului poate lua valori într-o anumită mulţime A i unde i=1,2,3,...,n. Produsul cartezian A 1 xa 2 xa 3 x...xa n se numeşte spaţiul soluţiilor posibile. 4

Descrierea generală a metodei Problemele care se rezolvă prin metoda BKT generează soluţii care îndeplinesc anumite condiţii specifice problemei, denumite condiţii de validare (condiţii interne). Soluţiile posibile care îndeplinesc condiţiile de validare sunt numite soluţii rezultat (soluţii finale). Unele probleme impun obţinerea unei singure soluţii, numită soluţia optimă. 5

Descrierea generală a metodei Principiul metodei BKT: soluţia se construieşte pas cu pas; dacă se constată că, pentru o valoare aleasă, nu avem cum să ajungem la soluţie, se renunţă la acea valoare şi se reia căutarea din punctul în care am rămas. 6

3. O serie de probleme rezolvate prin metoda BKT o reprezintă cea a problemelor de combinatorică: permutări; combinări; aranjamente; submulţimi; produs cartezian. 7

a. Generarea permutărilor Enunţ: Să se genereze toate permutările mulţimii {1,2,...,n}. Numărul de soluţii: n! Permutările de n elemente sunt mulţimi ordonate ce conţin elementele mulţimii {1,2,...,n} în care fiecare element apare o singură dată. Orice permutare este alcătuită din toate elementele mulţimii, elementele fiind distincte. 8

Exemplu: n=3 A={1,2,3} Numărul de soluţii: 3!=6 Soluţiile: {1,2,3} {1,3,2} {2,1,3} {2,3,1} {3,1,2} {3,2,1} Exerciţii: 1. Scrieţi a şasea soluţie a permutării mulţimii {1,2,3,4}. 2. Scrieţi a câta soluţie este permutarea {2,8,6,4} obţinută din mulţimea {2,4,6,8}. 3. Scrieţi toate soluţiile permutării mulţimii {1,2,3,4,5}, soluţii care încep cu cifra 4 şi se termină cu cifra 1. 9

Implementare în C++: 10

b. Generarea combinărilor Enunţ: Să se genereze toate combinările de p elemente ale mulţimii {1,2,...,n}. Numărul de soluţii: n! p! (n-p)! Combinările de n elemente luate câte p reprezintă o modalitate de a alege p elemente din cele n date, fără a conta ordinea elementelor. Două mulţimi care au aceleaşi elemente, dar aşezate în altă ordine se consideră egale. 11

Exemplu: n=3, p=2 A={1,2,3} Numărul de soluţii: Soluţiile: {1,2} {1,3} {2,3} n! p! (n-p)! 3! 2! (3 2)! 6 2 3 Exerciţii: 1. Scrieţi toate soluţiile combinărilor mulţimii {1,2,3,4} luate câte 3. 2. Scrieţi toate soluţiile combinărilor mulţimii {2,4,6,8} luate câte 2. 3. Scrieţi toate soluţiile combinărilor mulţimii {1,2,3,4,5} luate câte 3, soluţii care încep cu cifra 1 şi se termină cu 5. 12

Implementare în C++: 13

c. Generarea aranjamentelor Enunţ: Să se genereze toate aranjamentele de p elemente ale mulţimii {1,2,...,n}. n! Numărul de soluţii: (n-p)! Aranjamentele de n elemente luate câte p reprezintă o modalitate de a selecta şi aranja p elemente din cele n date. Două mulţimi care au aceleaşi elemente, dar aşezate în altă ordine se consideră distincte. 14

Exemplu: n=3, p=2 A={1,2,3} Numărul de soluţii: n! (n-p)! Soluţiile: {1,2} {1,3} {2,1} {2,3} {3,1} {3,2} 3! (3 2)! 6 1 6 Exerciţii: 1. Scrieţi toate soluţiile aranjamentelor mulţimii {1,2,3,4} luate câte 2. 2. Scrieţi ultimele 3 soluţii ale aranjamentelor mulţimii {2,4,6,8} luate câte 2. 3. Scrieţi toate soluţiile aranjamentelor mulţimii {1,2,3,4,5} luate câte 3, soluţii care încep cu cifra 4. 15

Implementare în C++: 16

d. Generarea submulţimilor Enunţ: Să se genereze toate submulţimile mulţimii {1,2,...,n}. Numărul de soluţii: 2 n -1 Submulţimile reprezintă o modalitate de a forma grupuri cu cel puţin un element şi cel mult n elemente din cele n elemente ale unei mulţimi. Două submulţimi care au aceleaşi elemente, dar aşezate în altă ordine se consideră egale. 17

Exemplu: n=3 A={1,2,3} Numărul de soluţii: 2 3-1=7 Soluţiile: {1}; {1,2}; {1,2,3}; {1,3}; {2}; {2,3}; {3} Exerciţii: 1. Scrieţi toate submulţimile mulţimii {1,2,3,4}. 2. Scrieţi toate submulţimile mulţimii {2,4,6,8}, submulţimi care conţin elementul 2. 3. Scrieţi numărul submulţimilor de două elemente ale mulţimii {1,2,3,4,5}. 18

Implementare în C++: 19

e. Generarea produsului cartezian Enunţ: Se dau n mulţimi A 1, A 2,..., A n. Să se genereze toate elementele produsului cartezian A 1 xa 2 x...xa n. Numărul de soluţii: n*n* *n Produsul cartezian a n mulţimi reprezintă o mulţime, numită şi mulţimea produs, formată din ansamblul tuturor grupurilor de n elementele în care prima componentă aparţine mulţimii A 1, a doua componentă aparţine mulţimii A 2,..., a n-a componentă aparţine mulţimii A n. 20

Exemplu: n=3 A 1 ={1,2,3}, A 2 ={1,2,3}, A 3 ={1,2,3} Numărul de soluţii: n n =3 3 =27 Soluţiile: {1,1,1};{1,1,2};{1,1,3};{1,2,1};{1,2,2};{1,2,3}; {1,3,1};{1,3,2};{1,3,3}; {2,1,1};{2,1,2};{2,1,3};{2,2,1};{2,2,2};{2,2,3}; {2,3,1} {2,3,2};{2,3,3}; {3,1,1};{3,1,2};{3,1,3};{3,2,1};{3,2,2};{3,2,3}; {3,3,1};{3,3,2};{3,3,3} Exerciţii: 1. Scrieţi numărul de soluţii care încep cu 4, ale produsului cartezian a 4 mulţimi de forma {1,2,3,4}. 2. Scrieţi toate soluţiile produsului cartezian a mulţimilor {2,4,6,8} şi {1,3}. 3. Scrieţi ultima soluţie a produsului cartezian a 3 mulţimi {1,3,5}, {2,4,6} şi {7,8,9}. 21

Implementare în C++: 22

BKT recursiv Temă Implementaţi în limbajul C++ problemele de combinatorică folosind algoritmi recursivi. 23

Problema damelor 4. Probleme Enunţ: Să se găsească toate modalităţile de a aranja n dame pe o tablă de şah de dimensiuni nxn, astfel încât ele să nu se atace una pe cealaltă. Două dame se atacă dacă ele se află pe acceaşi linie, pe acceaşi coloană sau pe acceaşi diagonală. 24

Exemplu: Probleme Pentru n=4 se obţin două soluţii: D D D D D D D D 25

Soluţie: Probleme pe linia k nu trebuie să mai fie o altă damă: această condiţie este satisfăcută datorită modului de reprezentare a soluţiei; pe coloana corespunzătoare, care este S[k] nu trebuie să mai fie o altă damă: S[k] S[i], pentru i [1,k-1]; oricare dintre damele aşezate nu trebuie să se afle pe o acceiaşi diagonală cu dama de pe linia k: pentru i [1,k-1] damele aflate pe poziţiile (i,s[i]) respectiv (k,s[k]) nu sunt pe acceaşi diagonală dacă i-k S[i]-S[k] ; 26

Implementare în C++: Probleme 27

Fişă de lucru Întrebări metoda de programare Backtracking Aplicaţii metoda de programare Backtracking 5. Aplicaţii 28

6. Bibliografie şi webografie 1. Miloşescu M., Informatică. Manual pentru clasa a XI, Editura Didactică şi Pedagogică, Bucureşti, 2006 2. Ţoca L., Informatică. Manual pentru clasa a X, Editura Niculescu, Bucureşti, 2001 3. Popescu C., Culegere de probleme de informatică, Editura Donaris- Info, Sibiu, 2002 4. Ministerul Educaţiei, Cercetării şi Tineretului, Centrul Naţional pentru Curriculum şi Evaluare în Învăţământul Preuniversitar, Proba scrisă la informatică. Examenul de bacalaureat Variante (1-100), Bucureşti 2008 5. http://ro.wikipedia.org/wiki/backtracking 6. http://en.wikipedia.org/wiki/backtracking 29