Visszatrackirály algoritmus
⚡ Okos összefoglaló
VisszatracA king algoritmus egy szisztematikus problémamegoldó technika, amely fokozatosan építi fel a jelöltmegoldásokat, és elhagyja azokat a részleges jelölteket, amelyek nem tudják kielégíteni az adott korlátozásokat. Rekurziót használ az állapottér-fa feltárására, a nem megvalósítható ágakat metszi, és zsákutca esetén visszatér az előző döntéshez. Ez a cikk ismerteti az alapötletet, a munkalépéseket, a rekurzív struktúrát, a terminológiát, a klasszikus alkalmazásokat, mint például az N-királynő és a Sudoku, valamint a nyers erő és a tiszta rekurzió közötti kompromisszumokat.
![]()
Mi a visszatérés?tracKirályi algoritmus?
Visszatrackirály egy algoritmikus technika, amely érvényes kombinációkat keres a megoldáshoz számítási problémákFokozatosan építi a lehetséges megoldásokat, és elveti azokat, amelyek nem felelnek meg az adott korlátozásoknak. A megközelítés különösen hasznos, ha sok lehetséges kimenetel közül kell egy megvalósítható eredményt választani.
Ez az algoritmus hatékonyabbnak tekinthető, mint a Brute Force megközelítés. A Brute Force-szal ellentétben, amely minden lehetséges kombinációt megvizsgál, a BacktracA király egyetlen érvényes megoldás megtalálására összpontosít, amely megfelel a meghatározott feltételeknek. korlátokIdőt és memóriát takarít meg azáltal, hogy zsákutca után visszavonja az utolsó lépést, és egy másik lehetőséget próbál ki. Amint érvényes megoldást talál, leáll.
VisszatracA king módszert széles körben használják, mivel összetett problémákat képes megoldani kimerítő erőforrás-felhasználás nélkül. A technika különösen értékes a sok korláttal járó problémáknál, mint például a Sudoku, az N-királynő probléma és az ütemezés. A lehetséges megoldások intelligens navigálásával a BacktracA király olyan választ talál, amely minden feltételnek megfelel, ami nélkülözhetetlenné teszi az olyan feladatokhoz, amelyek egyszerre igénylik a pontosságot és a hatékonyságot.
Hogyan visszatracKirályi algoritmus működik?
A hátsótracA king algoritmus egy problémamegoldó technika, amely lépésről lépésre épít érvényes megoldásokat. Ha egy adott lépésben a feltételek nem teljesülnek, az algoritmus visszatér az előző lépéshez, és egy másik jelöltet választ.
Ezután olyan alternatív kombinációkkal folytatja, amelyek megfelelnek a korlátozásoknak. Mivel számos lehetséges kombináció létezik, az algoritmus a legkielégítőbb opciót választja ki, és szekvenciálisan oldja meg a problémát. Ez a technika akkor hasznos, ha több jelölt közül kell választani. A visszavonás azt jelenti, hogy egy választást visszavonunk, ha az nem vezethet érvényes megoldáshoz.
A hátsótracA King algoritmus a következő általános lépéseket követi egy probléma megoldásához:
1. lépés) Inicializálás: Kezdj egy üres vagy részleges megoldással.
2. lépés) Kiválasztás: A korlátok alapján válassz ki egy jelöltet a jelenlegi megoldás kiterjesztésére.
3. lépés) Feltárás: Rekurzívan oldja meg a problémát a kiválasztott jelölt figyelembevételével és a továbblépéssel.
4. lépés) Korlátozás ellenőrzése: Minden lépésben ellenőrizd, hogy a részleges megoldás sérti-e valamelyik feltételt. Ha igen, akkor fordítsd vissza.track, és próbálj ki egy másik jelöltet.
5. lépés) Lezárás: A folyamat leáll, ha érvényes megoldást találunk, vagy ha az összes kombináció kimerült.
6. lépés) Visszatrackirály: Ha a jelenlegi opció nem tudja megoldani a problémát, térjen vissza az előző állapothoz, és próbáljon meg egy új jelöltet keresni.
7. lépés) Ismételje meg: Folytasd a ciklust, amíg a probléma megoldódik, vagy minden lehetőséget megvizsgáltak.
A hát rekurzív jellegetrackirály algoritmus
VisszatracA king algoritmusok eredendően rekurzívak. A függvény különböző paraméterekkel hívja magát, amíg érvényes megoldást nem talál, vagy ki nem meríti az összes lehetőséget:
def find_solutions(n, other_params): if found_a_solution(): increment_solutions_found() display_solution() if solutions_found >= solution_target: exit_program() return for val in range(first, last+1): if is_valid(val, n): apply_value(val, n) find_solutions(n + 1, other_params) remove_value(val, n)
A háttal kapcsolatos általános kifejezésektrackirályi problémák
Ezek a háthoz kapcsolódó alapvető kifejezésektrackirályi technika:
- Megoldás vektor: A megoldásokat n-elemesként ábrázolja, például (X1, X2, …, Xn).
- Korlátok: Az X értékeket korlátozó szabályok, mind implicit, mind explicit módon.
- Megoldási tér: Minden érvényes X érték, amely kielégíti az explicit feltételeket.
- Állapottér-fa: A megoldásteret fa formában ábrázolja.
- Állapottér: Egy állapottér-fán belüli útvonalakat ír le.
- Probléma állapota: A keresési fa azon csomópontjai, amelyek részmegoldásokat képviselnek.
- Megoldásállapotok: Azok az állapotok, amelyek érvényes megoldási tuplékokat alkotnak S-ben.
- Válasz állapotok: Elégítse ki az implicit korlátozásokat és adja meg a kívánt megoldásokat.
- Ígéretes csomópont: Érvényes megoldásokhoz vezet, és megvalósítható marad.
- Nem ígéretes csomópont: Kivitelezhetetlen állapotokhoz vezet, és nem vizsgálják tovább.
- Élő csomópont: Már generálva, a megmaradt felfedezetlen gyermekekkel.
- E-csomópont: Egy élő csomópont, amely jelenleg generálja a gyermekcsomópontjait.
- Halott csomópont: További bővítés nem lehetséges, mivel minden gyermek generálódik.
- Mélységalapú csomópontgenerálás: A legutóbbi élő csomópontot használja következő E-csomópontként.
- Határozó függvény: Maximalizálja vagy minimalizálja a B(x1, x2, …, Xa) értékét az optimalizálás érdekében.
- Statikus fák: A fa megfogalmazása független a problémapéldánytól.
- Dinamikus fák: A fa megfogalmazása a problémapéldánytól függően változik.
Mikor használjunk hátat?tracKirályi algoritmus?
Miután a munkalépések tiszták voltak, a következő kérdés az, hogy mikor Visszatraca király a megfelelő választás. Választhatod a Hátsóttrackirályi technika egy összetett probléma megoldására a következő esetekben:
- Sok választási lehetőség létezik: VisszatracA király olyan problémákhoz illik, ahol minden lépésnél sok lehetőség áll rendelkezésre, például tárgyválasztás vagy lépések esetén.
- Nincs egyértelműen legjobb választás: Amikor nincs elegendő információ a legjobb opció előzetes meghatározásához, VisszatracA király alkalmazható szisztematikus felfedezésre.
- A döntés több választási lehetőséget eredményez: VisszatracA king segít strukturált módon áttekinteni a láncolt választási lehetőségeket.
- Minden lehetséges megoldást meg kell vizsgálni: VisszatracA király szisztematikusan megvizsgál minden megoldást egymásra épülő döntések sorozatának meghozatalával.
A hát típusaitrackirályi problémák
Ha egyszer eldöntötted, hogy visszatracHa a király illik a problémához, fel kell ismerned, hogy melyik kategóriába tartozik a probléma. Háromféle probléma létezik a BackbentracKing algoritmusok: döntési, optimalizálási és felsorolási problémák.
- Döntési probléma: A cél annak meghatározása, hogy létezik-e megvalósítható megoldás. A válasz vagy igen, vagy nem. Például az N királynő probléma egy olyan döntési probléma, amely azt kérdezi, hogy elhelyezhető-e N királynő egy N x N sakktáblán anélkül, hogy megtámadnák egymást.
- Optimalizálási probléma: A cél a lehető legjobb megoldás megtalálása a sok lehetőség közül. Ez magában foglalhatja egy függvény vagy változó maximumának vagy minimumának meghatározását. A hátizsákprobléma, ahol a cél a tárgyak összértékének maximalizálása a súlykorlát betartása mellett, egy klasszikus példa erre.
- Felsorolási probléma: A cél az adott probléma összes érvényes megoldásának felsorolása kihagyás nélkül. Erre példa az összes lehetséges betűkombináció generálása egy adott karakterkészletből.
A hát alkalmazásaitrackirály és példák
VisszatracA kinget számos valós és tudományos helyzetben alkalmazzák. Néhány népszerű alkalmazást az alábbiakban pszeudokóddal ismertetünk.
- Sudoku Solver: A hátsótracA king technika érvényes számokkal tölti ki az üres cellákat, és visszaállítja az eredeti állapotot, valahányszor egy elhelyezés megsérti a Sudoku szabályait.
function solveSudoku(board): if no empty cells: return true # Sudoku is solved for each empty cell (row, col): for num from 1 to 9: if num is valid in (row, col): place num in (row, col) if solveSudoku(board): return true remove num from (row, col) return false # No valid solution
- N-királynő probléma: A hátsótracA király megközelítésben a királynőket N x N sakktáblára helyezzük úgy, hogy egyik sem fenyegethesse egymást.
function solveNQueens(board, col): if col >= N: return true # All queens are placed for each row in the column col: if isSafe(board, row, col): place queen at (row, col) if solveNQueens(board, col + 1): return true remove queen from (row, col) return false # No valid solution in this branch
- Részhalmazösszeg-feladat: VisszatracA king egy adott halmazból megkeresi a számok azon részhalmazát, amelyek összege egy adott célösszeget tartalmaz.
function subsetSum(nums, target, index, currentSubset): if target == 0: print(currentSubset) # Subset with the target sum found return if index >= len(nums) or target < 0: return currentSubset.add(nums[index]) subsetSum(nums, target - nums[index], index + 1, currentSubset) currentSubset.remove(nums[index]) subsetSum(nums, target, index + 1, currentSubset)
- Hamilton-ciklus probléma: VisszatracA king módszert arra alkalmazzuk, hogy egy gráfban egy zárt túrát találjunk, amely minden csúcsot pontosan egyszer érint.
- Patkány az labirintusban probléma: VisszatracA király megtalálja egy patkány útját egy labirintus kiindulópontjától a kijáratig, visszavonva a falakhoz vezető lépéseket.
A hát előnyei és hátrányaitrackirály algoritmus
Mint minden algoritmikus stratégia, a Back istracA királynak egyértelmű erősségei és korlátai vannak, amelyeket mérlegelni kell, mielőtt elfogadnád.
A hát előnyeitrackirály algoritmus
VisszatracA királyi technikák számos hatékony módon oldják meg az összetett problémákat:
- A hátsótracA king technika hatékonyan kezeli a korlátozásokat.
- A módszer jól működik optimalizálási problémák megoldásában.
- A technika számos különböző problématípushoz alkalmazkodik.
- Az eljárás segít minden lehetséges megoldás áttekintésében.
- Mert visszajötttracks, több memóriát takarít meg, mint a Brute Force technika.
A hát hátrányaitrackirály algoritmus
VisszatracA királynak vannak bizonyos korlátai is, különösen az időbeli komplexitás tekintetében. A hátrányok a következők:
- Nem garantál megoldást minden forgatókönyvben.
- Lassú lehet a kipróbálandó kombinációk nagy száma miatt.
- A számos lehetőség miatt nagy időbeli komplexitással jár.
- Nem alkalmas valós idejű korlátozásokra, mivel a legjobb megoldás megtalálása hosszú időt vehet igénybe.
- A hatékonyság a probléma összetettségétől függ.
Különbség a hát és a hát közötttrackirály és rekurzió
VisszatracA king rekurzióra épül, de a kettő nem ugyanaz. Az alábbi táblázat kiemeli a legfontosabb különbségeket.
| Rekurzió | Visszatrackirály |
|---|---|
| Az alapeset eléréséig hívja magát. | Rekurziót használ az összes lehetőség áttekintésére, amíg meg nem találja a legjobb megvalósítható eredményt. |
| Alulról felfelé irányuló megközelítés. | Felülről lefelé irányuló megközelítés. |
| Egyetlen érték sem kerül elvetésre. | Az életképtelen megoldásokat elutasítják. |
