• Keine Ergebnisse gefunden

VORLESUNG: ALGORITHMEN UND DATENSTRUKTUREN

N/A
N/A
Protected

Academic year: 2022

Aktie "VORLESUNG: ALGORITHMEN UND DATENSTRUKTUREN"

Copied!
6
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

YZ X W V U TSRQPONMLKJIHGFEDCBA9876

5 4 23 1 0 4C T S P V 6O0EKJ5Z2I1HRD8QGY9U3FAM7NBWLX

VORLESUNG: ALGORITHMEN UND DATENSTRUKTUREN

Eine Einführung

26. März 2014

Prof. Dr. Steffen Reith

Studienbereich Angewandte Informatik HochschuleRheinMain

TERMINE

Vorlesung: Donnerstag1415-1545im Hörsaal B002 PraktikaWirtschaftsinformatik:

Mo 1145-1315 Gruppe A Werntges C413 Di 1145-1315 Gruppe B Werntges C413 Do 1000-1130 Gruppe C Werntges C213 PraktikaAngewandte Informatik:

Di 815-945 Gruppe A Kaiser C213 Di 1000-1130 Gruppe B Kaiser C213 Mi 1145-1315 Gruppe C Igler C001 Do 815-945 Gruppe D Reith C213 Do 1145-1315 Gruppe E Reith C213 Do 1145-1315 Gruppe F Reith C001

2

ÜBER DEN DOZENTEN

→ Prof. Dr. Steffen Reith, geboren ja1968, verheiratet, ein Kind

→ Seit Sommersemester 2006 an der Hochschule RheinMain

→ Vorher: Softwareentwickler für kryptographische und mathematische Algorithmen für tief eingebettete System in KFZs.

→ Spezialgebiete: Komplexitätstheorie, Logik in der Informatik, Kryptographie und Zahlentheorie / Algebra

→ Bachelorarbeiten: z.B. Kryptographie, Mathematik, (parallele) Algorithmen und theoretische Informatik

EMail:

Steffen.Reith@hs-rm.de Skype:

Steffen.Reith

Büro:

Raum C202

Sprechstunde nach Vereinbarung (EMail) oder via Skype

3

WEITERE INFORMATIONEN ZUR VORLESUNG

Webseite:http://www.cs.hs-rm.de/~reith Literatur:

→ Gunter Saake und Kai-Uwe Sattler, Algorithmen und Datenstrukturen, dpunkt.verlag, 2005

→ Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest und Clifford Stein, Introduction to Algorithms, MIT Press, 2001

→ Robert Sedgewick, Algorithmen in C, Addison-Wesley, 1997

→ Uwe Schöning, Algorithmik, Spektrum Verlag, 2001

4

Notizen

Notizen

Notizen

Notizen

(2)

WEITERE INFORMATIONEN ZUR VORLESUNG (II) Ersatztermine:

Werden dienstags stattnden Skript:

Wird in unregelmäßigen Abständen auf der Webseite der Vorlesung veröffentlicht (Eine alte Variante steht bereits auf der Webseite zur Verfügung). user: algo / pw: fun

Folien:

Einzelne (kleine) Teile der Vorlesung werden in Folienform zur Verfügung stehen. Folien, die vom Skript abweichen, werden auf der Webseite (nachträglich) zur Verfügung stehen.

Eine eigene Mitschrift sollteangefertigtwerden!

5

LERNEN

Ein Student von Euklid fragte:”Aber was werde ich davon haben, wenn ich all' dies gelernt habe?“

Euklid rief seinen Sklaven und sagte ihm

”Gib ihm drei Oboli, der Mann muss etwas davon haben, dass er was lernt.“

6

EIN ROTER FADEN

In der Vorlesung werden die folgenden Themen untersucht:

1. Grundlagen und Notationen

2. Die Korrektheit von Algorithmen - ein Beispiel 3. Suchen

