⚙️ PLATFORMĂ EDUCAȚIONALĂ

Backtracking
Hub

O colecție de lecții interactive despre algoritmul Backtracking — de la teorie la aplicații reale, pas cu pas.

🗺️DrumExpress
N-Regine
🔢Permutări
🧩Sudoku
Turul Calului
Bila pe Teren
🎨Colorare Hartă
🐭Labirint
🧮Cifre Distincte
〔〕Paranteze
⚙️ Ce este Backtracking?

Backtracking este o tehnică algoritmică de tip „încearcă și renunță" — algoritmul construiește o soluție pas cu pas, iar atunci când constată că o alegere curentă nu poate duce la o soluție validă, revine la pasul anterior și încearcă o altă variantă.

🔍
Explorare
Încearcă sistematic toate variantele posibile din starea curentă.
Validare
La fiecare pas verifică dacă alegerea respectă condițiile problemei.
↩️
Revenire
Dacă o cale e blocată, anulează ultimul pas și încearcă alt drum.
🎯
Soluție
Găsește una sau toate soluțiile valide, garantat complet.
📐 Schema standard BKT (iterativă)

Forma canonică predată în liceu și folosită la BAC. Algoritmul folosește șase funcții cu roluri bine definite și o buclă principală while(k > 0).

INIT(k)
Inițializează x[k] cu valoarea de dinaintea primului element al domeniului (de obicei 0 sau valmin−1).
EXISTA(k)
Verifică dacă mai există valori netestate în domeniu pentru poziția k. Returnează 1 dacă x[k] poate fi incrementat.
VALID(k)
Verifică dacă valoarea aleasă pentru poziția k este compatibilă cu valorile deja plasate la pozițiile 1..k−1.
SOLUTIE(k)
Returnează 1 atunci când vectorul soluție este complet — de obicei când k == n.
TIPAR(k)
Afișează soluția completă. Bucla de afișare iterează i = 1..k (inclusiv poziția curentă).
BCK()
Funcția principală: pornește de la k=1, apelează INIT, apoi intră în bucla while care alternează avansare și revenire.
// Schema iterativă BCK — forma generală void BCK() { int k = 1; INIT(k); while (k > 0) if (EXISTA(k)) { x[k]++; if (VALID(k)) { if (SOLUTIE(k)) TIPAR(k); else { k++; INIT(k); } } } else k--; }
🔄 Recursiv vs Iterativ
Schema recursivă
void back(int k) { for (int v = 1; v <= n; v++) { x[k] = v; if (valid(k)) { if (k == n) tipar(); else back(k+1); } } } // apel: back(1);
Stiva de apeluri gestionează revenirea. Mai lizibilă, preferată în implementări moderne.
Schema iterativă (BAC)
// INIT/EXISTA/VALID/SOLUTIE/TIPAR void BCK() { int k = 1; INIT(k); while (k > 0) if (EXISTA(k)) { x[k]++; if (VALID(k)) { if (SOLUTIE(k)) TIPAR(k); else { k++; INIT(k); } } } else k--; }
Explicit, fără apeluri recursive. Forma cerută la BAC în România. Revenirea se face prin k--.
⏱ Complexitate
Permutări (n elemente)
O(n · n!)
Submulțimi (n elemente)
O(n · 2ⁿ)
Colorare graf (k culori)
O(kⁿ)
N-Regine (n×n tablă)
O(n!)

Pruning-ul (tăierea ramurilor invalide) reduce drastic numărul de stări explorate în practică față de cazul cel mai rău.

✅ Când se aplică BKT?
Există un concept de soluție parțială care se construiește incremental
Se poate testa rapid dacă o soluție parțială poate duce la o soluție completă
Se cer toate soluțiile sau prima soluție validă
Nu e potrivit când se cere soluția optimă — folosești programare dinamică sau greedy
Nu e eficient dacă nu există constrângeri — degenerează în forță brută
🌳 Arborele de decizie

BKT construiește implicit un arbore de decizie parcurs în adâncime (DFS). Fiecare nod reprezintă o stare parțială a soluției; arcele reprezintă alegerile posibile. Ramurile ce violeaza constrângerile sunt tăiate fără a fi explorate.

