Algoritmi de backtracking sunt ca strategiile de rezolvare a problemelor care ajută la explorarea diferitelor opțiuni pentru a găsi cea mai bună soluție. Ei lucrează încercând căi diferite și, dacă una nu funcționează, dau înapoi și încearcă alta până o găsesc pe cea potrivită. Este ca și cum ai rezolva un puzzle testând diferite piese până când se potrivesc perfect.
Întoarcerea înapoi
Cuprins
- Ce este algoritmul de backtracking?
- Cum funcționează un algoritm de backtracking?
- Exemplu de algoritm de backtracking
- Când să utilizați un algoritm de backtracking?
- Aplicații ale algoritmului de backtracking
- Elementele de bază ale algoritmului de backtracking
- Probleme standard la algoritmul de backtracking
- Probleme ușoare la algoritmul de backtracking
- Probleme medii la algoritmul de backtracking
- Probleme grele la algoritmul de backtracking
Ce este algoritmul de backtracking?
Întoarcerea înapoi este o tehnică algoritmică de rezolvare a problemelor care implică găsirea unei soluții în mod incremental prin încercare opțiuni diferite și desfacerea ei dacă duc la a capat de drum .
Este folosit în mod obișnuit în situațiile în care trebuie să explorați mai multe posibilități pentru a rezolva o problemă, cum ar fi căutarea unei căi într-un labirint sau rezolvarea de puzzle-uri precum Sudoku . Când se ajunge la o fundătură, algoritmul se întoarce la punctul de decizie anterior și explorează o cale diferită până când se găsește o soluție sau se epuizează toate posibilitățile.
Cum funcționează un algoritm de backtracking?
A algoritm de backtracking functioneaza prin explorarea recursiva a tuturor solutiilor posibile la o problema. Începe prin a alege o soluție inițială, apoi explorează toate extensiile posibile ale acelei soluții. Dacă o extensie duce la o soluție, algoritmul returnează soluția respectivă. Dacă o extensie nu duce la o soluție, algoritmul se întoarce la soluția anterioară și încearcă o altă extensie.
Următoarea este o schiță generală a modului în care funcționează un algoritm de backtracking:
- Alegeți o soluție inițială.
- Explorați toate extensiile posibile ale soluției actuale.
- Dacă o extensie duce la o soluție, returnați soluția respectivă.
- Dacă o extensie nu duce la o soluție, întoarceți-vă la soluția anterioară și încercați o altă extensie.
- Repetați pașii 2-4 până când au fost explorate toate soluțiile posibile.
Exemplu de algoritm de backtracking
Exemplu: Găsind calea cea mai scurtă printr-un labirint
Intrare: Un labirint reprezentat ca o matrice 2D, unde 0 reprezintă un spaţiu deschis şi 1 reprezintă un zid.
Algoritm:
- Începeți de la punctul de plecare.
- Pentru fiecare dintre cele patru direcții posibile (sus, jos, stânga, dreapta), încercați să vă deplasați în acea direcție.
- Dacă deplasarea în acea direcție duce la punctul final, întoarceți calea urmată.
- Dacă deplasarea în acea direcție nu duce la punctul final, întoarceți-vă înapoi la poziția anterioară și încercați o altă direcție.
- Repetați pașii 2-4 până când se ajunge la punctul final sau au fost explorate toate căile posibile.
Când să utilizați un algoritm de backtracking?
Algoritmii de backtracking sunt cel mai bine folosiți pentru a rezolva probleme care au următoarele caracteristici:
- Există mai multe soluții posibile la problemă.
- Problema poate fi împărțită în subprobleme mai mici.
- Subproblemele pot fi rezolvate independent.
Aplicații ale algoritmului de backtracking
Algoritmii de backtracking sunt utilizați într-o mare varietate de aplicații, inclusiv:
- Rezolvarea puzzle-urilor (de exemplu, Sudoku, cuvinte încrucișate)
- Găsind calea cea mai scurtă printr-un labirint
- Probleme de programare
- Probleme de alocare a resurselor
- Probleme de optimizare a rețelei
Elementele de bază ale algoritmului de backtracking:
- Diferența dintre tehnica Backtracking și Branch-N-Bound
- Care este diferența dintre Backtracking și Recursion?
Probleme standard la algoritmul de backtracking:
- Problema turneului Cavalerului
- Șobolan într-un labirint
- Problema N Queen | Backtracking-3
- Problemă cu suma subsetului
- m Problemă de colorare
- Ciclul Hamiltonian
- Sudoku | Backtracking-7
- Puzzle cu magnet
- Eliminați parantezele nevalide
- O abordare de backtracking pentru a genera coduri gri de n biți
- Scrieți un program pentru a imprima toate permutările unui șir dat
Probleme ușoare la algoritmul de backtracking:
- Backtracking pentru a găsi toate subseturile
- Verificați dacă un șir dat este șir-sumă
- Numărați toate căile posibile între două vârfuri
- Găsiți toate submulțimile distincte ale unei mulțimi date
- Aflați dacă există o cale de mai mult de k lungime de la o sursă
- Imprimați toate căile de la o anumită sursă la o destinație
- Imprimați toate șirurile posibile care pot fi realizate prin plasarea de spații
Probleme medii la algoritmul de backtracking:
- remorcheră
- problema cu 8 regine
- Sumă combinațională
- Algoritmul lui Warnsdorff pentru problema turului lui Knight
- Găsiți căi de la celula de colț la celula din mijloc în labirint
- Găsiți numărul maxim posibil făcând cel mult K swap
- Șobolan într-un labirint cu mai mulți pași sau sărituri permise
- N regină în spațiul O(n).
Probleme grele la algoritmul de backtracking:
- Set de putere în ordine lexicografică
- Problemă de întrerupere a cuvintelor folosind Backtracking
- Împărțirea unei mulțimi în K submulțimi cu sumă egală
- Cel mai lung traseu posibil într-o matrice cu obstacole
- Găsiți cea mai scurtă rută sigură pe o potecă cu mine antitermale
- Tipăriți toate partițiile palindromice ale unui șir
- Tipărirea tuturor soluțiilor în N-Queen Problem
- Tipăriți toate cele mai lungi subsecvențe comune în ordine lexicografică
Link-uri rapide:
- Aflați structura datelor și algoritmi | Tutorial DSA
- Top 20 de întrebări de interviu cu algoritmul de backtracking
- „Videoclipuri” pe Backtracking