vineri, 14 februarie 2014

Bactracking recursiv

  1. Funcţia back are un parametru întreg k şi funcţionează astfel:
- dacă s-a ajuns la o soluţie, se tipăreşte şi se revine la nivelul anterior

void back(int k)
{
  if(solutie(k)) afis(x,k);

- dacă nu s-a ajuns la o soluţie

else

- se iniţializează nivelul

{
  x[k]=0;

- atâta timp cât este succesor pe acest nivel

while(succ(x,k))
    {

- dacă este valid, funcţia back se autoapelează pentru k+1

valid(x,k,ev)
  if(ev)
  back(k+1);

- dacă nu este succesor, se trece pe nivelul k-1 prin ieşirea din funcţia back.

2. Funcţia succ verifică dacă mai sunt elemente în Sk.

3. Funcţia valid verifică dacă sunt satisfăcute condiţiile de continuare

4. Funcţia afiş afişează o soluţie rezultat

5. Funcţia soluţie returnează  
  1 dacă pe nivelul k s-a ajuns la soluţie
    0 dacă pe nivelul k nu s-a ajuns la soluţie
În general funcţia soluţie se defineşte astfel:
int soluţie(int k)
{
  return(k==n+1)

}

Niciun comentariu:

Trimiteți un comentariu

Template developed by Confluent Forms LLC; more resources at BlogXpertise