[informatica] backtracking
Moderators: ArcherBarry, Fuzzwood
-
- Berichten: 12
backtracking
Beste
Heeft iemand een algemeen stappenplan dat gevolg kan worden voor backtracking(in python) ? Want ik heb volgend week daar examen van en ik snap het eerlijk gezegd nog niet zo goed, recursie gaat beter maar ook nog moeilijkheden mee.
alvast bedankt!
Heeft iemand een algemeen stappenplan dat gevolg kan worden voor backtracking(in python) ? Want ik heb volgend week daar examen van en ik snap het eerlijk gezegd nog niet zo goed, recursie gaat beter maar ook nog moeilijkheden mee.
alvast bedankt!
- Berichten: 778
Re: backtracking
Wat weet je er zelf wel over?
Een algemeen stappenplan kan zijn:
"Als je op een keuzepunt staat, maak je een keuze, en probeer je of de gekozen route naar een oplossing leidt. Loop je bij de gekozen route vast, dan ga je terug naar je keuzepunt, en maak je een andere keuze."
Een algemeen stappenplan kan zijn:
"Als je op een keuzepunt staat, maak je een keuze, en probeer je of de gekozen route naar een oplossing leidt. Loop je bij de gekozen route vast, dan ga je terug naar je keuzepunt, en maak je een andere keuze."
- Berichten: 2.609
Re: backtracking
Zoals hierboven gezegd ben je inderdaad nogal vaag.
De uitleg van Back2Basics in pseudocode zou er als volgt uitzien:
Stel dat we een puzzel willen oplossen. Een puzzel heeft een zekere staat (configuratie van de elementen) en een zekere oplossing (eindconfiguratie die we willen bereiken). In een bepaalde staat proberen we 1 voor 1 alle mogelijke moves uit in die staat en we roepen de DFS functie recursief op. Als een oplossing gevonden wordt dan moeten er geen andere moves meer uitgevoerd worden. Indien er geen oplossing gevonden werd, dan maken we de move ongedaan en proberen we een andere move uit. Als geen enkele van de moves tot een oplossing leidde, dan returnen we False. De code zal backtracken tot het al dan niet een oplossing vindt.
DFS staat voor "depth first search". Met die zoekterm vind je op het internet eventueel meer info en voorbeelden.
De uitleg van Back2Basics in pseudocode zou er als volgt uitzien:
Stel dat we een puzzel willen oplossen. Een puzzel heeft een zekere staat (configuratie van de elementen) en een zekere oplossing (eindconfiguratie die we willen bereiken). In een bepaalde staat proberen we 1 voor 1 alle mogelijke moves uit in die staat en we roepen de DFS functie recursief op. Als een oplossing gevonden wordt dan moeten er geen andere moves meer uitgevoerd worden. Indien er geen oplossing gevonden werd, dan maken we de move ongedaan en proberen we een andere move uit. Als geen enkele van de moves tot een oplossing leidde, dan returnen we False. De code zal backtracken tot het al dan niet een oplossing vindt.
Code: Selecteer alles
def DFS(staat):
if isOplossing(staat):
return True
for move in mogelijkeMoves(staat):
pasMoveToe(staat, move)
check = DFS(staat)
if check:
return True
else:
maakMoveOngedaan(staat, move)
return False
DFS(beginstaat)