Algorithmen
Ein Algorithmus ist eine eindeutige Handlungsvorschrift zur Lösung eines Problems.
Algorithmen bestehen aus endlich vielen, wohldefinierten Einzelschritten.
Was unterscheidet einen Prozessor eines Computers von dem Gehirn eines Menschen?
Geschwindigkeit
Speicher
Präzision
Definition Prozess, Prozessor, Algorithmenschritt?
Prozess: Abarbeitung eines Algorithmus.
Prozessor: Einheit die Prozesse ausführt, die einen Algorithmus abarbeitet
Algorithmenschritt: Ein Schritt in der Abarbeitung des Algorithmuses
Präzise, Endlich, Effektiv, Effizient, Aufwand?
präzise: in einer eindeutigen Sprache abgefasst
endlich: in einer endlichen Form beschrieben
effektiv: die Arbeitsschritte sind tatsächlich ausführbar
effizient: problem mit möglichst wenig Aufwand lösen
Aufwand: Zeit, Speicher, sonstige Ressourcen
Optimaler Algotirhmus: minimaler und maximaler Aufwand sind gleich
Aufwand Fakultät und Fibonacci-Folge
Fakultät:
Fibonacci:
Terminierender Algorithmus
Ein Algorithmus, der nach Ausführung einer endlichen Zahl von Schritten anhält und dann das Ergebnis bestimmt hat, heißt terminierender Algorithmus
ein Algorithmus muss nicht terminieren!
Deterministischer und nicht-deterministischer Algorithmus
Deterministischer Algorithmus:
ist zu jedem Zeitpunkt eindeutig, was als nächses zu tun ist
Nicht-deterministischer Algorithmus:
sind zu einem Zeitpunkt mehrere Folgereaktionen erlaubt, wobei nicht festgelegt ist, welche ausgeführt werden soll
gleiche Eingabe unterschiedliche Ergebnisse
Determiniert:
immer gleiches Ergebnis
auch deterministische Algorithmen (date)
Orakel
bezeichnet eine Offenbarung, die der Beantwortung von Zukunfts- oder Eintscheidungsfragen dient
weiß immer eine Antwort
Antwort ist immer korrekt
Aufwand immer konstant
Randomisierter Algorithmus
verwendet Zufallsbits, um seinen Ablauf zu steuern
findet nicht immer effizient eine Lösung
Las-Vegas-Algorthmen: (Random-Quick-Sort)
nie ein falsches Ergebnis
Monte-Carlo-Algorithmen: (bestimmung π)
liefern auch falsche Ergebnisse
Qualität durch obere Schranke für die Fehlerwahrscheinlichkeit bestimmt
Aufwandsklassen
Wofür stehen A, i und Di, t?
Charakterisieren Sie die Klassen P, NP und EXPTime!
P: hochstens polynomialen Aufwand (Suchalgorithmen)
EXPTime: höchstens exponentieller Aufwand (Türme von Hanoi)
NP: Nichtdeterministisch polynomial exponentieller Aufwand (Handlungsreisender, N!)
Backtracking?
Problemlösungsmethode innerhalb der Algorithmik.
“trial and error” Prinzip
erreichte Teillösung zu einer Gesamtlösung auszubauen
letzten Schritte zurückgenommen, wenn absehbar, dass es nicht klappt -> neue Wege
Zuletzt geändertvor einem Jahr