4. Insertion Sort, Laufzeitanalyse und die O-Notation 5. Merge Sort

6. Eine untere Schranke für Sortierverfahren 7. Andere Sortierverfahren

8. Dyn. Datenstrukturen - Stacks, Warteschlangen und Listen 9. Bäume & Algorithmen zur Traversierung

10. AVL - Bäume 11. Hashing

12. Graphenalgorithmen 13. Grundlagen der P/NP-Theorie

7

SPIELREGELN

→ Rechnerund Handys sind zu Beginn der Veranstaltungaus

→ Wir (Dozent + Hörer) sindpünktlich

→ Esredet nur eine Person

→ Bei Fragen und Problemensofort melden / fragen

→ Es wird Eigeninitiative und selbstständiges Arbeiten erwartet

→ Eine Vorlesung ist keine (wöchentliche) Fernsehserie!

→ Eine Vorlesung wird vonden Hörern und vom Dozenten gestaltet

→ aktive Mitarbeit erwünscht und erforderlich

→ Der Dozent will motiviert werden

→ Umfangreiche Vor- und Nachbereitung notwendig

→ Lernen nur kurz vor der Klausur ist tödlich! (kontinuierliches Lernen)

→ Vergessen Sie den (angeblichen) Konikt von Theorie und Praxis

Was wünschen Sie sich?

Notizen

Notizen

Notizen

Notizen

(3)

PRAKTIKUM

Start des Praktikums: heute geht es los

→ Auf der Webseite zur Vorlesung werden Siejede Woche Aufgabenblätter für das Praktikum nden.

→ In jeder Praktikumsstunde werden ca. dreizufällig

ausgewählteTeilnehmer ihre Lösungen vorstellen und Noten erhalten.

→ AI verwendetCals Programmiersprache. IDEs sind verboten!

Wählen Sie einen Editor nach Ihrem Geschmack. Übersetzt wird mit Hilfe von Shellkommandos oder Makeles.

→ WI verwendetRuby. Näheres erläutert Herr Werntges.

Regelmäßige Anwesenheit im Praktikum ist erforderlich! (75% Regel)

9

WAS IST EIN ALGORITHMUS?

Denition”Algorithmus“(informell): Ein Algorithmus ist eine eindeutige (Berechnungs-)Vorschrift, die beschreibt wie man Eingabeobjekte in Ausgabeobjekte umwandelt.

"Kochen harter Eier nach P. Bocuse (1977)":

1. In einem ausreichend großen Topf Wasser zum Kochen bringen

2. Das Ei in ein Sieb mit groben Löchern legen 3. Das Sieb in das kochende Wasser legen

4. Wenn das Ei mittelgroß ist, dann9Minuten kochen 5. Wenn das Ei groß ist, dann10Minuten kochen 6. Sieb aus dem kochenden Wasser nehmen 7. Sieb in kaltes Wasser tauchen

10

WAS IST EIN ALGORITHMUS? (II)

"Berechnen des größten gemeinsamen Teilers nach Euklid (ca. 300 v. Chr.)":

Eingaben: Zwei Zahlenaundb

1. Wennagrößer alsb, dann tausche beide Zahlen 2. Teileb(ganzzahlig) durchamit Restr

3. Setzebauf den Wert vonaundaauf den Wert vonr 4. Istrgrößer0arbeite bei Schritt2weiter

5. Gibbaus (ist der größte gemeinsame Teiler vonaundb) Zusätzlich fordern wir: Eine solche Vorschrift muss von einem mechanischen oder elektronischen Gerät, dem Prozessor, ausgeführt werden können.

11

(BERECHNUNGS-) PROBLEME

Algorithmen lösen (Berechnungs-)Probleme. Um solche Probleme formal besser darstellen zu können, benutzen wir folgende Notation:

Problem: EIERKOCHEN Eingabe: Ein Ei

Ausgabe: Ein hartgekochtes Ei Problem: GGT

