13 Kombinatorische Suche und Heuristiken
Literatur:
Meist aus Kapitel 5 von [Ski97].
Inhalt
Backtracking ·Einschr"ankung der Suche ·Heuristiken
-
Backtracking: systematisches Ablaufen/Generieren
aller m"oglichen L"osungen/Konfigurationen (``exhaustiv'') (vgl. Graphsuche)
- m"oglichst keine L"osung doppelt generieren
- Darstellung
-
Konfiguration A = (a1, a2,..., an), mit ai
Î Si f"ur jede Position i Î {1,..., n}
- Þ Suchraum, Konfigurationsraum: Õi=1n
Si.
- Suchen mittels Backtracking:
-
erweitere eine Teill"osung (a1,... ak) f"ur ein k £ n
mit jeweils allen Elementen f"ur Position k+1 (allen
Elementen aus Sk+1
- falls keine Erweiterung m"oglich:
Backtracking
- Vergleiche: Tiefensuche bei Graphsuche
-
Backtracking: konstruiert einen Baum von Teill"osungen.
-
Knoten: Teill"osungen
- Kanten: zwischen Teill"osungen a und a', falls a' aus
a durch einen Erweiterungsschritt des Algorithmusses erzeugt
wurde
backtrack(A) = // A = Vektor/Array $(a_1,\ldots ,a_n)$
compute $S_1$; // m"ogliche Loesungen fuer 1. Position
k := 1;
while k > 0
do
while $S_k \not= \emptyset$
do
$a_k$ = naechstes Element aus $S_k$;
$S_k := S_k\without a_k$;
if $A = (a_1,a_2,\ldots, a_k)$ Loesung, speichere sie fi;
k := k+1;
berechne S_k
done;
k := k-1 // ``Backtrack''
done
-
Naheliegend: rekursive Tiefensuche zur Durchlaufen
- Vergleiche: Tiefensuche auf Graphen: die Mengen Sk
sind "uber die Nachbarschaften/Adjazenzen gegeben
- andere Durchlaufordnungen f"ur komb. Suche m"oglich,
meist Tiefensuche am besten ( Speicherplatz)29
backtrack-dfs(A,k) =
if $A = (a_1,a_2,\ldots, a_k)$ Loesung,
then speichere sie
else k := k+1;
compute $S_{k}$;
while $S_{k} \not= \emptyset$
do
Waehle ein Element $a$ aus $S_k$.
$a_{k} := a$;
$S_k := S_k\without a$;
backtrack-dfs(A, k)
done
fi
Beispiele f"ur kombinatorische Suche
|
-
Generierung aller Permutationen von {1,... n}:
-
``anwendbar'' bei Problemem wie
Handlungsreisender30
- Suchraum der Gr"o"se n!
- Darstellung: Array A, Si: Menge der Elemente die
nicht in A[1] bis A[n-1] auftauchen
- volle L"osung (d.h. eine Permutation): k = n +1
- Bild: Lauf des Backtracking-Algorithmusses
- Generierung aller Teilmengen einer Menge {1,..., n}
-
``anwendbar'' u.a. bei Problemen der Logik/boolesche
Algebra/Schaltkreisentwurf
- Suchraum der Gr"o"se 2n
- Darstellung: boolescher Array,31 Sk = {,}.
- Bild: Lauf durch den Suchraum
- Konstruktion aller Pfade eines Graphen
- etc.
Beschr"ankung des Suchraumes
|
-
Pruning
-
exhaustive/komb. Suche: findet L"osung, falls existent
- aber: leidet unter kombinatorischer Explosion
- Problemabh"angig: oft Einschr"ankung des Suchraums m"oglich
- Þ Pruning = ``Stutzen'' des
Suchbaumes: Abbruch der Exploration des Suchraumes, sobald
man erkennt, da"s eine Teill"osung nicht mehr zu einer vollst"andigen
L"osung erweitert werden kann.
- wichtige (und selbstverst"andliche) algorithmische
Optimierungsmethode
- problemabh"angig
- Beispiel: Problem des Handlungsreisenden:
-
schlecht: alle n!-Permutationen der St"adte
ausrechnen, danach die Kosten der entsprechende Rundreisen
- besser: bei Rundreise startend von v1: falls keine
Kante von v1 nach v2: generiere die (n-2)! Permutationen mit
Pr"afix v1, v2 ... nicht.
- besser: die bislang beste Rundreise mit Kosten
k Þ keine Exploration von Teil-Rundreisen mit gleichgro"sen oder
h"oheren Kosten32
- Ausnutzen von Symmetrie
-
wichtiger Speziallfall von Pruning
- Beispiel: Handlungsreisender: es reicht, einen
Startknoten auszuw"ahlen (Rundreisen sind ``rotationssymmetrisch'')
Beispiel: Bandbreitenminimisierung
|
-
Bandwidth minimization
- Problem
-
gegeben: Graph G = (V, E), bzw. seine
Adjazenzmatrix
- gesucht welche Permutation p der Knoten
aus V minimiert die L"ange der l"angsten Kante, wenn die Kanten
linear angeordnet werden.
- Anwendungen:
-
L"osungen linearer Gleichungen (Gausselimination);
Bandbreite: max. Abstand eines nicht-Null Eintrags von der
Hauptdiagonalen33
- Schaltkreisentwurf
- ``Linearisierung'' von verzeigerten Strukturen (z.B. optimale (d.h,
minimale Suchzeit) Speicherung von Hypertextdokumenten)
- NP-vollst"andig34
-
oft f"ur Optimierungsprobleme35
- oft wichtig in der Praxis
- allerdings: allgemeine Heuristiken meist geschlagen von
problemspezifischen Heuristiken
- Simulated Annealing
- genetische Algorithmen
- Neuronale Netze
- ...
February 5, 2002