Algorithmen und Datenstrukturen SS09 · Es wurde im 12. Jahrhundert unter dem Titel “Algoritmi de...
Transcript of Algorithmen und Datenstrukturen SS09 · Es wurde im 12. Jahrhundert unter dem Titel “Algoritmi de...
Algorithmen und Datenstrukturen SS09Foliensatz 1
Michael Brinkmeier
Technische Universitat IlmenauInstitut fur Theoretische Informatik
Sommersemester 2009
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Einiges Vorweg
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Organisatorisches
Hörer: Studierende der Informatik (2. FS) und Ingenieu-rinformatik (4. FS)
Vorlesung: wochentlich Dienstag 13:00-14:30 Uhr, Hu-HS
Übungen: Informatik: wochentlichIngenieurinformatik: 14-tagig
Homepage: http://www.tu-ilmenau.de/fakia/aud_ss09.html
Dort finden Sie Folien, Ubungsblatter usw.
Prüfungsstoff: Vorlesungen und Ubungen
Prüfung: 90 minutige Klausur nach Vorlesungsende undBonusprogramm
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Organisatorisches
Termine der Übungen: Dienstag (G) 15:00-16:30 Uhr, Sr HU 117Dr. Elke Hubel
Mittwoch 11:00-12:30 Uhr, Sr HU 202Dr. Michael Brinkmeier
Mittwoch 15:00-16:30 Uhr, Sr H 1520bDr. Elke Hubel
Donnerstag 15:00-16:30 Uhr, Sr HU 201Dr. Elke Hubel
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Das BonusprogrammZwei 15 minutige Kurzklausuren in der Vorlesung
12. Mai23. Juni
Die in diesen Klausuren gesammelten Punkte werden als 10prozentiger Bonus auf die in der Prufungsklausur erreichten Punkteaufgeschlagen, d.h.
Gesamtpunkte = n +N
10·
n1 + n2
N1 + N2.
n = in der Prufungsklausr erreichte Punkte
N = erreichbare Punkte in der Prufungsklausur
ni = in der i-ten Zwischenklausur erreichten Punkte, i = 1, 2
Ni = erreichbare Punkte in der i-ten Zwischenklausur erreichbaren Punkte,
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Das BonusprogrammZwei 15 minutige Kurzklausuren in der Vorlesung
12. Mai23. Juni
Die in diesen Klausuren gesammelten Punkte werden als 10prozentiger Bonus auf die in der Prufungsklausur erreichten Punkteaufgeschlagen, d.h.
Gesamtpunkte = n +N
10·
n1 + n2
N1 + N2.
n = in der Prufungsklausr erreichte Punkte
N = erreichbare Punkte in der Prufungsklausur
ni = in der i-ten Zwischenklausur erreichten Punkte, i = 1, 2
Ni = erreichbare Punkte in der i-ten Zwischenklausur erreichbaren Punkte,
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Literatur (Auswahl)
G. Schafer, Lehrmaterialien zur Vorlesung”Algorithmen und
Programmierung“, WS 2008/09.Wird vorausgesetzt!
T. Cormen, C. Leiserson, R. Rivest, C. Stein, Introduction to Algorithms,Second Edition, MIT Press 2001.
T. Ottmann, P. Widmayer, Algorithmen und Datenstrukturen, SpektrumAkademischer Verlag, 4. Auflage, 2001
R. Sedgewick, Algorithmen, 2. Auflage, Pearson, 2002
R. H. Guting, S. Dieker, Datenstrukturen und Algorithmen, 2. Auflage,Teubner 2003.
K. Mehlhorn, P. Sanders, Data Structures and Algorithms – A Basic Toolbox,Springer, 2008
U. Schoning, Algorithmik, Spektrum Akademischer Verlag, 2001
M. T. Goodrich, R. Tamassia, Data Structures andAlgorithms in Java, 2. Auflage, Wiley, 2003
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Inhalte
Algorithmen
Analyse und LaufzeitKorrektheit
Einfache Datenstrukturen: Listen, Stacks, Queues, Mengen, Baume
Einfache und balancierte Suchbaume
Hashtabellen
Sortieralgorithmen
Graphen
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Algorithmen und Probleme
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Etymologie des Begriffes “Algorithmus“
Ubersetzung aus www.wikipedia.org
Al-Khwarizmi, ein persischer Astronom und Mathematiker, schrieb825 n.Chr. eine Abhandlung mit dem Titel “Uber das Rechnen mitindischen Ziffern”.Es wurde im 12. Jahrhundert unter dem Titel “Algoritmi de numeroIndorum” ins Lateinische ubersetzt, was wahrscheinlich “Algoritmiuber die Ziffern der Inder“ bedeuten sollte. Dabei war ”Algoritmi“die Ubertragung des Autorennamens in das Lateinische;Aber Leser, die den Titel mißverstanden, behandelten das WortAlgoritmi als lateinischen Plural, was zum Begriff ”Algorithmus“(Latein: algorismus) in der Bedeutung Rechenmethode fuhrte. Das”th“ wurde wahrscheinlich auf Grund einer angenommenen falschenVerwandschaft zu arithmos (Griechisch fur Zahl) eingefugt.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Etymologie des Begriffes “Algorithmus“
Ubersetzung aus www.wikipedia.org
Al-Khwarizmi, ein persischer Astronom und Mathematiker, schrieb825 n.Chr. eine Abhandlung mit dem Titel “Uber das Rechnen mitindischen Ziffern”.Es wurde im 12. Jahrhundert unter dem Titel “Algoritmi de numeroIndorum” ins Lateinische ubersetzt, was wahrscheinlich “Algoritmiuber die Ziffern der Inder“ bedeuten sollte. Dabei war ”Algoritmi“die Ubertragung des Autorennamens in das Lateinische;Aber Leser, die den Titel mißverstanden, behandelten das WortAlgoritmi als lateinischen Plural, was zum Begriff ”Algorithmus“(Latein: algorismus) in der Bedeutung Rechenmethode fuhrte. Das”th“ wurde wahrscheinlich auf Grund einer angenommenen falschenVerwandschaft zu arithmos (Griechisch fur Zahl) eingefugt.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Etymologie des Begriffes “Algorithmus“
Ubersetzung aus www.wikipedia.org
Al-Khwarizmi, ein persischer Astronom und Mathematiker, schrieb825 n.Chr. eine Abhandlung mit dem Titel “Uber das Rechnen mitindischen Ziffern”.Es wurde im 12. Jahrhundert unter dem Titel “Algoritmi de numeroIndorum” ins Lateinische ubersetzt, was wahrscheinlich “Algoritmiuber die Ziffern der Inder“ bedeuten sollte. Dabei war ”Algoritmi“die Ubertragung des Autorennamens in das Lateinische;Aber Leser, die den Titel mißverstanden, behandelten das WortAlgoritmi als lateinischen Plural, was zum Begriff ”Algorithmus“(Latein: algorismus) in der Bedeutung Rechenmethode fuhrte. Das”th“ wurde wahrscheinlich auf Grund einer angenommenen falschenVerwandschaft zu arithmos (Griechisch fur Zahl) eingefugt.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Der Algorithmusbegriff
Algorithmus
Ein Algorithmus ist eine Handlungs-/Rechenvorschrift zur Losung einesProblemes, bzw. zum Erreichen eines Zieles.
Durch diese Definition wird der Begriff Algorithmus mittels zweier intuitiverBegriffe definiert:
Problem
Handlungs-/Rechenvorschrift
Beide Begriffe hangen dabei wesentlich vom betrachteten Kontext ab. Dazugehoren:
die Spezifikation des Problems
die Moglichkeiten der handelnden Instanz/Person
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Der Algorithmusbegriff
Algorithmus
Ein Algorithmus ist eine Handlungs-/Rechenvorschrift zur Losung einesProblemes, bzw. zum Erreichen eines Zieles.
Durch diese Definition wird der Begriff Algorithmus mittels zweier intuitiverBegriffe definiert:
Problem
Handlungs-/Rechenvorschrift
Beide Begriffe hangen dabei wesentlich vom betrachteten Kontext ab. Dazugehoren:
die Spezifikation des Problems
die Moglichkeiten der handelnden Instanz/Person
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Der Algorithmusbegriff
Algorithmus
Ein Algorithmus ist eine Handlungs-/Rechenvorschrift zur Losung einesProblemes, bzw. zum Erreichen eines Zieles.
Durch diese Definition wird der Begriff Algorithmus mittels zweier intuitiverBegriffe definiert:
Problem
Handlungs-/Rechenvorschrift
Beide Begriffe hangen dabei wesentlich vom betrachteten Kontext ab. Dazugehoren:
die Spezifikation des Problems
die Moglichkeiten der handelnden Instanz/Person
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Die Spezifikation von Problemen
Ein (mathematisches) Problem umfasst ublicherweise
eine (moglicherweise unendliche) Menge von Situationen, dieublicherweise durch eine Reihe von Parametern beschrieben werden.
Eine Fragestellung oder eine Aufgabe, die von den Parametern abhangt.
Im Kontext von Computerprogrammen werden haufig die folgendenBezeichnungen verwendet:
Eingabe (Input): Die Belegung der Parameter
Ausgabe (Output): Die Antwort auf die Fragestellung
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Die Spezifikation von Problemen
Ein (mathematisches) Problem umfasst ublicherweise
eine (moglicherweise unendliche) Menge von Situationen, dieublicherweise durch eine Reihe von Parametern beschrieben werden.
Eine Fragestellung oder eine Aufgabe, die von den Parametern abhangt.
Im Kontext von Computerprogrammen werden haufig die folgendenBezeichnungen verwendet:
Eingabe (Input): Die Belegung der Parameter
Ausgabe (Output): Die Antwort auf die Fragestellung
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
BerechnungsproblemeAuf einer sehr abstrakten Ebene ergibt sich die folgende Definition:
Definition (Berechnungsproblem)
Eine Berechnunsproblem P = (I,O, f ) besteht aus
1 eine Menge I von moglichen Eingaben (Inputs, Instanzen)
2 einer Menge O von moglichen Ausgaben (Outputs, Losungen)
3 einer Abbildung f : I → 2O,
wobei 2O die Potenzmenge von O ist, d.h.
2O = X ⊆ O .
Interpretation: Die Elemente in f (x) sind alle moglichen Losungen zurEingabe x ∈ I. Dabei wird berucksichtigt, dass es unter Umstanden mehr alseine Losung gibt.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
BerechnungsproblemeAuf einer sehr abstrakten Ebene ergibt sich die folgende Definition:
Definition (Berechnungsproblem)
Eine Berechnunsproblem P = (I,O, f ) besteht aus
1 eine Menge I von moglichen Eingaben (Inputs, Instanzen)
2 einer Menge O von moglichen Ausgaben (Outputs, Losungen)
3 einer Abbildung f : I → 2O,
wobei 2O die Potenzmenge von O ist, d.h.
2O = X ⊆ O .
Interpretation: Die Elemente in f (x) sind alle moglichen Losungen zurEingabe x ∈ I. Dabei wird berucksichtigt, dass es unter Umstanden mehr alseine Losung gibt.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Beispiele von Problemen
MULT
Eingabe: a, b ∈ Z
Ausgabe: a · b
I = Z2
O = Z
f (x , y) = x · y
MAX
Eingabe: a1, . . . , an ∈ Z
Ausgabe: Ein ai mit ai ≥ aj fur allej = 1, . . . , n.
I = Seq(Z)O = Z
f (x) = ai | ai = maxa1, . . . , an
ARGMAX
Eingabe: a1, . . . , an ∈ Z
Ausgabe: Ein i mit ai ≥ aj fur allej = 1, . . . , n.
I = Seq(Z)O = N
f (x) = i | ai = maxa1, . . . , an
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Beispiele von Problemen
MULT
Eingabe: a, b ∈ Z
Ausgabe: a · b
I = Z2
O = Z
f (x , y) = x · y
MAX
Eingabe: a1, . . . , an ∈ Z
Ausgabe: Ein ai mit ai ≥ aj fur allej = 1, . . . , n.
I = Seq(Z)O = Z
f (x) = ai | ai = maxa1, . . . , an
ARGMAX
Eingabe: a1, . . . , an ∈ Z
Ausgabe: Ein i mit ai ≥ aj fur allej = 1, . . . , n.
I = Seq(Z)O = N
f (x) = i | ai = maxa1, . . . , an
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Beispiele von Problemen
MULT
Eingabe: a, b ∈ Z
Ausgabe: a · b
I = Z2
O = Z
f (x , y) = x · y
MAX
Eingabe: a1, . . . , an ∈ Z
Ausgabe: Ein ai mit ai ≥ aj fur allej = 1, . . . , n.
I = Seq(Z)O = Z
f (x) = ai | ai = maxa1, . . . , an
ARGMAX
Eingabe: a1, . . . , an ∈ Z
Ausgabe: Ein i mit ai ≥ aj fur allej = 1, . . . , n.
I = Seq(Z)O = N
f (x) = i | ai = maxa1, . . . , an
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Entscheidungsprobleme
Falls fur P = (I,O, f )
O = falsch, wahr und
|f (x)| = 1 fur jedes x ∈ I gilt,
spricht man auch von einem Entscheidungsproblem.
Die Bedingungen entsprechen f (x) = wahr oder f (x) = falsch fur allex ∈ I.
PRIM
Eingabe: a ∈ Z
Ist a eine Primzahl?
I = Z O = wahr, falsch
f (x) =
wahr falls x prim ist
falsch sonst
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Entscheidungsprobleme
Falls fur P = (I,O, f )
O = falsch, wahr und
|f (x)| = 1 fur jedes x ∈ I gilt,
spricht man auch von einem Entscheidungsproblem.
Die Bedingungen entsprechen f (x) = wahr oder f (x) = falsch fur allex ∈ I.
PRIM
Eingabe: a ∈ Z
Ist a eine Primzahl?
I = Z O = wahr, falsch
f (x) =
wahr falls x prim ist
falsch sonst
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Entscheidungsprobleme
Falls fur P = (I,O, f )
O = falsch, wahr und
|f (x)| = 1 fur jedes x ∈ I gilt,
spricht man auch von einem Entscheidungsproblem.
Die Bedingungen entsprechen f (x) = wahr oder f (x) = falsch fur allex ∈ I.
PRIM
Eingabe: a ∈ Z
Ist a eine Primzahl?
I = Z O = wahr, falsch
f (x) =
wahr falls x prim ist
falsch sonst
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Ein abstrakter Algorithmusbegriff
Definition (Algorithmus)
P = (I,O, f ) sein ein Berechnungsproblem. Ein (deterministischer)Algorithmus A der P lost ist eine durch einen endlichen Text beschriebeneAbbildung A : I → O mit
A(x) ∈ f (x) fur alle ∈ I.
Dabei ist der Text der A beschreibt im Kontext eines Rechenmodellesgegeben.
Auf den ersten Blick, entspricht die Funktion f von P einem Algorithmus.Jedoch ist die Einschrankung auf endliche Texte und den Kontext einesRechenmodelles wesentlich.
Diese besteht nicht fur die zu berechnende Funktion f von P .
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Ein abstrakter Algorithmusbegriff
Definition (Algorithmus)
P = (I,O, f ) sein ein Berechnungsproblem. Ein (deterministischer)Algorithmus A der P lost ist eine durch einen endlichen Text beschriebeneAbbildung A : I → O mit
A(x) ∈ f (x) fur alle ∈ I.
Dabei ist der Text der A beschreibt im Kontext eines Rechenmodellesgegeben.
Auf den ersten Blick, entspricht die Funktion f von P einem Algorithmus.Jedoch ist die Einschrankung auf endliche Texte und den Kontext einesRechenmodelles wesentlich.
Diese besteht nicht fur die zu berechnende Funktion f von P .
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
RechenmodelleUm ein Problem und eine zugehorige Losungsvorschrift – d.h. einenAlgorithmus – prazise beschreiben zu konnen, muss ein Kontext definiertwerden, der beschreibt . . .
. . . wie die Ein- und Ausgabe reprasentiert werden und
. . . welche Bearbeitungsschritte gemacht werden konnen.
Diesen Kontext liefern uns Rechenmodelle, z.B.:
klassische Arithmetik, Geometrie, Algebra und Logik (Axiomensysteme)
Endliche Automaten (Vorlesung AFS)
Turing-Maschinen (Vorlesung BuK)
Random Access Maschinen (RAM, Vorlesung BuK)
Quantencomputer
. . .
Das Rechenmodell bestimmt dabei wesentlich, wie die Probleme spezifiziertwerden mussen und welche Probleme uberhaupt losbar sind (VorlesungenAFS und BuK).
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
RechenmodelleUm ein Problem und eine zugehorige Losungsvorschrift – d.h. einenAlgorithmus – prazise beschreiben zu konnen, muss ein Kontext definiertwerden, der beschreibt . . .
. . . wie die Ein- und Ausgabe reprasentiert werden und
. . . welche Bearbeitungsschritte gemacht werden konnen.
Diesen Kontext liefern uns Rechenmodelle, z.B.:
klassische Arithmetik, Geometrie, Algebra und Logik (Axiomensysteme)
Endliche Automaten (Vorlesung AFS)
Turing-Maschinen (Vorlesung BuK)
Random Access Maschinen (RAM, Vorlesung BuK)
Quantencomputer
. . .
Das Rechenmodell bestimmt dabei wesentlich, wie die Probleme spezifiziertwerden mussen und welche Probleme uberhaupt losbar sind (VorlesungenAFS und BuK).
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
RechenmodelleUm ein Problem und eine zugehorige Losungsvorschrift – d.h. einenAlgorithmus – prazise beschreiben zu konnen, muss ein Kontext definiertwerden, der beschreibt . . .
. . . wie die Ein- und Ausgabe reprasentiert werden und
. . . welche Bearbeitungsschritte gemacht werden konnen.
Diesen Kontext liefern uns Rechenmodelle, z.B.:
klassische Arithmetik, Geometrie, Algebra und Logik (Axiomensysteme)
Endliche Automaten (Vorlesung AFS)
Turing-Maschinen (Vorlesung BuK)
Random Access Maschinen (RAM, Vorlesung BuK)
Quantencomputer
. . .
Das Rechenmodell bestimmt dabei wesentlich, wie die Probleme spezifiziertwerden mussen und welche Probleme uberhaupt losbar sind (VorlesungenAFS und BuK).
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
AlgorithmenIst ein Rechenmodell spezifiziert, kann ein Algorithmus haufig als Abfolgevon Operationen auf den vorhandenen Daten aufgefasst werden.
Im Allgemeinen haben Algorithmen die folgenden Eigenschaften:
Endlicher Text
Ein Algorithmus fur eine (unendliche) Menge von Eingaben x ∈ I
Hierbei ist die zeitliche Trennung zwischen Formulierung undAusfuhrung zu beachten. Zur Zeit der Formulierung ist die konkreteEingabe nicht bekannt.
Eine eindeutig vorgeschriebene Abfolge von Schritten, wenn die Eingabex bekannt ist (deterministischer Algorithmus)
Wenn der Algorithmus terminiert, muss die Ausgabe auf eine eindeutigdefinierte (und einfache) Weise aus den vorliegenden Daten ablesbar sein
Es ist explizit nicht verlangt, dass der Algorithmus terminiert
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
AlgorithmenIst ein Rechenmodell spezifiziert, kann ein Algorithmus haufig als Abfolgevon Operationen auf den vorhandenen Daten aufgefasst werden.
Im Allgemeinen haben Algorithmen die folgenden Eigenschaften:
Endlicher Text
Ein Algorithmus fur eine (unendliche) Menge von Eingaben x ∈ I
Hierbei ist die zeitliche Trennung zwischen Formulierung undAusfuhrung zu beachten. Zur Zeit der Formulierung ist die konkreteEingabe nicht bekannt.
Eine eindeutig vorgeschriebene Abfolge von Schritten, wenn die Eingabex bekannt ist (deterministischer Algorithmus)
Wenn der Algorithmus terminiert, muss die Ausgabe auf eine eindeutigdefinierte (und einfache) Weise aus den vorliegenden Daten ablesbar sein
Es ist explizit nicht verlangt, dass der Algorithmus terminiert
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
AlgorithmenIst ein Rechenmodell spezifiziert, kann ein Algorithmus haufig als Abfolgevon Operationen auf den vorhandenen Daten aufgefasst werden.
Im Allgemeinen haben Algorithmen die folgenden Eigenschaften:
Endlicher Text
Ein Algorithmus fur eine (unendliche) Menge von Eingaben x ∈ I
Hierbei ist die zeitliche Trennung zwischen Formulierung undAusfuhrung zu beachten. Zur Zeit der Formulierung ist die konkreteEingabe nicht bekannt.
Eine eindeutig vorgeschriebene Abfolge von Schritten, wenn die Eingabex bekannt ist (deterministischer Algorithmus)
Wenn der Algorithmus terminiert, muss die Ausgabe auf eine eindeutigdefinierte (und einfache) Weise aus den vorliegenden Daten ablesbar sein
Es ist explizit nicht verlangt, dass der Algorithmus terminiert
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
AlgorithmenIst ein Rechenmodell spezifiziert, kann ein Algorithmus haufig als Abfolgevon Operationen auf den vorhandenen Daten aufgefasst werden.
Im Allgemeinen haben Algorithmen die folgenden Eigenschaften:
Endlicher Text
Ein Algorithmus fur eine (unendliche) Menge von Eingaben x ∈ I
Hierbei ist die zeitliche Trennung zwischen Formulierung undAusfuhrung zu beachten. Zur Zeit der Formulierung ist die konkreteEingabe nicht bekannt.
Eine eindeutig vorgeschriebene Abfolge von Schritten, wenn die Eingabex bekannt ist (deterministischer Algorithmus)
Wenn der Algorithmus terminiert, muss die Ausgabe auf eine eindeutigdefinierte (und einfache) Weise aus den vorliegenden Daten ablesbar sein
Es ist explizit nicht verlangt, dass der Algorithmus terminiert
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
AlgorithmenIst ein Rechenmodell spezifiziert, kann ein Algorithmus haufig als Abfolgevon Operationen auf den vorhandenen Daten aufgefasst werden.
Im Allgemeinen haben Algorithmen die folgenden Eigenschaften:
Endlicher Text
Ein Algorithmus fur eine (unendliche) Menge von Eingaben x ∈ I
Hierbei ist die zeitliche Trennung zwischen Formulierung undAusfuhrung zu beachten. Zur Zeit der Formulierung ist die konkreteEingabe nicht bekannt.
Eine eindeutig vorgeschriebene Abfolge von Schritten, wenn die Eingabex bekannt ist (deterministischer Algorithmus)
Wenn der Algorithmus terminiert, muss die Ausgabe auf eine eindeutigdefinierte (und einfache) Weise aus den vorliegenden Daten ablesbar sein
Es ist explizit nicht verlangt, dass der Algorithmus terminiert
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
AlgorithmenIst ein Rechenmodell spezifiziert, kann ein Algorithmus haufig als Abfolgevon Operationen auf den vorhandenen Daten aufgefasst werden.
Im Allgemeinen haben Algorithmen die folgenden Eigenschaften:
Endlicher Text
Ein Algorithmus fur eine (unendliche) Menge von Eingaben x ∈ I
Hierbei ist die zeitliche Trennung zwischen Formulierung undAusfuhrung zu beachten. Zur Zeit der Formulierung ist die konkreteEingabe nicht bekannt.
Eine eindeutig vorgeschriebene Abfolge von Schritten, wenn die Eingabex bekannt ist (deterministischer Algorithmus)
Wenn der Algorithmus terminiert, muss die Ausgabe auf eine eindeutigdefinierte (und einfache) Weise aus den vorliegenden Daten ablesbar sein
Es ist explizit nicht verlangt, dass der Algorithmus terminiert
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Das verwendete RechenmodellIm Gegensatz zu spateren Vorlesungen (AFS, BuK), verwenden wir in dieserVorlesung kein explizit formuliertes Rechenmodell.
Stattdessen verwenden wir einen Pseudocode, der an die gangigen hoherenProgrammiersprachen wie z.B. C, C++, Java . . . , angelehnt ist.
Algorithmus MAX
Eingabe: a1, . . . , an ∈ Z
Ausgabe: maxai | i = 1, . . . , n
Daten: x ∈ Z
x ← a1;
fur i = 2, . . . , n tuewenn ai > x dann x ← ai ;
Ende
zuruck x ;
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Das verwendete RechenmodellIm Gegensatz zu spateren Vorlesungen (AFS, BuK), verwenden wir in dieserVorlesung kein explizit formuliertes Rechenmodell.
Stattdessen verwenden wir einen Pseudocode, der an die gangigen hoherenProgrammiersprachen wie z.B. C, C++, Java . . . , angelehnt ist.
Algorithmus MAX
Eingabe: a1, . . . , an ∈ Z
Ausgabe: maxai | i = 1, . . . , n
Daten: x ∈ Z
x ← a1;
fur i = 2, . . . , n tuewenn ai > x dann x ← ai ;
Ende
zuruck x ;
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Das verwendete RechenmodellIm Gegensatz zu spateren Vorlesungen (AFS, BuK), verwenden wir in dieserVorlesung kein explizit formuliertes Rechenmodell.
Stattdessen verwenden wir einen Pseudocode, der an die gangigen hoherenProgrammiersprachen wie z.B. C, C++, Java . . . , angelehnt ist.
Algorithmus MAX
Eingabe: a1, . . . , an ∈ Z
Ausgabe: maxai | i = 1, . . . , n
Daten: x ∈ Z
x ← a1;
fur i = 2, . . . , n tuewenn ai > x dann x ← ai ;
Ende
zuruck x ;
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Analyse von Algorithmen
Im Zusammenhang mit Algorithmen stellen sich zwei wesentliche Fragen:
KorrektheitIst ein gegebener Algorithmus A fur ein Berechnungsproblem P korrekt, d.h.gilt A(x) ∈ f (x) fur alle x ∈ I?
LaufzeitWieviel Zeit benotigt ein ein gegebener Algorithmus A auf einer Eingabe x?
Die Beantwortung dieser beiden Fragen ist einer der Kernbereiche derInformatik.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Analyse von Algorithmen
Im Zusammenhang mit Algorithmen stellen sich zwei wesentliche Fragen:
KorrektheitIst ein gegebener Algorithmus A fur ein Berechnungsproblem P korrekt, d.h.gilt A(x) ∈ f (x) fur alle x ∈ I?
LaufzeitWieviel Zeit benotigt ein ein gegebener Algorithmus A auf einer Eingabe x?
Die Beantwortung dieser beiden Fragen ist einer der Kernbereiche derInformatik.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Analyse von Algorithmen
Im Zusammenhang mit Algorithmen stellen sich zwei wesentliche Fragen:
KorrektheitIst ein gegebener Algorithmus A fur ein Berechnungsproblem P korrekt, d.h.gilt A(x) ∈ f (x) fur alle x ∈ I?
LaufzeitWieviel Zeit benotigt ein ein gegebener Algorithmus A auf einer Eingabe x?
Die Beantwortung dieser beiden Fragen ist einer der Kernbereiche derInformatik.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Analyse von Algorithmen
Im Zusammenhang mit Algorithmen stellen sich zwei wesentliche Fragen:
KorrektheitIst ein gegebener Algorithmus A fur ein Berechnungsproblem P korrekt, d.h.gilt A(x) ∈ f (x) fur alle x ∈ I?
LaufzeitWieviel Zeit benotigt ein ein gegebener Algorithmus A auf einer Eingabe x?
Die Beantwortung dieser beiden Fragen ist einer der Kernbereiche derInformatik.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Ein erster Sortieralgorithmus
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Das Sortierproblem
Das Sortierproblem hat als Parameter die Menge, uber der sortiert werdensoll.
(U, <) sei eine total geordnete Menge, d.h.
fur alle x ∈ U gilt x 6< x (Irreflexivitat)
fur alle x , y , z ∈ U folgt aus x < y udn y < z auch x < z (Transitivitat)
fur alle x , y ∈ U gilt x < y , x = y oder y < x (Totalitat)
Ferner sei
Seq(U) := (a1, . . . , an) | n ∈ N und a1, . . . , an ∈ U
die Menge aller endlichen Folgen (Sequenzen) uber U und
SortSeq(U) := (a1, . . . , an) ∈ Seq(U) | a1 ≤ a2 ≤ · · · ≤ an
die Menge aller sortierten endlichen Folgen uber U.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Das Sortierproblem
Das Sortierproblem hat als Parameter die Menge, uber der sortiert werdensoll.
(U, <) sei eine total geordnete Menge, d.h.
fur alle x ∈ U gilt x 6< x (Irreflexivitat)
fur alle x , y , z ∈ U folgt aus x < y udn y < z auch x < z (Transitivitat)
fur alle x , y ∈ U gilt x < y , x = y oder y < x (Totalitat)
Ferner sei
Seq(U) := (a1, . . . , an) | n ∈ N und a1, . . . , an ∈ U
die Menge aller endlichen Folgen (Sequenzen) uber U und
SortSeq(U) := (a1, . . . , an) ∈ Seq(U) | a1 ≤ a2 ≤ · · · ≤ an
die Menge aller sortierten endlichen Folgen uber U.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Das Sortierproblem
Das Sortierproblem hat als Parameter die Menge, uber der sortiert werdensoll.
(U, <) sei eine total geordnete Menge, d.h.
fur alle x ∈ U gilt x 6< x (Irreflexivitat)
fur alle x , y , z ∈ U folgt aus x < y udn y < z auch x < z (Transitivitat)
fur alle x , y ∈ U gilt x < y , x = y oder y < x (Totalitat)
Ferner sei
Seq(U) := (a1, . . . , an) | n ∈ N und a1, . . . , an ∈ U
die Menge aller endlichen Folgen (Sequenzen) uber U und
SortSeq(U) := (a1, . . . , an) ∈ Seq(U) | a1 ≤ a2 ≤ · · · ≤ an
die Menge aller sortierten endlichen Folgen uber U.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Das Sortierproblem, erste Variante
Sei π eine Permutation der Zahlen 1, . . . , n, dann sei
(a1, . . . , an)π := (aπ(1), . . . aπ(n)).
Damit lasst sich das Sortierproblem uber U folgendermaßen spezifizieren:
Das Sortierproblem uber (U, <)
I = Seq(U)
O = SortSeq(U)
f (a1, . . . , an) ist die Menge aller (b1, . . . , bn) ∈ SortSeq(U) fur die einePermutation π existiert mit (b1, . . . , bn) = (a1, . . . , an)π
(a1, . . . , an) wird durch π sortiert, wenn (a1 . . . , an)π ∈ SortSeq(U).
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Das Sortierproblem, erste Variante
Sei π eine Permutation der Zahlen 1, . . . , n, dann sei
(a1, . . . , an)π := (aπ(1), . . . aπ(n)).
Damit lasst sich das Sortierproblem uber U folgendermaßen spezifizieren:
Das Sortierproblem uber (U, <)
I = Seq(U)
O = SortSeq(U)
f (a1, . . . , an) ist die Menge aller (b1, . . . , bn) ∈ SortSeq(U) fur die einePermutation π existiert mit (b1, . . . , bn) = (a1, . . . , an)π
(a1, . . . , an) wird durch π sortiert, wenn (a1 . . . , an)π ∈ SortSeq(U).
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Das Sortierproblem, erste Variante
Sei π eine Permutation der Zahlen 1, . . . , n, dann sei
(a1, . . . , an)π := (aπ(1), . . . aπ(n)).
Damit lasst sich das Sortierproblem uber U folgendermaßen spezifizieren:
Das Sortierproblem uber (U, <)
I = Seq(U)
O = SortSeq(U)
f (a1, . . . , an) ist die Menge aller (b1, . . . , bn) ∈ SortSeq(U) fur die einePermutation π existiert mit (b1, . . . , bn) = (a1, . . . , an)π
(a1, . . . , an) wird durch π sortiert, wenn (a1 . . . , an)π ∈ SortSeq(U).
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Das Sortierproblem, zweite Variante
Alternativ kann man auch die Permutation als Ausgabe betrachten:
Das Sortierproblem uber (U, <)
I = Seq(U)
O ist die Menge aller Permutationen von Mengen der Form 1, . . . , nmit n ≥ 0.
f (a1, . . . , an) ist die Menge aller Permutationen π mit
(a1, . . . , an)π ∈ SortSeq(U)
Beide Formalisierungen sind aquivalent in dem Sinne, dass jede Losung dereinen Formalisierung eine Losung in der anderen Formalisierung induziert,und umgekehrt (Ubungsaufgabe).
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Das Sortierproblem, zweite Variante
Alternativ kann man auch die Permutation als Ausgabe betrachten:
Das Sortierproblem uber (U, <)
I = Seq(U)
O ist die Menge aller Permutationen von Mengen der Form 1, . . . , nmit n ≥ 0.
f (a1, . . . , an) ist die Menge aller Permutationen π mit
(a1, . . . , an)π ∈ SortSeq(U)
Beide Formalisierungen sind aquivalent in dem Sinne, dass jede Losung dereinen Formalisierung eine Losung in der anderen Formalisierung induziert,und umgekehrt (Ubungsaufgabe).
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Straight Insertion Sort
IdeeFuge ai an der korrekten Stelle in der bereits sortierten Liste a1, . . . , ai−1 ein.
Straight Insertion Sort
Eingabe: Ein Array A[1 . . . n] von Elementen in Z
Ausgabe: Das sortierte Feld A[1 . . . n]
fur i von 2 bis n tuex← A[i];
j← i;
solange j > 1 und x < A[j− 1] tueA[j]← A[j− 1];
j← j− 1;
Ende
A[j]← x;
Ende
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Straight Insertion Sort
IdeeFuge ai an der korrekten Stelle in der bereits sortierten Liste a1, . . . , ai−1 ein.
Straight Insertion Sort
Eingabe: Ein Array A[1 . . . n] von Elementen in Z
Ausgabe: Das sortierte Feld A[1 . . . n]
fur i von 2 bis n tuex← A[i];
j← i;
solange j > 1 und x < A[j− 1] tueA[j]← A[j− 1];
j← j− 1;
Ende
A[j]← x;
Ende
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Die Korrektheit von Straight Insertion Sort
Wir wollen im Folgenden die Korrektheit von Straight Insertion Sortbeweisen, d.h.:
Satz
Straight Insertion Sort sortiert jede Eingabe A[1 . . . n] aufsteigend.
In der Regel muss man zum Beweis der Korrektheit von Algorithmen auf dieDiskrete Mathematik zuruckgreifen.
Wesentliche Techniken sind dabei:
Die Vollstandige Induktion bei Schleifen
Die Wertverlaufsinduktion bei rekursiven Prozeduren
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Die Korrektheit von Straight Insertion Sort
Wir wollen im Folgenden die Korrektheit von Straight Insertion Sortbeweisen, d.h.:
Satz
Straight Insertion Sort sortiert jede Eingabe A[1 . . . n] aufsteigend.
In der Regel muss man zum Beweis der Korrektheit von Algorithmen auf dieDiskrete Mathematik zuruckgreifen.
Wesentliche Techniken sind dabei:
Die Vollstandige Induktion bei Schleifen
Die Wertverlaufsinduktion bei rekursiven Prozeduren
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Die Korrektheit von Straight Insertion Sort
Wir wollen im Folgenden die Korrektheit von Straight Insertion Sortbeweisen, d.h.:
Satz
Straight Insertion Sort sortiert jede Eingabe A[1 . . . n] aufsteigend.
In der Regel muss man zum Beweis der Korrektheit von Algorithmen auf dieDiskrete Mathematik zuruckgreifen.
Wesentliche Techniken sind dabei:
Die Vollstandige Induktion bei Schleifen
Die Wertverlaufsinduktion bei rekursiven Prozeduren
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Die Korrektheit von Straight Insertion Sort
Satz
Straight Insertion Sort sortiert jede Eingabe A[1 . . . n] aufsteigend.
Der Satz ist ein Korollar des folgenden Lemma:
Lemma
Nach dem Durchlauf mit i = k, enthalt A[1 . . .k ] die ersten k Elemente der
Eingabe in aufsteigender Reihenfolge.
Beweis
Wir beweisen das Lemma mittels vollstandiger Induktion uber k .
Induktionsanfang: i = 1, d.h. vor dem ersten Durchlauf. Zun diesemZeitpunkt ist A[1 . . . 1] offensichtlich sortiert.
. . .
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Die Korrektheit von Straight Insertion Sort
Satz
Straight Insertion Sort sortiert jede Eingabe A[1 . . . n] aufsteigend.
Der Satz ist ein Korollar des folgenden Lemma:
Lemma
Nach dem Durchlauf mit i = k, enthalt A[1 . . .k ] die ersten k Elemente der
Eingabe in aufsteigender Reihenfolge.
Beweis
Wir beweisen das Lemma mittels vollstandiger Induktion uber k .
Induktionsanfang: i = 1, d.h. vor dem ersten Durchlauf. Zun diesemZeitpunkt ist A[1 . . . 1] offensichtlich sortiert.
. . .
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Die Korrektheit von Straight Insertion Sort
Satz
Straight Insertion Sort sortiert jede Eingabe A[1 . . . n] aufsteigend.
Der Satz ist ein Korollar des folgenden Lemma:
Lemma
Nach dem Durchlauf mit i = k, enthalt A[1 . . .k ] die ersten k Elemente der
Eingabe in aufsteigender Reihenfolge.
Beweis
Wir beweisen das Lemma mittels vollstandiger Induktion uber k .
Induktionsanfang: i = 1, d.h. vor dem ersten Durchlauf. Zun diesemZeitpunkt ist A[1 . . . 1] offensichtlich sortiert.
. . .
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Die Korrektheit von Straight Insertion Sort
Satz
Straight Insertion Sort sortiert jede Eingabe A[1 . . . n] aufsteigend.
Der Satz ist ein Korollar des folgenden Lemma:
Lemma
Nach dem Durchlauf mit i = k, enthalt A[1 . . .k ] die ersten k Elemente der
Eingabe in aufsteigender Reihenfolge.
Beweis
Wir beweisen das Lemma mittels vollstandiger Induktion uber k .
Induktionsanfang: i = 1, d.h. vor dem ersten Durchlauf. Zun diesemZeitpunkt ist A[1 . . . 1] offensichtlich sortiert.
. . .
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Die Korrektheit von Straight Insertion Sort
Beweis (Fortsetzung)
Induktionsvoraussetzung: Nach dem Durchlauf mit i = k − 1 istA[1 . . . k − 1] sortiert.
Induktionsschritt: Am Ende der inneren Schleife gilt entweder j = 1 oder
j = mini | 1 ≤ i ≤ k − 1 und A[i ] > x
Gleichzeitig verschiebt die Schleife alle Eintrage A[j . . .i− 1] um einePosition nach rechts.
Falls j der kleinste Index eines Wertes in A[1 . . .k − 1] echt großer x ist,ergibt sich durch Verschieben von A[j . . . k − 1] und Einfugen von x = A[k ]eine sortierte Teilfolge A[1 . . . k ].
Falls j = 1 und A[i ] > x fur alle 1 ≤ i ≤ k − 1, so ergibt sich durch dieVerschiebung und das Einfugen von x = A[k ] an der Position 1 ebenfalls einesortierte Teilfolge.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Die Korrektheit von Straight Insertion Sort
Beweis (Fortsetzung)
Induktionsvoraussetzung: Nach dem Durchlauf mit i = k − 1 istA[1 . . . k − 1] sortiert.
Induktionsschritt: Am Ende der inneren Schleife gilt entweder j = 1 oder
j = mini | 1 ≤ i ≤ k − 1 und A[i ] > x
Gleichzeitig verschiebt die Schleife alle Eintrage A[j . . .i− 1] um einePosition nach rechts.
Falls j der kleinste Index eines Wertes in A[1 . . .k − 1] echt großer x ist,ergibt sich durch Verschieben von A[j . . . k − 1] und Einfugen von x = A[k ]eine sortierte Teilfolge A[1 . . . k ].
Falls j = 1 und A[i ] > x fur alle 1 ≤ i ≤ k − 1, so ergibt sich durch dieVerschiebung und das Einfugen von x = A[k ] an der Position 1 ebenfalls einesortierte Teilfolge.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Die Korrektheit von Straight Insertion Sort
Beweis (Fortsetzung)
Induktionsvoraussetzung: Nach dem Durchlauf mit i = k − 1 istA[1 . . . k − 1] sortiert.
Induktionsschritt: Am Ende der inneren Schleife gilt entweder j = 1 oder
j = mini | 1 ≤ i ≤ k − 1 und A[i ] > x
Gleichzeitig verschiebt die Schleife alle Eintrage A[j . . .i− 1] um einePosition nach rechts.
Falls j der kleinste Index eines Wertes in A[1 . . .k − 1] echt großer x ist,ergibt sich durch Verschieben von A[j . . . k − 1] und Einfugen von x = A[k ]eine sortierte Teilfolge A[1 . . . k ].
Falls j = 1 und A[i ] > x fur alle 1 ≤ i ≤ k − 1, so ergibt sich durch dieVerschiebung und das Einfugen von x = A[k ] an der Position 1 ebenfalls einesortierte Teilfolge.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Die Korrektheit von Straight Insertion Sort
Beweis (Fortsetzung)
Induktionsvoraussetzung: Nach dem Durchlauf mit i = k − 1 istA[1 . . . k − 1] sortiert.
Induktionsschritt: Am Ende der inneren Schleife gilt entweder j = 1 oder
j = mini | 1 ≤ i ≤ k − 1 und A[i ] > x
Gleichzeitig verschiebt die Schleife alle Eintrage A[j . . .i− 1] um einePosition nach rechts.
Falls j der kleinste Index eines Wertes in A[1 . . .k − 1] echt großer x ist,ergibt sich durch Verschieben von A[j . . . k − 1] und Einfugen von x = A[k ]eine sortierte Teilfolge A[1 . . . k ].
Falls j = 1 und A[i ] > x fur alle 1 ≤ i ≤ k − 1, so ergibt sich durch dieVerschiebung und das Einfugen von x = A[k ] an der Position 1 ebenfalls einesortierte Teilfolge.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Laufzeitanalyse
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Laufzeitanalyse
Idee der Laufzeitanalyse
Analysiere die vom Algorithmus A auf Eingabe x benotigte Rechenzeit.
Um die”benotigte Zeit“ abzuschatzen, wird nicht die tatsachlich benotigte
Zeit auf einem realen Rechner gemessen (ware nur mit Experimenten und aufeinzelnen Eingaben moglich), sondern es wird gezahlt wieviele und welche
Elementaroperationen
der Algorithmus auf einer Eingabe benotigt.
Da die genau Zahl von Elementaroperationen unter Umstanden stark von derEingabe abhangt, wird in der Regel versucht, eine obere Schranke inAbhangigkeit von der
Eingabegroße |x |
anzugeben.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Laufzeitanalyse
Idee der Laufzeitanalyse
Analysiere die vom Algorithmus A auf Eingabe x benotigte Rechenzeit.
Um die”benotigte Zeit“ abzuschatzen, wird nicht die tatsachlich benotigte
Zeit auf einem realen Rechner gemessen (ware nur mit Experimenten und aufeinzelnen Eingaben moglich), sondern es wird gezahlt wieviele und welche
Elementaroperationen
der Algorithmus auf einer Eingabe benotigt.
Da die genau Zahl von Elementaroperationen unter Umstanden stark von derEingabe abhangt, wird in der Regel versucht, eine obere Schranke inAbhangigkeit von der
Eingabegroße |x |
anzugeben.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Laufzeitanalyse
Idee der Laufzeitanalyse
Analysiere die vom Algorithmus A auf Eingabe x benotigte Rechenzeit.
Um die”benotigte Zeit“ abzuschatzen, wird nicht die tatsachlich benotigte
Zeit auf einem realen Rechner gemessen (ware nur mit Experimenten und aufeinzelnen Eingaben moglich), sondern es wird gezahlt wieviele und welche
Elementaroperationen
der Algorithmus auf einer Eingabe benotigt.
Da die genau Zahl von Elementaroperationen unter Umstanden stark von derEingabe abhangt, wird in der Regel versucht, eine obere Schranke inAbhangigkeit von der
Eingabegroße |x |
anzugeben.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
ElementaroperationenWas Elementaroperationen sind hangt wesentlich vom Rechenmodell ab.
Im Wesentlichen:
Arithmetische Grundoperationen (Addition, Subtraktion, Multiplikation,Division)
Vergleiche
Sprunge
Zuweisungen
Zeiger- und Indexauswertungen (Speicherzugriff)
Wesentliche Einflusse:
Prozessor
Programmiersprache und Compiler
Hauptspeichertyp
Cachestruktur
. . .
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
ElementaroperationenWas Elementaroperationen sind hangt wesentlich vom Rechenmodell ab.
Im Wesentlichen:
Arithmetische Grundoperationen (Addition, Subtraktion, Multiplikation,Division)
Vergleiche
Sprunge
Zuweisungen
Zeiger- und Indexauswertungen (Speicherzugriff)
Wesentliche Einflusse:
Prozessor
Programmiersprache und Compiler
Hauptspeichertyp
Cachestruktur
. . .
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Elementaroperationen
A← B + C
umfasst im Pseudocode 2 Elementaroperationen - eine Addition und eineZuweisung.
Implementiert man sie in Assembler auf einem x86 Prozessor, ergibt sich:
mov EAX,<B>
add EAX, <C>
mov <A>, EAX
(Naive) Annahme
Jede Elementaroperation im Pseudocode lasst sich mittels einer konstantenAnzahl von Elementaroperationen eines anderen Rechenmodells realisieren.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Elementaroperationen
A← B + C
umfasst im Pseudocode 2 Elementaroperationen - eine Addition und eineZuweisung.
Implementiert man sie in Assembler auf einem x86 Prozessor, ergibt sich:
mov EAX,<B>
add EAX, <C>
mov <A>, EAX
(Naive) Annahme
Jede Elementaroperation im Pseudocode lasst sich mittels einer konstantenAnzahl von Elementaroperationen eines anderen Rechenmodells realisieren.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Elementaroperationen
A← B + C
umfasst im Pseudocode 2 Elementaroperationen - eine Addition und eineZuweisung.
Implementiert man sie in Assembler auf einem x86 Prozessor, ergibt sich:
mov EAX,<B>
add EAX, <C>
mov <A>, EAX
(Naive) Annahme
Jede Elementaroperation im Pseudocode lasst sich mittels einer konstantenAnzahl von Elementaroperationen eines anderen Rechenmodells realisieren.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Rechenzeit und Elementaroperationen
Zu jeder Elementaroperation op existiert eine Konstante Cop, so dassdas Ausfuhren von op hochstens Zeit Cop benotigt.
Technische Unterschiede des Rechenmodells konnen bei der Festlegungder Konstanten berucksichtigt werden.
Die Konstanten Cop sind in der Regel unbekannt, bzw. werden nichtexplizit genannt.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Rechenzeit und Elementaroperationen
Zu jeder Elementaroperation op existiert eine Konstante Cop, so dassdas Ausfuhren von op hochstens Zeit Cop benotigt.
Technische Unterschiede des Rechenmodells konnen bei der Festlegungder Konstanten berucksichtigt werden.
Die Konstanten Cop sind in der Regel unbekannt, bzw. werden nichtexplizit genannt.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Rechenzeit und Elementaroperationen
Zu jeder Elementaroperation op existiert eine Konstante Cop, so dassdas Ausfuhren von op hochstens Zeit Cop benotigt.
Technische Unterschiede des Rechenmodells konnen bei der Festlegungder Konstanten berucksichtigt werden.
Die Konstanten Cop sind in der Regel unbekannt, bzw. werden nichtexplizit genannt.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Rechenzeit und Elementaroperationen
Definition (Kosten)
kop sei die Anzahl der Ausfuhrungen der Elementaroperation op bei derAusfuhrung eines Algorithmus A auf Eingabe x . Dann sind die Kosten tA(x)von A auf x definiert als
tA(x) :=∑
op
kop(x) · Cop,
wobei uber alle moglichen Elementaroperationen summiert wird.
Die Kosten sind ein ungefahres Maß fur die von A benotigte Rechenzeit.Daher sagt man auch haufig Rechenzeit statt Kosten.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Rechenzeit und Elementaroperationen
Definition (Kosten)
kop sei die Anzahl der Ausfuhrungen der Elementaroperation op bei derAusfuhrung eines Algorithmus A auf Eingabe x . Dann sind die Kosten tA(x)von A auf x definiert als
tA(x) :=∑
op
kop(x) · Cop,
wobei uber alle moglichen Elementaroperationen summiert wird.
Die Kosten sind ein ungefahres Maß fur die von A benotigte Rechenzeit.Daher sagt man auch haufig Rechenzeit statt Kosten.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Worst- und Best-Case
DefinitionWorst- und Best-Case-Kosten A sei ein Algorithmus mit Eingabemenge I.Ferner sei fur n ∈ N
In := x ∈ I | |x | = n .
Die Worst-Case-Kosten von A sind
TA(n) := max tA(x) | x ∈ In
und die Best-Case-Kosten sind
TA,best(n) := min tA(x) | x ∈ In
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Eine vorlaufige VereinfachungUm die Kosten, bzw. die Rechenzeit von Straight Insertion Sortabzuschatzen, machen wir eine – vorlaufige – Vereinfachung:
Die Konstanten Cop fur die Laufzeit der Elementaroperationen sind allegleich, d.h.
Cop = C fur alle op
Alternativ, konnen wir die Cop durch die großte Konstante abschatzen:
C := max
Cop | op ist eine Elementaroperation
Mit diesen Vereinfachungen ergeben sich die Kosten als
tA(x) = C ·∑
op
kop = C ·#Elementaroperationen
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Eine vorlaufige VereinfachungUm die Kosten, bzw. die Rechenzeit von Straight Insertion Sortabzuschatzen, machen wir eine – vorlaufige – Vereinfachung:
Die Konstanten Cop fur die Laufzeit der Elementaroperationen sind allegleich, d.h.
Cop = C fur alle op
Alternativ, konnen wir die Cop durch die großte Konstante abschatzen:
C := max
Cop | op ist eine Elementaroperation
Mit diesen Vereinfachungen ergeben sich die Kosten als
tA(x) = C ·∑
op
kop = C ·#Elementaroperationen
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Eine vorlaufige VereinfachungUm die Kosten, bzw. die Rechenzeit von Straight Insertion Sortabzuschatzen, machen wir eine – vorlaufige – Vereinfachung:
Die Konstanten Cop fur die Laufzeit der Elementaroperationen sind allegleich, d.h.
Cop = C fur alle op
Alternativ, konnen wir die Cop durch die großte Konstante abschatzen:
C := max
Cop | op ist eine Elementaroperation
Mit diesen Vereinfachungen ergeben sich die Kosten als
tA(x) = C ·∑
op
kop = C ·#Elementaroperationen
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Die Laufzeit von Straight Insertion Sort
Straight Insertion Sort
Eingabe: Ein Array A[1 . . . n] von Elementen in Z
Ausgabe: Das sortierte Feld A[1 . . . n]
fur i von 2 bis n tuex← A[i];
j← i;
solange j > 1 und x < A[j− 1] tueA[j]← A[j− 1];
j← j− 1;
Ende
A[j]← x;
Ende
wird (n − 1)-mal ausgefuhrt
wird (n − 1)-mal ausgefuhrt
wird n-mal ausgefuhrt
Bis zu (i − 1) Durchlaufe
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Die Laufzeit von Straight Insertion Sort
Straight Insertion Sort
Eingabe: Ein Array A[1 . . . n] von Elementen in Z
Ausgabe: Das sortierte Feld A[1 . . . n]
fur i von 2 bis n tuex← A[i];
j← i;
solange j > 1 und x < A[j− 1] tueA[j]← A[j− 1];
j← j− 1;
Ende
A[j]← x;
Ende
wird (n − 1)-mal ausgefuhrt
wird (n − 1)-mal ausgefuhrt
wird n-mal ausgefuhrt
Bis zu (i − 1) Durchlaufe
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Die Laufzeit von Straight Insertion Sort
Straight Insertion Sort
Eingabe: Ein Array A[1 . . . n] von Elementen in Z
Ausgabe: Das sortierte Feld A[1 . . . n]
fur i von 2 bis n tuex← A[i];
j← i;
solange j > 1 und x < A[j− 1] tueA[j]← A[j− 1];
j← j− 1;
Ende
A[j]← x;
Ende
wird (n − 1)-mal ausgefuhrt
wird (n − 1)-mal ausgefuhrt
wird n-mal ausgefuhrt
Bis zu (i − 1) Durchlaufe
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Die Laufzeit von Straight Insertion Sort
Straight Insertion Sort
Eingabe: Ein Array A[1 . . . n] von Elementen in Z
Ausgabe: Das sortierte Feld A[1 . . . n]
fur i von 2 bis n tuex← A[i];
j← i;
solange j > 1 und x < A[j− 1] tueA[j]← A[j− 1];
j← j− 1;
Ende
A[j]← x;
Ende
wird (n − 1)-mal ausgefuhrt
wird (n − 1)-mal ausgefuhrt
wird n-mal ausgefuhrt
Bis zu (i − 1) Durchlaufe
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Die Laufzeit von Straight Insertion Sort
Die Anweisungen der außeren Schleife ergeben somit
n + 3(n − 1) Elementaroperationen
Die Zahl der Operationen, die wahrend der Durchlaufe der inneren Schleifeausgefuhrt werden, hangt von der Anzahl der Durchlaufe ab.
Im Maximum sind es in der Runde fur i = i genau i − 1 Durchlaufe.ki sei die Anzahl der Durchlaufe der inneren Schleife fur i = i .
Da die innere Schleife auf jeden Fall den letzten Test der Schleifenbedingungbenotigt, ergibt sich die Gesamtzahl der Elementaroperationen als
n + 3 · (n − 1) + (n − 1) + 3 ·n
∑
i=2
ki .
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Die Laufzeit von Straight Insertion Sort
Die Anweisungen der außeren Schleife ergeben somit
n + 3(n − 1) Elementaroperationen
Die Zahl der Operationen, die wahrend der Durchlaufe der inneren Schleifeausgefuhrt werden, hangt von der Anzahl der Durchlaufe ab.
Im Maximum sind es in der Runde fur i = i genau i − 1 Durchlaufe.ki sei die Anzahl der Durchlaufe der inneren Schleife fur i = i .
Da die innere Schleife auf jeden Fall den letzten Test der Schleifenbedingungbenotigt, ergibt sich die Gesamtzahl der Elementaroperationen als
n + 3 · (n − 1) + (n − 1) + 3 ·n
∑
i=2
ki .
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Die Laufzeit von Straight Insertion Sort
Bei naherer Betrachtung der Anzahl der Durchlaufe der inneren Schleife furi = i , stellt man fest, das jedes Element in A[1, . . . i − 1] mit A[j ] > A[i ]einen Durchlauf erzwingt, d.h.
ki = |j | j < i und A[i ] < A[j ]|.
(Ubungsaufgabe)
Notation
Fur eine Menge X sei |X | die Anzahl der Elemente in X .Wir schreiben |X | =∞, wenn X unendlich viele Elemente enthalt.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Die Laufzeit von Straight Insertion Sort
Bei naherer Betrachtung der Anzahl der Durchlaufe der inneren Schleife furi = i , stellt man fest, das jedes Element in A[1, . . . i − 1] mit A[j ] > A[i ]einen Durchlauf erzwingt, d.h.
ki = |j | j < i und A[i ] < A[j ]|.
(Ubungsaufgabe)
Notation
Fur eine Menge X sei |X | die Anzahl der Elemente in X .Wir schreiben |X | =∞, wenn X unendlich viele Elemente enthalt.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Die Laufzeit von Straight Insertion Sort
Der”Worst Case“(schlechtester Fall)
ki = i − 1 fur alle i .
Beispiel: x = (6, 5, 4, 3, 2, 1)
Damit gilt
n∑
i=2
ki =
n∑
i=2
(i − 1) =
n−1∑
i=1
i =n · (n − 1)
2=
(
n
2
)
und die Gesamtzahl der Operationen ist
n + 4 · (n − 1) + 3 ·n · (n − 1)
2=
3
2n2 +
7
2n − 4.
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Die Laufzeit von Straight Insertion Sort
Der”Best Case“(bester Fall)
ki = 0 fur alle i .
Beispiel: x = (1, 2, 3, 4, 5, 6)
Gesamtzahl der Operationen:
n + 4 · (n − 1) = 5n− 4.
Worst Case (zur Erinnerung)
3
2n2 +
7
2n − 4
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Die Laufzeit von Straight Insertion Sort
Der”Best Case“(bester Fall)
ki = 0 fur alle i .
Beispiel: x = (1, 2, 3, 4, 5, 6)
Gesamtzahl der Operationen:
n + 4 · (n − 1) = 5n− 4.
Worst Case (zur Erinnerung)
3
2n2 +
7
2n − 4
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Die Laufzeit von Straight Insertion Sort
Der”Best Case“(bester Fall)
ki = 0 fur alle i .
Beispiel: x = (1, 2, 3, 4, 5, 6)
Gesamtzahl der Operationen:
n + 4 · (n − 1) = 5n− 4.
Worst Case (zur Erinnerung)
3
2n2 +
7
2n − 4
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Laufzeitanalyse
Beobachtungen
Selbst Fur eine feste Implementierung eines Algorithmus A auf einerfesten Maschine und eine feste Eingabegroße n = |x | kann die Zahl derbenotigten Elementaroperationen hochst unterschiedlich sein.
Verschiedene Rechenmodelle oder Rechnerarchitekturen fuhren zuunterschiedlichen Konstanten
Fazit
Der Begriff”Laufzeit von Algorithmus A auf Eingaben x der Große n = |x |“
ist nur sehr eingeschrankt nutzbar.
Deutlich sinnvoller sind die Angaben von oberen und unteren Schranken
Außerdem sollten die konstanten Faktoren nicht berucksichtigt werden.
⇒ asymptotische Notation (O- und Ω-Notationen)
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Laufzeitanalyse
Beobachtungen
Selbst Fur eine feste Implementierung eines Algorithmus A auf einerfesten Maschine und eine feste Eingabegroße n = |x | kann die Zahl derbenotigten Elementaroperationen hochst unterschiedlich sein.
Verschiedene Rechenmodelle oder Rechnerarchitekturen fuhren zuunterschiedlichen Konstanten
Fazit
Der Begriff”Laufzeit von Algorithmus A auf Eingaben x der Große n = |x |“
ist nur sehr eingeschrankt nutzbar.
Deutlich sinnvoller sind die Angaben von oberen und unteren Schranken
Außerdem sollten die konstanten Faktoren nicht berucksichtigt werden.
⇒ asymptotische Notation (O- und Ω-Notationen)
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Laufzeitanalyse
Beobachtungen
Selbst Fur eine feste Implementierung eines Algorithmus A auf einerfesten Maschine und eine feste Eingabegroße n = |x | kann die Zahl derbenotigten Elementaroperationen hochst unterschiedlich sein.
Verschiedene Rechenmodelle oder Rechnerarchitekturen fuhren zuunterschiedlichen Konstanten
Fazit
Der Begriff”Laufzeit von Algorithmus A auf Eingaben x der Große n = |x |“
ist nur sehr eingeschrankt nutzbar.
Deutlich sinnvoller sind die Angaben von oberen und unteren Schranken
Außerdem sollten die konstanten Faktoren nicht berucksichtigt werden.
⇒ asymptotische Notation (O- und Ω-Notationen)
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Laufzeitanalyse
Beobachtungen
Selbst Fur eine feste Implementierung eines Algorithmus A auf einerfesten Maschine und eine feste Eingabegroße n = |x | kann die Zahl derbenotigten Elementaroperationen hochst unterschiedlich sein.
Verschiedene Rechenmodelle oder Rechnerarchitekturen fuhren zuunterschiedlichen Konstanten
Fazit
Der Begriff”Laufzeit von Algorithmus A auf Eingaben x der Große n = |x |“
ist nur sehr eingeschrankt nutzbar.
Deutlich sinnvoller sind die Angaben von oberen und unteren Schranken
Außerdem sollten die konstanten Faktoren nicht berucksichtigt werden.
⇒ asymptotische Notation (O- und Ω-Notationen)
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Laufzeitanalyse
Beobachtungen
Selbst Fur eine feste Implementierung eines Algorithmus A auf einerfesten Maschine und eine feste Eingabegroße n = |x | kann die Zahl derbenotigten Elementaroperationen hochst unterschiedlich sein.
Verschiedene Rechenmodelle oder Rechnerarchitekturen fuhren zuunterschiedlichen Konstanten
Fazit
Der Begriff”Laufzeit von Algorithmus A auf Eingaben x der Große n = |x |“
ist nur sehr eingeschrankt nutzbar.
Deutlich sinnvoller sind die Angaben von oberen und unteren Schranken
Außerdem sollten die konstanten Faktoren nicht berucksichtigt werden.
⇒ asymptotische Notation (O- und Ω-Notationen)
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Laufzeitanalyse
Beobachtungen
Selbst Fur eine feste Implementierung eines Algorithmus A auf einerfesten Maschine und eine feste Eingabegroße n = |x | kann die Zahl derbenotigten Elementaroperationen hochst unterschiedlich sein.
Verschiedene Rechenmodelle oder Rechnerarchitekturen fuhren zuunterschiedlichen Konstanten
Fazit
Der Begriff”Laufzeit von Algorithmus A auf Eingaben x der Große n = |x |“
ist nur sehr eingeschrankt nutzbar.
Deutlich sinnvoller sind die Angaben von oberen und unteren Schranken
Außerdem sollten die konstanten Faktoren nicht berucksichtigt werden.
⇒ asymptotische Notation (O- und Ω-Notationen)
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau
Weiter geht es mit
Asymptotischen Notationen
Algorithmen und Datenstrukturen SS09
M. BrinkmeierTU Ilmenau