🌱
Rădăcină
Starea inițială — nicio alegere făcută încă.
🌿
Noduri interne
Soluții parțiale. Fiecare nivel = o poziție din vectorul soluție.
🍀
Frunze valide
Soluții complete. TIPAR() afișează soluția.
✂️
Pruning
VALID() = fals → ramura e abandonată imediat.
Lecții disponibile
01
🗺️
Lecția 01 · Aplicație
DrumExpress
Găsește toate rutele posibile între 10 orașe din România. Algoritmul BKT calculează fiecare drum și îl vizualizează pe hartă interactivă cu date reale.
Backtracking Grafuri Leaflet.js OSRM
02
Lecția 02 · Combinatorică
N-Regine
Plasează N regine pe o tablă de șah N×N astfel încât nicio regină să nu atace alta. Simulare animată BKT cu tablă interactivă 4×4–6×6.
Backtracking Animație Combinatorică
03
🔢
Lecția 03 · Permutări
Generare de Permutări
Generează toate cele 6 permutări ale șirului [1,2,3] prin BKT. Animație cu poziții, pool de elemente disponibile și toate permutările găsite.
Backtracking n! = 6 Animație
04
🧩
Lecția 04 · Puzzle
Sudoku Solver
Rezolvă un Sudoku 9×9 real prin Backtracking pur. Vizualizează fiecare plasare și revenire în timp real, cu statistici despre numărul de pași.
Backtracking 9×9 Grid Puzzle
05
Lecția 05 · Graf
Turul Calului
Găsește un tur complet al unui cal de șah pe o tablă 5×5 — vizitează toate cele 25 de celule exact o dată. Animație BKT cu traseu colorat și SVG.
Backtracking 5×5 Board Grafuri
06
Lecția 06 · Parcurgere
Bila pe Teren
O bilă pleacă dintr-o parcelă interioară și se poate mișca spre parcele vecine cu înălțime mai mică. Găsim toate căile spre marginea terenului prin BKT.
Backtracking 5×5 Teren Parcurgere
07
🎨
Lecția 07 · Grafuri
Colorarea Hărții
Colorăm o hartă de 9 regiuni poligonale cu 4 culori astfel încât nicio două regiuni vecine să nu aibă aceeași culoare. Teorema celor 4 culori în acțiune.
Backtracking 4 Culori Graf planar
08
🐭
Lecția 08 · Labirint
Labirint — Toate Ieșirile
Un șoricel pornește din centrul unui labirint 7×7 și caută toate căile posibile spre ieșire. Algoritmul BKT explorează sistematic fiecare ramură, revenind când se blochează.
Backtracking 7×7 Labirint Animație
09
🧮
Lecția 09 · Cifre
Cifre Distincte
Generează toate numerele formate din cifre distincte a căror sumă este n. BKT construiește numărul poziție cu poziție, tăind ramurile în care suma deja depășește n.
Backtracking Cifre Animație
10
〔〕
Lecția 10 · Combinatorică
Paranteze Valide
Generează toate combinațiile valide de n perechi de paranteze prin BKT. Algoritmul plasează ( sau ) la fiecare pas, tăind ramurile invalide instant.
Backtracking Numerele Catalan Animație
!
⚠️
Ghid · BAC Backtracking
Greșeli Frecvente la BAC
Cele 8 greșeli clasice din schema BKT: INIT greșit, EXISTA cu condiție inversă, VALID fără diagonale, k-- lipsă și altele — cu cod greșit vs. corect.
8 greșeli Cod comparat Sfaturi BAC
Q
📝
Chestionar · Evaluare
Test Backtracking
15 întrebări din toate categoriile: teorie, adevărat/fals, trasare algoritm, complexitate, cod și aplicații practice.
15 întrebări 6 categorii Explicații
Despre BKT Hub
Ce este?

BKT Hub este o platformă educațională care prezintă algoritmul Backtracking prin aplicații interactive și exemple concrete. Fiecare lecție abordează o problemă clasică cu o implementare completă.

Creatori
GR
Gavrilescu Razvan-Cristian
GR
Gavrilescu Robert Stefan