Beruflich Dokumente
Kultur Dokumente
Lehrstuhl f
ur Datenbanken und K
unstliche Intelligenz
Klassen unterteilt (z.B. O(n), O(log n), O(n2 ), O(en )), zusammengeworfen und der
gr
ote Aufwand im Algorithmus u
berwiegt dann. (siehe auch Aufgabe 50)
f) Wie ermittelt man die Komplexitat 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 zunachst die innersten) erhalt erstmal eine
= (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
a)
Regeln: 1.
2.
3.
4.
b)
7 5
K
2 K
9
a) Wieviele M
oglichkeiten f
ur g
ultige Reiserouten gibt es?
Kombinatorische M
oglichkeiten:
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
uckwarts.
Suchmethode: Alle ausprobieren!
Dies ist die Suche nach der k
urzesten Rundreise (Hamiltonkreis im Graphen). Bedauerlicherweise gibt es keinen ezienten Algorithmus, um nach der k
urzesten Rundreise
zu suchen (zumindest, wenn man das exakte Ergebnis w
unscht 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
ur die Suche nach der optimalen Reiseroute?
Da die Anzahl der zu u
ufenden Reiserouten ziemlich schnell mit n steigt, kann
berpr
man die Berechnung nur f
ur kleine n u
uhren.!
berhaupt durchf
e) Wenn ein Computer heute die L
osung f
ur 50 Kunden in akzeptabler Zeit berechnen konnte,
f
ur wieviele Kunden k
onnte dann ein um den Faktor 10 schnellerer Computer eine Losung
mit dem gleichen Algorithmus berechnen?
Auch nur f
ur 50 oder 51.
5
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(nnn )