archetype | title | author | readings | tldr | outcomes | assignments | youtube | fhmedia | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
lecture-cg |
Lösen von diskreten CSP |
Carsten Gips (HSBI) |
|
CSP's mit endlichen Domänen lassen sich mit einer Backtracking-Suche lösen. Dabei wird
schrittweise eine Variablen ausgewählt und dann ein Wert aus deren Wertebereich für
die Belegung ausgewählt. Danach ruft sich die Backtracking-Suche rekursiv auf. Falls
dabei keine Lösung gefunden werden kann, erfolgt Backtracking und die Belegung wird
schließlich rückgängig gemacht und durch die nächste Möglichkeit ersetzt.
|
|
|
|
[[Tafelbeispiel: Suche nach Lösung]{.bsp}]{.slides}
def BT_Search(assignment, csp):
if complete(assignment): return assignment
var = VARIABLES(csp, assignment)
for value in VALUES(csp, var):
if consistent(value, var, assignment, csp):
assignment += {var = value}
if INFERENCE(csp, assignment, var) != failure:
result = BT_Search(assignment, csp)
if result != failure: return result
assignment -= {var = value}
return failure
[Quelle: Eigener Code basierend auf einer Idee nach [@Russell2020, p. 176, fig. 5.5]]{.origin}
::: notes Hierbei handelt es sich um eine etwas angepasste Tiefensuche: Starte mit leerem Assignment und weise schrittweise Variablen passende Werte zu und mache notfalls Backtracking. :::
::::::::: slides :::::: columns ::: {.column width="40%"} ::: ::: {.column width="60%"} ::: :::::: :::::::::
::::::::: notes {width="80%"} :::::::::
- Lösung von CSP mit endlichen Domänen mit Hilfe der Backtracking-Suche
::: slides
Unless otherwise noted, this work is licensed under CC BY-SA 4.0. :::