Eingabe: Zwei natürliche Zahlenaundb

Ausgabe: Der größte gemeinsame Teiler vonaundb

Eine konkrete Eingabe eines Problems wollen wirInstanznennen.

12

Notizen

Notizen

Notizen

Notizen

(4)

EINIGE ANFORDERUNGEN AN ALGORITHMEN

Ein Algorithmus sollte folgenden Anforderungen genügen:

Endlichkeit- Der Algorithmus muss eineendliche Beschreibung(

”Befehle“) haben.

Determiniertheit- Jeder Eingabewert in den Algorithmus führt zu einemeindeutigen Resultat. Verarbeitet der Algorithmus diesen Wert erneut, so muss er dasgleiche Ergebnis liefern.

Vollständigkeit- Ein Algorithmushältfür jede zulässige Eingabe nachendlich vielen Schrittenan (=terminiert).

Universalität- Alle (zulässigen) Eingabedaten werden korrektverarbeitet.

Nachvollziehbarkeit- Ein Algorithmus muss von Dritten nachvollzogen / überprüftwerden können.

13

EINIGE ANFORDERUNGEN AN ALGORITHMEN (II) Erfüllt der Algorithmus von Bocuse diese Eigenschaften?

Endlichkeit- Offensichtlich”ja“, da die Beschreibung aus7 Zeilen besteht.

Determiniertheit-

”Jaein“, da nicht klar ist, ob jedes große Ei wirklich hart gekocht wird.

Vollständigkeit-”Jaein“, da nicht klar ist, ob das Programm hält, denn das Ei bleibt ja im kalten Wasser liegen.

Universalität-

”Nein“, da das Programm nicht mit kleinen Eiern umgehen kann (evtl. kleine Eier nicht als Eingabe zulassen).

Nachvollziehbarkeit-

”Jaein“, da nicht jedem klar ist, was ein

”ausreichend großer Topf“,

”ein Sieb mit großen Löchern“

oder ein”mittelgroßes Ei ist“.

14

EINIGE ANFORDERUNGEN AN ALGORITHMEN (III)

Die meisten Algorithmen des täglichen Lebens genügen unseren Anforderungen nicht!

(vgl.Aufbauanleitungeneines großenschwedischen Möbelhauses)

Um Algorithmenpräzise aufschreibenzu können, brauchen wir spezielle Notationen:

→ ”Pseudocode“- Eine an eine Programmiersprache (bei uns:

C / Ruby) angelehnte (verbale) Beschreibung

→ ”Nassi-Shneiderman Diagramme“- Graphische Darstellung von Algorithmen

Wir werdenalleAlgorithmen mit den im folgenden beschriebenen Grundelementen konstruieren.

Stichwort:Strukturierte Programmierung

15

SEQUENZ

Die einzelnen Teilalgorithmen werden hintereinander in der Reihenfolge ausgeführt, in der sie aufgeschrieben sind:

In Pseudocode:

Anweisung1;

Anweisung2;

Anweisung3;

Als Nassi-Shneiderman Diagramm:

Anweisung 1 Anweisung 2 Anweisung 3

Notizen

Notizen

Notizen

Notizen

(5)

VERZWEIGUNG

Wenn die BedingungBerfüllt ist, so wird der

”ja“-Teilalgorithmus ausgeführt, sonst der

”nein“-Teilalgorithmus.

In Pseudocode:

if (B) then

ja-Teilalgorithmus;

else

nein-Teilalgorithmus;

endif

17

VERZWEIGUNG (II)

Als Nassi-Shneiderman Diagramm:

Teil−

algorithmus

"nein"

Teil−

algorithmus

"ja"

ja nein

B

18

FALLUNTERSCHEIDUNG

Wenn der AusdruckAden Wertiannimmt, dann führen wir den Teilalgorithmusiaus. Wenn kein passender Teilalgorithmusi existiert, dann wird der Teilalgorithmus”default“ausgeführt.

