Backtracking

Curs
7.3/10 (3 voturi)
Conține 1 fișier: doc
Pagini : 6 în total
Cuvinte : 743
Mărime: 7.16KB (arhivat)
Publicat de: Zamfir Udrea
Puncte necesare: 0
Proiect despre backtracking.Am inceput cu definitia metodei de backtracking,dupa asta am dat pasii de rezolvarea a problemelor cu backtracking si niste detalii despre vectori care se folosesc,stive si altele.

Extras din curs

Tehnica Backtracking propune generarea solutiei prin completarea vectorului x în ordine x1x2... xn si are la bazÎ un principiu “de bun simt”: dacÎ se constatÎ cÎ având o combinatie partialÎ de formÎ v1v2...v k-1 (unde vi,…,vk-1 sunt valori deja fixate), dacÎ alegem pentru xk o valoare vk si combinatia rezultatÎ nu ne permite sÎ ajungem la o solutie, se renuntÎ la aceastÎ valoare si se încearcÎ o alta (dintre cele netestate în aceastÎ etapÎ). Într-adevÎr, oricum am alega celelalte valori, dacÎ una nu corespunde nu putem avea o solutie.

Altgoritmul general al metodei Backtracking

Pentru evitarea generÎrii combinatiilor neconvenabile se procedeazÎ astfel:

Presupunem cÎ s-au gÎsit valorile v1v2…vk-1 pentru componentele x1x2... xk-1 (au rÎmas de determinat valorile pentru xk…xn). ne ocupÎm în continuare de componenta xk. Pasii urmati sunt:

1. Pentru început, pentru xk nu s-a testat încÎ nici o valoare.

2. Se verificÎ dacÎ existÎ valori netestate pentru xk .

a) În caz afirmativ, se trece la pasul 3.

b) Altfel, se revine la componenta anterioarÎ, xk-1; se reia pasul 2 pentru k=k-1.

3. Se alege prima valoare v dintre cele netestate încÎ pentru xk.

4. Se verificÎ dacÎ acestÎ combinatie partialÎ v1v2…vk-1v ne poate conduce la un rezultat (dacÎ sunt îndeplinite anumite conditii de continuare).

a) DacÎ valoarea aleasÎ este bunÎ se trece la pasul 5.

b) Altfel, se rÎmâne pe aceeasi pozitie k si se reia cazul 2.

5. Se verificÎ dacÎ s-a obtinut o solutie .

a) În caz afirmativ, se tipÎreste aceastÎ solutie si se rÎmâne la aceeasi componentÎ xk, reluându-se pasul 2.

b) Altfel se reia altgoritmul pentru urmÎtoarea componentÎ (se trece la pasul 1 pentru k=k+1).

Înainte de a scrie programul care ne va obtine solutiile, trebuie sÎ stabilim unele detalii cu privire la:

- vectorul solutie – câte componente are, ce mentine fiecare componentÎ.

- multimea de valori posibile pentru fiecare componentÎ (sunt foarte importante limitele acestei multimi).

- conditiile de continuare (conditiile ca o valoare x[k]sÎ fie acceptatÎ).

- conditia ca ansamblul de valori generat sÎ fie solutie.

Probleme :

Problema damelor :

#include<iostream.h>

#include<math.h>

int st[100],n,k;

void init()

{

st[k]=0;

}

int am_succesor()

{

if(st[k]<n){st[k]++;

return 1;

}

else return 0;

}

int e_valid()

{

for(i=1;i<k;i++)if(st[k]==st[i] || abs(st[k]-st[i])==abs(k-i))return 0;

return 1;

}

int solutie()

{

return k==n;

}

Preview document

Backtracking - Pagina 1
Backtracking - Pagina 2
Backtracking - Pagina 3
Backtracking - Pagina 4
Backtracking - Pagina 5
Backtracking - Pagina 6

Conținut arhivă zip

  • Backtracking.doc

Alții au mai descărcat și

Arhitectura calculatoarelor

1.1. Sistemul de calcul 1.1.1. Definiţii Sistemul de calcul (SC, System Computer sau calculator) este reprezentat de o structură destinată...

Manual Grafuri

1. Preliminarii 1.1. Algoritmi Toti algoritmii descrisi în cadrul acestei lucrari folosesc structuri de date de tip graf. Unele descrieri sînt...

Manual Limbaj C

1. Generalitati asupra limbajului C 1.1. Introducere Limbajul C a fost creat la începutul anilor '70 de catre Brian W Kernigham si Dennis M...

Protocoale Peer to Peer

Protocolul P2P implică interacţiunea a două entităţi prin schimbul de mesaje, numite PDU (Protocol Data Unit). Fiecare PDU conţine un antet...

Noțiuni despre Algoritmi și Programare Structurată

2.1. Noţiuni introductive Rezolvarea problemelor cu ajutorul calculatorului presupune parcurgerea mai multor etape: 1. analiza problemei (cu...

Variabile

6. Variabile Prin variabilă se înţelege o dată a cărei valoare se poate schimba pe parcursul execuţiai programului. Unei variabile i se atribuie...

Instrucțiunile limbajului C++

5. Operaţii de intrare/ieşire În C, spre deosebire de alte limbaje, sistemul intrare/ieşire nu este parte a limbajului, ci este introdus printr-un...

Instrucțiuni

O instrucţiune este o parte a programului care poate fi executată. Aceasta înseamnă că o instrucţiune specifică o acţiune. Standardul ANSI C şi cel...

Te-ar putea interesa și

Backtracking Recursiv

1. METODA BACKTRACKING 1. 1. Stiva Stiva este acea formã de organizare a datelor ( structurã de date ) cu proprietatea cã operatiile de...

Turbo Pascal - metoda backtracking - tehnica Greedy

Aparitia limbajului Pascal este un raspuns la criza care a aparut in domeniul programarii calculatoarelor , la sfarsitul anilor ’60 . Limitarile...

Metoda backtracking

Metoda backtracking se utilizeaza pentru rezolvarea unor probleme in care: - se obtin mai multe solutii; -solutia este formata din unul sau mai...

Problema celor 8 regine

1. Sarcina lucrării Să se scrie un program ce rezolvă următoarea problema: Problema celor 8 dame:Se cere să se găseasca toate soluţiile de...

Metoda backtracking

CAPITOLUL 1: ASPECTE TEORETICE Această tehnică se foloseşte în rezolvarea problemelor care îndeplinesc simultan următoarele condiţii: • soluţia...

Metoda backtracking - plată unei sume de bani

I.1.Notiuni introductive Limbajul Turbo Pascal a aparut la inceputul anilor ’70 si a fost elaborat de matematicianul N. Wirth. Initial limbajul a...

Metoda backtracking

METODA BACKTRACKING Tehnica folosita:Metoda Backtracking Aceasta tehnica se foloseste in rezolvarea problemelor care indeplinesc simulltan...

Problemă labirint - Turbo Pascal

1 Metoda backtracking Stiva este acea forma de organizare a datelor (structura de date ) cu proprietatea ca operatiile de introducere si scoatere...

Ai nevoie de altceva?