INTA - Übungsblatt 2. Pflichtabgabe bis zum 21.11. (Dienstag

Werbung
INTA - Übungsblatt 2. Pflichtabgabe bis zum 21.11. (Dienstag). Tragen sie ihre Lösungen auf diesem Blatt
ein und geben dieses ab!
Aufgabe 4 (A∗ -Heuristiken).
Eine admissible Heuristik h für den A∗ ist konsistent, wenn die Dreiecksungleichung wie folgt erfüllt ist:
Für alle Knoten n gilt die folgende Beziehung für alle ihre Nachfolgerknoten n’: h(n) ≤ h(n0 )+c(n, n0 ). Hierbei
gibt c(n, n0 ) die Kosten für einen Schritt von Knoten n zum Knoten n0 an (beide repräsentieren ja benachbarte
Zustände des Problemraums, die Info zu den Schrittkosten entsprechen den Kosten für den Schritt zwischen den
Zuständen im Problemraum).
Erläuterung: Diese Konsistenzbedingung ist durchaus sinnig! Wenn sie z.B. eine Schätzung für n von 15 haben
und die Schrittkosten zu n0 5 betragen, dann macht es keinen Sinn, eine Schätzung von 8 für n0 zuzulassen – die
ursprüngliche Schätzung für n muß bereits mindestens so genau sein (unter der hier sinnvollen Voraussetzung,
dass h admissible ist), wie die Schätzung, die sich aus 8 + 5 = 13 für n ergeben würde. Umgekehrt muß also die
Schätzung für n0 schlechter sein, als wir aus den bereits bekannten Informationen ableiten können: wir wissen,
dass der Weg von n zum Ziel nicht billiger sein kann, als 15 (weil h admissible ist), außerdem wissen wir, dass
es 5 kostet, um von n nach n0 zu kommen – n0 kann also bestenfalls 5 Kosteneinheiten näher am Ziel sein, als n,
also kann es nicht kürzer als 15 − 5 = 10 von n0 zum Ziel sein (wohl aber noch deutlich teuer, wenn nämlich die
Schätzung für n nicht besonders gut war...).
Ihre Aufgabe ist es, eine Funktion h für die Problemstellung auf dem ersten Übungsblatt (Aufgabe 1–3)
anzugeben, die zwar admissible, aber nicht konsistent ist.
Extrapunkte gibt es, wenn ihre heuristischen Werte den A∗ , wenn er auf Wiederholungen achtet, in die
Irre führen!
Aufgabe 5 (Alternative Algorithmen zu A∗ ).
Geben sie die resultierende Knoten-Besuchs-Sequenz für einen der Algorithmen IDA∗ (Folie 18 in den Freiburger
Folien zu informierter Suche) oder RBFS (Folie 19 ebenda) an. Beziehen sie sich dabei auf den Suchbaum auf
Folie 12 der Lösungshinweise zum Blatt 1, verwenden sie insbesondere die angegebenen Knotenbezeichnungen.
Welchen Algorithmus haben sie verwendet? ______
K0,
Hinweis: Beide Algorithmen suchen natürlich nur nach einer (genauer: der optimalen) Lösung! Die Algorithmen
finden sie auch in Kap. 4 von Russell/Norvig.
1
Aufgabe 6 (Branch-and-Bound).
Betrachten Sie das 0-1-Rucksack-Problem:
Sie haben eine Menge G = {1, ..., n} von Gegenständen i, die ein Gewicht w(i) und einen Wert v(i) haben. Sie
haben außerdem einen Rucksack R mit einer maximalen Aufnahmekapazität von wmax .
Sie wollen nun
P eine Teilmenge S ⊆ G der Gegenstände so auswählen, dass sie (1)
P gemeinsam in den Rucksack
passen, also s∈S w(s) ≤ wmax , und (2) den Wert des Rucksacks, also v(R) = s∈S v(s), über alle möglichen
Auswahlen von Teilmengen von G maximieren.
Eine generelle Vorgehensweise ist das sogenannte Branch-and-Bound. Die Grundidee ist, dass man zwar im
Prinzip alle möglichen Kombinationen von Gegenständen überprüft, aber so früh wie möglich Kombinationen
und ihre “Nachfolger” außer acht läßt, wenn man weiß, dass keine Verbesserung eintreten kann oder sie ohnehin
ungültig sein werden.
Im Detail wird wie folgt vorgegangen: wir bauen einen Entscheidungsbaum. Auf jeder Ebene entscheiden wir
darüber, ob ein Gegenstand in den Rucksack aufgenommen wird oder eben nicht.
Gegenstand
Gewicht
Wert
1
10
60
2
20
100
3
30
115
Mit diesem Beispiel (wmax ist übrigens 50) ergibt sich ein Baum “denkbarer” Kombinationen, s. unten.
Jetzt bewerten wir jeden Knoten mit zwei Zahlen: (1) Die erste Zahl gibt an, wieviel an Wert wir noch erreichen
können, wenn wir unterstellen, dass wir alle Gegenstände, die wir noch nicht angeschaut haben, noch aufnehmen
werden (dabei ignorieren wir die Kapazitätsbeschränkung!). (2) Die zweite Zahl gibt an, wieviel an Kapazität
noch zur Verfügung steht.
K0:Leer [275,50]
(Ja) | (Nein)
Gegenstand 1?
----------------------------------|
|
K1:{1} [275,40]
K2:Leer [215,50]
(Ja) |
(Nein)
(Ja) | (Nein)
Gegenstand 2?
--------------------------------|
|
|
|
K3:{1,2} [275,20] K4:{1} [
]
K5:{2} [
]
K6:Leer [
]
J
|
N
J
|
N
J
|
N
J
|
N
Gegenstand 3?
-------------------------------------|
|
|
|
|
|
|
|
K7:{1,2,3} K8:{1,2} K9:{1,3} K10:{1} K11:{2,3} K12:{2} K13:{3}
K14:Leer
[
]
[160,20] [
] [
] [
]
[
] [
]
[
]
Zu Beginn können wir “theoretisch” noch alle Gegenstände einpacken, also insgesamt 275 an Wert für den
Rucksack realisieren. Wir haben zudem noch wmax = 50 an Kapazität zur Verfügung. Schauen wir uns zunächst
die erste Entscheidung an. Wenn wir Gegenstand 1 aufnehmen, dann haben wir bereits 60 an Wert realisiert und
weitere 215 können wir bestenfalls noch hinzunehmen, also bleibt unsere Grenze des größten noch erreichbaren
Wertes für diesen Knoten des Baumes bei 275. Die (Rest-)Kapazität hingegen haben wir durch die Aufnahme
von Gegenstand 1 um 10 reduziert (verbleiben also 40). Wenn wir uns gegen die Aufnahme von Gegenstand 1
entscheiden, dann lassen wir einen Wert von 60 aus dem Rucksack heraus, wir können also höchstens noch 215
realisieren. Dafür verbleibt uns aber noch die volle Kapazität.
Mit der gleichen Logik können wir die restlichen Knoten bewerten. Tun Sie das oben direkt im Baum!
2
An den Bewertungen auf unterster Ebene (die Blätter) können wir direkt den realisierten Wert der repräsentierten
Kombination ablesen. Außerdem können wir erkennen, ob die Kombination überhaupt zulässig ist (die Restkapazität darf nicht negativ sein). Das macht natürlich immer noch fürchterlich viel Mühe, weil wir alle Knoten
bewerten müssen!
Wieviele Knoten (inkl. Blätter!) gibt es, wenn es n Gegenstände gibt? _____
Aber: Wir können Teile des Baumes abschneiden! (d.h., wenn wir den Baum nach und nach generieren, dann
werden wir diese Bereiche nie besuchen!)
Hierzu können wir zwei Regeln verwenden:
1. Wenn ein Knoten eine negative Kapazität aufweist, dann brauchen wir ihn nicht weiter zu betrachten. Auch
alle seine Kinder sind uninteressant, denn auch sie hätten negative Kapazität! (Weil unser Beispiel so klein
ist, ist das hier eher unspannend).
2. Angenommen, wir würden den Wert l einer ersten halbwegs ordentlichen Lösung kennen. Wenn die obere
Grenze des erreichbaren Wertes eines Knotens k nicht größer ist als l, dann ist dieser Knoten (und alle
seine Kinder!) uninteressant (und wir können den Baum “beschneiden”).
Welche Expansionsreihenfolge ergibt sich nun, wenn wir mit dem Wurzelknoten beginnen, und dann jeweils
den momentan vielversprechendsten Knoten zuerst expandieren (und dabei die erste Regel beachten) und dessen
Kinder in eine PQueue, also eine geordnete Liste, einstellen. Bedenken Sie: Knoten werden nur expandiert, wenn
ihr “Wert” (also der bestenfalls noch erreichbare Wert) größer als die aktuelle Grenze ist. Vergessen sie bei ihrem
Vorgehen nicht die Knoten, die sie schon eingestellt haben! Die Grenze werden wir mit 0 beginnen und jeweils
anpassen, wenn wir ein Blatt mit nicht-negativer Restkapazität finden, dessen Wert größer ist, als die momentane
Grenze.
Lösung: (setzen sie die Liste fort)
K0, K
,
3
Aufgabe 7 (Alpha-Beta-Search).
Betrachten sie folgenden kleinen Spielbaum. Tragen Sie zunächst die Bewertungen ein, die sich aus dem MinMaxAlgo für die inneren Knoten ergeben würden.
Streichen Sie dann diejenigen Blätter bzw. Knoten, die sie bei optimaler Vorgehensreihenfolge bei der AlphaBeta-Suche streichen könnten.
Optional: Tragen sie die Alpha und Beta-Werte (initialisiert auf minus bzw. plus ∞ zu Beginn), die beim Aufruf
der inneren Knoten bei der oben gefundenen Reihenfolge gelten, neben den Knoten ein (links den Alpha-Wert,
rechts den Beta-Wert). Folgen sie dabei dem Algorithmus auf Seite 21 des Foliensatzes Games.
Max:
[ ]
|
-------------------------------------|
|
Min:
[ ]
[ ]
|
|
--------------------------------------|
|
|
|
Max:
[ ]
[ ]
[ ]
[ ]
|
|
|
|
--------------------------------------|
|
|
|
|
|
|
|
Min:
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
|
|
|
|
|
|
|
|
--------------------------------------| | | |
| | | |
| | | |
| | | |
| | |
| | |
| |
| | |
6 5 3 2
3 3 3 3
4 5 6 8
9 2 8 1
3 4 2
2 3 4
7 5
9 3 1
4
Herunterladen