WH: Prozess beim Lösen von Aufgaben (Problemen)

Werbung
WH: Prozess beim Lösen von Aufgaben (Problemen)
Analyse der (informalen) Aufgabe, Identifikation von
I Aufgabenbereich (Kontext)
I Eingabedaten (Typen, mögliche Werte)
I gewünschte Lösung
(Typ, Eigenschaften, Zusammenhang mit Eingabe)
Modellierung (Abstraktion, formale Darstellung) von
I Aufgabenbereich (Kontext)
I Anforderungen an Eingaben
I Anforderungen an Lösungen
Modellierung von Daten
und deren Eigenschaften und Beziehungen zueinander
Entwurf einer Lösungsstrategie für die modellierte Aufgabe
(mit vorhandenen oder neuen Methoden)
Modellierung von Abläufen und deren Eigenschaften
Realisierung der Lösungsstrategie im Modellbereich
Ausführung der Lösungsstrategie im Modellbereich
Übertragung der Lösung vom Modellbereich in die Realität
299
Maschinelle Lösung von Aufgaben
Modellierung Übertragung aller relevanten Informationen von der
Realität in einen Modellbereich (geeignet gewählt) durch
Analyse und Formalisierung der Eigenschaften von
Aufgabenbereich (Kontext): (strukturierte) Daten,
Eigenschaften, Zusammenhänge
Eingabedaten: Typ, mögliche Werte, Einschränkungen
Ausgabedaten (Lösung): Typ und Anforderungen:
Einschränkungen
Zusammenhänge mit den Eingabedaten
Formalisierung in abstrakten Datentypen (ADT)
Lösung der Aufgabe im Modellbereich mit
vorhandenen Methoden, z.B.
SAT-Solver, SW-Bibliotheken
speziellen (eigens entwickelte) Algorithmen
(Realisierung in konkreten Datentypen, Implementierung)
Übertragung der Lösung aus Modellbereich in Realität
300
Modellierungsbeispiel: Winterbekleidung
Kontext (informal):
I
Wenn es kalt ist, trägt Paul immer eine Mütze, einen Schal
oder Handschuhe.
I
Ohne Handschuhe oder Schal trägt er keine Mütze.
I
Mütze und Handschuhe trägt er nie zusammen.
I
Handschuhe und Schal trägt er immer zugleich.
Aufgabe: Beantwortung der folgenden Fragen (mit ja/nein)
Welche der folgenden Aussagen sind semantische Folgerungen
daraus:
I
Bei Kälte trägt er immer seinen Schal.
I
Bei Kälte trägt er immer Handschuhe oder Mütze.
I
Er trägt nie Handschuhe.
301
Modellierungsbeispiel: Winterbekleidung
Idee (Lösungsstrategie): Lösung mit SAT-Solver
Lösungsprozess:
1. Formale Darstellung des Kontext als (aussagenlogische)
Formelmenge
Φ = {m ∨ s ∨ h, ¬(h ∨ s) → ¬m, ¬(m ∧ h), h ↔ s}
2. Formale Darstellung der Aufgabestellungen (Fragen)
ψ1 = s, ψ2 = h ∨ m, ψ3 = ¬h
3. Übersetzung der Folgerungsprobleme Φ |= ψi in
Erfüllbarkeitsprobleme
(Φ |= ψi gdw. Φ ∪ {¬ψi } unerfüllbar)
4. Darstellung von Φ ∪ {¬ψi } als CNF, z.B. für ψ1 = s:
ϕ = (m ∨ h ∨ s) ∧ (¬m ∨ h ∨ s) ∧ (¬m ∨ ¬h) ∧ (¬h ∨ s) ∧ (¬s ∨ h) ∧ (¬s)
5. Darstellung im DIMACS-Format
6. Lösung der Erfüllbarkeitsprobleme mit einem SAT-Solver
7. Übersetzung der Ergebnisse in Antworten auf die Fragen:
unerfüllbar 7→ ja, erfüllbar 7→ nein
302
Algorithmen
(Wiederholung aus LV zu Programmierung)
Algorithmus: in Schritte geordnete Arbeitsvorschrift
I
in einer formalen Beschreibungssprache
I
endlich beschriebene
I
schrittweise ausgeführte
Arbeitsvorschrift
zur Lösung einer (Berechnungs-)Aufgabe,
d.h. zur Transformation einer Eingabe in eine Ausgabe
zur Ausführung eines Algorithmus ist nötig:
Akteur / Maschine, welche die Beschreibungssprache interpretieren
kann
303
Beispiel: Summe der ersten n natürlichen Zahlen
informale Aufgabenstellung:
Addiere alle natürlichen Zahlen von 1 bis n.
Spezifikation (formale Aufgabenbeschreibung, Anforderungen):
N
P
Nachbedingung: Ausgabe s ∈ N mit s = ni=1 i
Vorbedingung: Eingabe n ∈
verschiedene Algorithmen, welche diese Spezifikation erfüllen:
Algorithmus : Summe1
Eingabe : n ∈
Ausgabe : s ∈
N
N
s←0
für jedes i ← 1, . . . , n :
s ←s +i
Algorithmus : Summe2
Eingabe : n ∈
Ausgabe : s ∈
s←
N
N
n(n+1)
2
304
Beispiel: größter gemeinsamer Teiler
Aufgabe: Zu zwei natürlichen Zahlen soll ihr größter gemeinsamer
Teiler (ggT) berechnet werden.
Kontextwissen (Definitionen):
N:t ·k =x
Menge aller gemeinsamen Teiler von x ∈ N und y ∈ N:
T (x, y ) = {t ∈ N | (t|x) ∧ (t|y )}
I größter gemeinsamer Teiler von x ∈ N und y ∈ N
I
t ist Teiler von x:
t | x gdw. ∃k ∈
I
ggT(x, y ) = t
gdw.
((t ∈ T (x, y )) ∧ (∀s ∈ T (x, y )(s|t)))
Spezifikation (Anforderungen):
N, y ∈ N
Nachbedingungen (an Ausgaben): z ∈ N mit z = ggT(x, y )
Vorbedingungen (an Eingaben): x ∈
305
Beispiel: Algorithmus für ggT
(bekannte) Eigenschaften des ggT:
N:
N22 :
N :
∀x ∈
∀(x, y ) ∈
∀(x, y ) ∈
((x > y ) →
ggT(x, x) = x
ggT(x, y ) = ggT(y , x)
(ggT(x − y , y ) = ggT(y , x)))
führen zur Idee des ( einfachen ) Euklidischen Algorithmus:
Algorithmus : Größter gemeinsamer Teiler
N
Eingabe : x ∈ , y ∈
Ausgabe : ggT(x, x)
N
solange x 6= y :
wenn x > y dann
x ←x −y
sonst
y ←y −x
Rückgabe x
306
Struktur von Algorithmen
Konstruktion komplexer Berechnungsvorschriften aus
Grundbausteinen: elementare Algorithmen (Schritte), z.B.
I Zuweisung,
I Aufruf eines Unterprogrammes,
I Ein- oder Ausgabe (Interaktion)
Verknüpfungen von Algorithmen durch
sequentielle Ausführung (nacheinander)
parallelle Ausführung (gleichzeitig, benötigt
mehrere Ausführende, z.B. Prozessoren)
bedingte Ausführung, Alternative (Verzweigung)
wiederholte Ausführung (Schleifen)
rekursive Ausführung
Blöcke , Unterprogramme
(Notation in Struktogramm, Pseudocode, . . . )
307
Algorithmen-Entwicklung
1. Analyse der informalen Aufgabenstellung
2. (formale) Spezifikation:
Was (welche Berechnungsaufgabe) soll gelöst werden?
exakte (formale) Beschreibung der Aufgabe:
I Anforderungen an Eingaben des Algorithmus
I Anforderungen an Ausgaben des Algorithmus
I Zusammenhang zwischen Ein- und Ausgabe
3. Entwurf des Algorithmus:
Wie soll es gelöst werden?
I formale Darstellung der Arbeitsschritte
I zu jedem Schritt:
I
I
I
Was wird getan? (Aktionen, Anweisungen)
Womit wird es getan? (Daten)
Wie geht es weiter? (nächster Schritt)
4. Verifikation:
Nachweis der Korrektheit des Algorithmenentwurfes bzgl. der
Spezifikation
5. Realisierung (Implementierung)
308
Algorithmen – Analyse der Aufgabe
Was soll gelöst werden?
I
ist zu Beginn des Software-Entwicklungsprozesses oft noch
nicht klar,
I
zunächst grober Ansatz,
I
wird schrittweise verfeinert,
formale Darstellung fördert
I
I
I
I
I
Problemverständnis,
Abstraktion (Auswahl relevanter Eigenschaften),
Dokumentation während des Entwicklungsprozesses,
Ideen für Lösungsansätze
309
Algorithmen – Spezifikation
Ausgangspunkt:
Ergebnis:
umgangssprachlich formulierte und oft
ungenaue Aufgabenbeschreibung
exakte und vollständige Definition des
Problemes
Spezifikation einer Berechnungaufgabe:
korrekte formale Beschreibung des Zusammenhanges zwischen
Eingaben und Ausgaben
Spezifikation einer Berechnungsaufgabe enthält
Vorbedingung: Forderung an die Eingaben
Nachbedingung: Forderung an die Ausgaben
310
Beispiel: Minimum-Suche
informale Aufgabenstellung:
Entwurf eines Verfahrens, welches in jeder Folge natürlicher Zahlen das
Minimum findet
formale Spezifikation:
Vorbedingung: Eingabe (x1 , x2 , . . . , xn ) ∈
Nachbedingung: Ausgabe m ∈
I
I
N mit
N∗
∀i ∈ {1, . . . , n} : m ≤ xi und
∃i ∈ {1, . . . , n} : m = xi
aus Spezifikation lässt sich folgender Algorithmus ablesen“:
”
Algorithmus : Minimum
Eingabe : x = (x1 , . . . , xn ) ∈
Ausgabe : m ∈
N
N∗
m ← x1
für jedes i ← 2, . . . , n :
wenn xi < m dann
m ← xi
311
Herunterladen