Formale Methoden der Informatik WS 2010/2011 46

Werbung
Formale Methoden der Informatik WS 2010/2011
Lehrstuhl für Datenbanken und Künstliche Intelligenz
Prof. Dr. Dr. F. J. Radermacher • H. Ünver • T. Rehfeld • J. Dollinger
9. Aufgabenblatt
Besprechung in den Tutorien vom 12.01.2011 (ab Übungstermin)
bis 19.01.2011 (bis Übungstermin)
46. Aufgabe (4 Punkte) Verständnisfragen:
a) Was besagt die Church’sche-These?
Jeder sinnvolle Berechenbarkeitsbegriff ist äquivalent zur Turingberechenbarkeit bzw.
µ-Rekursion bzw. Algorithmen (mit WHILE-Bedingungen).
Eine (partielle) Funktion f : Nn → N ist genau dann im intuitiven Sinne (partiell) berechenbar, wenn sie (partiell) turing-berechenbar ist.
b) Welche Arten von Komplexitätsbetrachtungen kann man unterscheiden?
Bei der Komplexität eines Algorithmus’ oder eines Programmes kann man nach verschiedenen Kriterien optimieren (die miteinander oftmals konkurrieren und sich teilweise gegenseitig behindern“ oder sogar gegenseitig ausschließen):
”
• Zeitbedarf bzw. Anzahl der Schritte bei der Ausführung (möglichst kurze Dauer)
• Länge des Programmes bzw. der Beschreibung des Verfahrens
(möglichst kurzes Programm)
• Größe des benötigten Speicherbedarfs bzw. Menge der (zwischenzeitlich) zu merkenden Informationen (möglichst wenig Speicher)
c) Worauf bezieht sich immer dieses n bei den Komplexitätsbetrachtungen?
Auf die Anzahl der Datenmenge, die vom Algorithmus bearbeitet wird.
Beispiele:
• beim Dijkstra (kürzester Weg): die Anzahl der Knoten im Graph,
• beim schriftlichen Multiplizieren zweier Zahlen (nach der Schulmethode):
die Länge (Anzahl der Stellen) der Zahlen,
• bei Sortierproblemen: die Anzahl der zu sortierenden Daten,
• bei Suchproblemen: die Anzahl der Daten, in denen gesucht wird.
d) Welche Fälle betrachtet man meistens
(minimaler Aufwand / durchschnittlicher Aufwand / maximaler Aufwand)?
Es gibt in der Tat Betrachtungen zu allen diesen Fällen (und noch einigen weiteren).
• Meist spricht man bei der Komplexität von der sogenannten worst case Komplexität (der schlimmste anzunehmende Fall). Damit hat man eine obere Abschätzung
für den Algorithmus (und meist ist diese Betrachtung auch schon aussagekräftig
genug).
Zur Bestimmung ist häufig eine eher oberflächliche Betrachtung des Algorithmus
und seiner Abläufe bereits ausreichend.
• Bei manchen Algorithmen unterscheidet sich die sogenannte average case Komplexität (durchschnittlicher Aufwand) aber doch deutlich vom schlimmsten anzunehmenden Fall.
Zur Bestimmung ist hier meist eine recht genaue Komplexiätsanalyse notwendig, da
man hier insbesondere die Häufigkeit (und Wahrscheinlichkeit) der im Algorithmus
auftretenden Fälle berücksichtigen muss.
• Eine Minimal-Aufwandsbetrachtung kann manchmal interessant sein, um zu sehen,
wie groß der Aufwand mindestens (bestenfalls) schon sein wird, wird aber eher
selten durchgeführt.
1
e) Was versteht man unter Komplexitätsklassen?
Meist werden keine exakten Angaben z.B. über die genaue Schrittzahl bei einem Verfahren benötigt.
Insbesondere wird (meist) nicht mehr aufgeführt, ob es Bereiche im Algorithmus gibt,
die (für sich genommen) einen höheren oder niedrigeren Aufwand besitzen (immer gemessen an der Datenmenge n).
In solchen Fällen werden die verschiedenen Aufwände“ der Bereiche in eher grobe
”
Klassen unterteilt (z.B. O(n), O(log n), O(n2 ), O(en )), zusammengeworfen“ und der
”
größte Aufwand im Algorithmus überwiegt dann. (siehe auch Aufgabe 50)
f) Wie ermittelt man die Komplexität eines Algorithmus?
Im wesentlichen durch Betrachtung der Struktur des Algorithmus.
• Man Unterteilt den Algorithmus in verschiedene Bereichte:
(vor und nach einer Wiederholungsschleife / innerhalb einer Wiederholungsscheife /
Bereich, der rekursiv aufgerufen wird – und sich deshalb immer wieder wiederholt /
etc.)
• Jeder dieser Bereiche (insbesondere zunächst die innersten“) erhält erstmal eine
”
eigene Bewertung (in O-Notation).
– Sequenz von Anweisungen → konstanter Aufwand = O(1)
– Wiederholungsschleife → Wie oft wird die Schleife (im Verhältnis zu n) wiederholt?
(z.B. n mal – einfache Wiederholung / log n mal – bei Intervall-Teilung)
(man achte auf die Schleifenbedingungen)
Der Aufwand im inneren der Schleife wird mit dieser Anzahl (ausgedrückt
abhängig von n) multipliziert.
Dies gilt insbesondere für geschachtelte Schleifen.
– Rekursion → abhängig von der Art der Rekursion wird der Aufwand des in”
neren“ der Rekursion wieder mit der Anzahl der Wiederholungen multipliziert.
(z.B. lineare Rekursion – n Wiederholungen / baumartige Rekursion – 2n Wiederholungen / Intervall-Teilung – log n Wiederholungen / etc.)
g) Welche Rechenregeln gibt es für die O-Notation?
• O(α · x) = α · O(x) = O(x)
• O(x) · O(y) = O(x · y)
, mit α = const., x = x(n)
, mit x = x(n), y = y(n)
• O(klein) + O(groß) = O(groß)
h) Was ist eine Clique?
Ein vollständiger Untergraph (im Sinne von: alle Knoten sind mit allen anderen Kanten
des Untergraphen verbunden).
2
47. Aufgabe (4 Punkte) Post’sches Korrespondenzproblem:
Man zeige, dass die folgenden post’schen Korrespondenzprobleme eine Lösung haben:
a) (x1 , y1 )
(x2 , y2 )
(x3 , y3 )
= (abba, a),
= (a, aab),
= (ba, b)
2, 2, 3, 1 → aabaabba =
a a ba abba
x2
b) (x1 , y1 )
(x2 , y2 )
(x3 , y3 )
x2
x3
=
x1
aab aab b a
y2
y2
y3
y1
= (aaab, a),
= (b, aab),
= (aaa, ba)
1, 2, 3, 2 → aaabbaaab =
b aaa b
aaab
x1
x2
x3
x2
=
a aab ba aab
y1
y2
y3
y2
48. Aufgabe (6 Punkte) Game of Life:
Geben Sie (ohne Hilfe des Simulators) die nächsten drei Iterationen an unter Angabe der verwendeten Regeln.
1
1
1
2
1
2
3
2
3
1
2
3
4
3
4
3
2
1
1
1
2
3
4
3
2
1
1
1
2
3
3
2
1
4
3
4
3
2
3
2
1
2
1
1
1
1
2
3
2
1
1
2
4
3
4
2
1
2
4
6
5
6
4
2
3
3
5
4
5
3
3
2
4
6
5
6
4
2
1
2
4
3
4
2
1
1
2
3
2
1
a)
Regeln: 1.
2.
3.
4.
Zellen mit nur einem Nachbarn sterben aus
Zellen mit zwei Nachbarn verändern sich nicht
Zellen mit drei Nachbarn kommen neu hinzu
Zellen mit vier oder mehr Nachbarn sterben aus
1
1
1
3
3
2
3
3
4
3
Durch Symmetrie setzt
sich der Ausschnitt fort.
3
1
2
2
1
1
1
2
3
2
1
2
3
3
2
2
2
4
3
2
1
1
2
1
1
1
1
1
b)
1
2
2
1
1
1
2
1
1
2
3
4
3
1
2
1
4
1
2
1
2
2
2
3
5
3
2
2
1
5
2
3
1
2
2
1
1
1
2
3
2
2
1
1
3
1
2
1
1
3
2
1
1
1
1
1
1
1
1
1
1
1
1
1
2
1
2
2
1
2
1
1
1
1
49. Aufgabe (4 Punkte) Komplexität verschiedener Algorithmen:
Geben Sie zu den gegebenen Aufgaben die Komplexität des Problems in O-Notation an:
a) Suchen eines beliebigen Elementes in einer unsortierten Liste (z.B. Zahlen) der Länge n.
O(n)
b) Suchen eines beliebigen Namens im Telefonbuch (mit n Einträgen im Telefonbuch).
Hinweis: Denken Sie an die in der Vorlesung diskutierte Intervall-Teilung.
O(log2 n)
c) Multiplizieren von zwei n-stelligen Zahlen nach der Schulmethode.
O(n2 )
d) Multiplizieren von zwei n × n-Matrizen nach der Schulmethode.
O(n3 )
4
50. Aufgabe (5 Punkte) Komplexität des Travelling Salesman Problems:
Stellen Sie sich einen Aussendienstmitarbeiter vor, der n Kunden nacheinander besuchen soll. Die
Aufgabe soll nun sein, die Reiseroute zu finden, die zu allen Kunden und danach wieder zurück
führt. Für jede Wegstrecke ist deshalb die Entfernung angegeben. Zur Vereinfachung wollen wir
die Bedingungen für die Reiseroute so wählen, dass es zwischen jeweils zwei Kunden immer einen
Weg gibt und dass jeder Kunde nur einmal aufgesucht werden darf. Mit diesen Einschränkungen
haben alle Reiserouten die gleiche Anzahl an Teilstrecken. Als Beispiel sei folgendes Wegenetz mit
Ausgangspunkt(A) und den 5 Kunden (K1 bis K5 ) gegeben.
.................
.
...
...........
...........
....... .............3
.
... .............
.
.
.
.
. ......
.....
...
.
.
.
.
.
................
.
.
.
....
...
...... ........
..
..
...
...
..
..
.....
.....
...
...
... 4.........
... 2.....
..
.
.
.
.
.
.
.
.
............... ...... ..
... ...... ..............
.
.
.
.
.
.. ... ...........
.
.
..
........ ...
.
.
... .. ........
.
.
.
.
...
.
..
... ...
....... .........
......
.
...
.
.........
....
...
...
......
...... ............ .........
... .... .................
......... ... ...
....... ... ........
............. ..........
.
.
. .. .. ..
.... .......... .....
... ........... ....
..
.....
...
...
...
..
...
... 5.....
... 1....
...
..............
...
..
.
..............
.....
.
.
.............
.....
......
.
.
.
.
.
.
.
.
.
... .......
........ ...
.........
..........
...
.
................
.
1
K
7 5
K
3
K
4
4
3
2 K
9
5
3
6
A
3
4
K
6
a) Wieviele Möglichkeiten für gültige Reiserouten gibt es?
Kombinatorische Möglichkeiten:
5! = 5 · 4 · 3 · 2 · 1 = 120
b) Welches ist die optimale Reiseroute? Nach welcher Methode suchen Sie diese?
A → K1 → K5 → K3 → K4 → K2 → A oder rückwärts.
Suchmethode: Alle ausprobieren!
Dies ist die Suche nach der kürzesten Rundreise (Hamiltonkreis im Graphen). Bedauerlicherweise gibt es keinen effizienten Algorithmus, um nach der kürzesten Rundreise
zu suchen (zumindest, wenn man das exakte Ergebnis wünscht — dann hilft eben nur
das systematische Ausprobieren).
c) Wieviele verschiedene Reiserouten gibt es bei 5, 50 und 500 Kunden?
Bei 5 Kunden: (siehe oben) 5! = 120
Bei 50 Kunden: 50! = 30414093201713378043612608166064768844377641568960512000000000000
Bei 500 Kunden 500! =
12201368259911100687012387854230469262535743428031928421924135883858453731538819
97605496447502203281863013616477148203584163378722078177200480785205159329285477
90757193933060377296085908627042917454788242491272634430567017327076946106280231
04526442188787894657547771498634943677810376442740338273653974713864778784954384
89595537537990423241061271326984327745715546309977202781014561081188373709531016
35632443298702956389662891165897476957208792692887128178007026517450776841071962
43903943225364226052349458501299185715012487069615681416253590566934238130088562
49246891564126775654481886506593847951775360894005745238940335798476363944905313
06232374906644504882466507594673586207463792518420045936969298102226397195259719
09452178233317569345815085523328207628200234026269078983424517120062077146409794
56116127629145951237229913340169552363850942885592018727433795173014586357570828
35578015873543276888868012039988238470215146760544540766353598417443048012893831
38968816394874696588175045069263653381750554781286400000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000
d) Was bedeutet das für die Suche nach der optimalen Reiseroute?
Da die Anzahl der zu überprüfenden Reiserouten ziemlich schnell mit n steigt, kann
man die Berechnung nur für kleine n überhaupt durchführen.!
e) Wenn ein Computer heute die Lösung für 50 Kunden in akzeptabler Zeit berechnen könnte,
für wieviele Kunden könnte dann ein um den Faktor 10 schnellerer Computer eine Lösung
mit dem gleichen Algorithmus berechnen?
Auch nur für 50 oder 51.
5
51. Aufgabe (3 Punkte) Reihenfolge verschiedener O-Funktionen:
Gegeben sind folgende Komplexitäten in O-Notation. Bringen Sie diese in die richtige Reihenfolge.
Hinweis: Beachten Sie, welche der Funktionen für sehr große n schneller wachsen.
i.
ii.
iii.
iv.
v.
vi.
vii.
viii.
ix.
x.
xi.
xii.
xiii.
xiv.
O(n2 )
O(en )
O(n)
O(n!)
O(2 · n)
O(n3 )
O(log n)
O(n · log n)
O(1)
O(nn )
O(n9 )
O(1.001n )
O((nn )n )
n
O(n(n ) )
O(1) < O(log n) < O(n) < O(2 · n) < O(n · log n) < O(n2 ) < O(n3 ) < O(n9 ) < O(1.001n ) <
n
O(en ) < O(n!) < O(nn ) < O((nn )n ) < O(n(n )
O(nn·n )
52. Aufgabe (2 Punkte) Partition:
Das Partitionsproblem (auch Zahlenaufteilungsproblem, oft mit Partition notiert) ist ein
Optimierungs- bzw. Entscheidungsproblem der Kombinatorik.
Die Aufgabenstellung beim Partitionsproblem lautet: Gegeben sei eine (Multi-)Menge von (positiven) Zahlen. Gesucht wird eine Aufteilung dieser Zahlen auf zwei Haufen, so dass die Differenz
der Summen der Zahlen in den beiden Haufen möglichst klein ist.
Eine äquivalente Formulierung lautet präziser: Gegeben sei eine (Multi-)Menge A von N positiven
Zahlen ai . Gesucht wird eine Untermenge A1 ⊂ A, so dass
E := ai −
ai ai ∈A1
a1 ∈A\A1 minimal wird. Ist die Summe aller N Zahlen ungerade, so ist die minimale Differenz Emin eins,
ansonsten null. Eine Aufteilung, für die E = Emin ist, heißt perfekte Aufteilung.
Im folgenden sind einige Zahlenfolgen gegeben.
Finden Sie eine perfekte Aufteilung oder begründen Sie, warum keine möglich ist.
a) 3, 7, 11, 12, 14, 17, 20, 23, 31
A = {3, 7, 11, 17, 31} und A1 = {12, 14, 20, 23}
b) 2, 4, 6, 8, 10, 12, 14, 16, 18
Nicht möglich.
Die Gesamtsumme der Folge beläuft sich auf 90. Eine perfekte Aufteilung in zwei Teilmengen müsste jeweils eine Summe von 45 ergeben. Da nur gerade Zahlen zur Verfügung
stehen, ist eine Summe von 45 nicht erreichbar.
Eine mögliche minimale Aufteilung (nicht verlangt) wäre:
A = {16, 12, 10, 4, 2} (Summe = 44) und A1 = {18, 14, 8, 6} (Summe = 46)
6
Herunterladen