In Pseudocode:

switch (A) { case1:

{Teilalgorithmus1;}

break;

case2:

{Teilalgorithmus2;}

break;

default:

{Default-Teilalgorithmus;}

}

19

FALLUNTERSCHEIDUNG (II)

Als Nassi-Shneiderman Diagramm:

Teil−

algorithmus 1 Teil−

algorithmus 2 Teil−

algorithmus 3 "default"

Teilalgorithmus 1

2

3 default

A

20

Notizen

Notizen

Notizen

Notizen

(6)

ABWEISENDE SCHLEIFE

Solange die BedingungBerfüllt ist, wird der TeilalgorithmusS ausgeführt:

while (B) do TeilalgorithmusS;

endwhile

Als Nassi-Shneiderman Diagramm:

Teilalgorithmus S B

21

NICHT ABWEISENDE SCHLEIFE

Führe den TeilalgorithmusSaus, solange bis die BedingungB nicht mehr zutrifft.

do {

TeilalgorithmusS;

} while (B);

Als Nassi-Shneiderman Diagramm:

Teilalgorithmus S

B

22

ZÄHLSCHLEIFE

Der Schleifenindexiwird vom Startwert zum Endwert inkrementiert, dabei wird der TeilalgorithmusSjedesmal durchlaufen.

for (i = Start to Ende) do TeilalgorithmusS;

endfor

Als Nassi-Shneiderman Diagramm:

Teilalgorithmus S for i = Start To End

23

EIN BEISPIEL

Algorithmus 1: merge-Operation Data: Zwei sortierte FolgenF1undF2

Result: Sortierte FolgeF, bestehend aus Elementen vonF1undF2

F=leere Folge;

while((F1nicht leer) && (F2nicht leer))do

if(Anfangselement vonF1ist kleiner als Anfangselement vonF2) then

t=Anfangselement vonF1; lösche Anfangselement vonF1; else

t=Anfangselement vonF2; lösche Anfangselement vonF2; endhängetanFan;

end

hänge eine evtl. verbliebene Restfolge anFan;

returnF;

Notizen

Notizen

Notizen

Notizen

Referenzen

ÄHNLICHE DOKUMENTE

I Es m¨ ussen alle 3 Pr¨ aferenzen angegeben werden..M. R¨ oger (Universit¨ at Basel) Algorithmen und

Ein (bin¨ arer) min-Heap ist ein vollst¨ andiger bin¨ arer Baum, bei dem gilt, dass der Wert in jedem Knoten kleiner gleich dem Wert seiner beiden Kindern (sofern vorhanden)

I oder besteht aus einem Knoten (genannt Wurzel) sowie maximal 2 Bin¨ arb¨ aumen (den Unterb¨ aumen von T ).. I Bin¨ arb¨ aume haben jede Menge Anwendungen I Unser

Die Operationen Suchen und Einf¨ ugen in einen 2-3 Baum mit N Schl¨ usseln besuchen im schlechtesten Fall log 2 (N) Knoten. R¨ oger (Universit¨ at Basel) Algorithmen und

C2.1 Erreichbarkeit C2.2 K¨ urzeste Pfade C2.3 Azyklische Graphen C2.4 Zusammenhang C2.5 Zusammenfassung.. R¨ oger (Universit¨ at Basel) Algorithmen und Datenstrukturen 2

I Entscheidungsprobleme: Ja/Nein-Antwort gesucht Gegeben gewichteter Graph, Knoten s, t und Zahl K.. Gibt es einen Pfad von s nach t mit Kosten h¨

2-3 Baum wird als bin¨ arer Suchbaum repr¨ asentiert 3-Knoten werden mit speziellen ”roten” links markiert.

I Falls Wurzel erreicht wird, und diese zu 4-Knoten wird, wird diese zu zwei 2-Knoten....