Algorithmen und Datenstrukturen

Ähnliche Dokumente
Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen

AuD: große Übung Christian Scheffer Jan-Marc Reinhardt

Algorithmen und Datenstrukturen II. Arne Schmidt Übung #

Klausur Algorithmen und Datenstrukturen

Klausur Algorithmen und Datenstrukturen

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Klausur Algorithmen und Datenstrukturen

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

INFORMATIK FÜR BIOLOGEN

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Klausur Algorithmen und Datenstrukturen II 29. Juli 2013

Algorithmen und Datenstrukturen

Klausur Algorithmen und Datenstrukturen

Klausur Algorithmen und Datenstrukturen

Klausur Algorithmen und Datenstrukturen II 01. Agust 2016

Klausur Algorithmen und Datenstrukturen

Name:... Vorname:... Matr.-Nr.:... Studiengang:...

Klausur Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen. Große Übung vom Christiane Schmidt

Klausur Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen (für ET/IT)

Übung Algorithmen und Datenstrukturen

Einführung in die Programmierung für NF. Übung

Name:... Vorname:... Matr.-Nr.:... Studiengang:...

1. Die rekursive Datenstruktur Liste

Einführung in die Informatik 1

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen?

2. Algorithmische Methoden 2.1 Rekursion. 18. April 2017

Algorithmen I - Tutorium 28 Nr. 2

Klausur Algorithmen und Datenstrukturen II 10. August 2015

Übung Algorithmen und Datenstrukturen

9. Rekursion. 1 falls n 1 n (n 1)!, andernfalls. Experiment: Die Türme von Hanoi. Links Mitte Rechts. Mathematische Rekursion

Algorithmen und Datenstrukturen 2. Stefan Florian Palkovits, BSc Juni 2016

Kapitel 10. Komplexität von Algorithmen und Sortieralgorithmen

Übung Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

7. Einführung in C++ Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

Algorithmen und Datenstrukturen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Algorithmen und Datenstrukturen

Diskrete Mathematik 1

2. Algorithmenbegriff

Informatikgrundlagen (WS 2016/2017)

Kontrollstrukturen. Verzweigungen Einfache Mehrfache Wiederholungen Eine Sequenz durchlaufen Wiederhole bis Solange. Tue

Informatik 1 (WS 2018/2019)

Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

Übung Algorithmen und Datenstrukturen

Präsenzübung Datenstrukturen und Algorithmen SS 2014

Sortieren & Co. KIT Institut für Theoretische Informatik

Algorithmen & Komplexität

Übung zur Vorlesung Berechenbarkeit und Komplexität

Algorithmen und Datenstrukturen

Kapitel 1 Einleitung. Definition: Algorithmus nach M. Broy: aus: Informatik: Eine grundlegende Einführung, Band 1, Springer-Verlag, Berlin

Auswählen nach Rang (Selektion)

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten.

Folgen und Funktionen in der Mathematik

Theoretische Informatik SS 03 Übung 3

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2

Relationen und DAGs, starker Zusammenhang

15. Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Aufrufstapel, Bau eines Taschenrechners, BNF, Parsen

DAP2 Probeklausur. Matrikelnummer Vorname Nachname. Datum: 24. Juli C. Sohler A. Krivo²ija, A. Rey, H. Sandvoÿ

Student: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum:

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

( )= c+t(n-1) n>1. Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

Vorlesung Datenstrukturen

Der euklidische Algorithmus für ganze Zahlen

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 9, Donnerstag 18.

2. Präsenzübung Datenstrukturen und Algorithmen SS 2014

2. Klausur Datenstrukturen und Algorithmen SS 2014

Asymptotik und Laufzeitanalyse

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität

Organisatorisches. Algorithmen und Datenstrukturen (für ET/IT) Programm heute. Tutorübungen

1 Einführung: Algorithmen. Algorithmen und Datenstrukturen WS 2012/13. Pro f. Dr. Sán do r Fe k e te

Komplexität von Algorithmen:

Algorithmen und Datenstrukturen Übung #4 BFS/DFS, Wachstum von Funktionen

Graphenalgorithmen und lineare Algebra Hand in Hand Prof. Dr. Henning Meyerhenke

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

Lösungsblatt zur Vorlesung. Kryptanalyse WS 2009/2010. Blatt 5 / 9. Dezember 2009 / Abgabe bis spätestens 23. Dezember 2009, 10 Uhr (vor der Übung)

Transkript:

Algorithmen und Datenstrukturen Große Übung #1 Christian Rieck, Arne Schmidt 26.10.2017

Organisatorisches Christian Rieck, Arne Schmidt Große Übung 2

Homepage Aktuelle Informationen, Hausaufgaben, Slides auf: https://www.ibr.cs.tu-bs.de/courses/ws1718/aud/webpages/index.html Anmeldung zu kleinen Übungen über: https://www.ibr.cs.tu-bs.de/courses/ws1718/aud/ Wir nutzen kein StudIP! Christian Rieck, Arne Schmidt Große Übung 3

Anmeldung Anmeldung bis nächsten Donnerstag 20 Uhr. Christian Rieck, Arne Schmidt Große Übung 4

Semesterplan Semesterplan AuD WS17/18 Kl. Übung HA Ausgabe (Mo.-Fr.) (Mo.) Woche (KW) Vorlesung (Di.+Mi.) Gr. Übung (Do.) HA Abgabe (Mo. bis 11:30 Uhr) 42 -,- 43 0,1 1 44 -,2 HA0a*, HA0b* 45 3,4 2 1 HA1 HA0a 46 5,6 2 HA0b 47 7,8 3 HA2 HA1 48 9,10 3 HA1 49 11,12 4 HA3 HA2 50 13,- 4 HA2 51 14,15 5 HA4 HA3 52 Brace yourself: 1 Winter is here! 2 16,17 VL 18** 5 HA3 3 19,20 6 HA5 HA4 4 21,22 VL 23*** 6 HA4 5 24,25 7**** HA5 *: Mündliche Aufgaben, Bearbeitung in ersten kleinen Übungen; keine Bewertung **: Die Vorlesung vom 31.10.2017 wird am 11.01.2018 nachgeholt (Übungsslot). ***: Die Vorlesung vom 13.12.2017 wird am 25.01.2018 nachgeholt (Übungsslot). ****: HA-Blatt 5 wird besprochen. Rückgabe wird über die Mailingliste bekannt gegeben. HA Rückgabe (in kl. UE) Anmeldung zu den kleinen Übungen: Mo., 23.10.17 (0:00 Uhr) - Do., 02.11.17 (20:00 Uhr) Christian Rieck, Arne Schmidt Große Übung 5

Große Übungen Aufarbeitung des Inhalts aus der Vorlesung Mehr interessanter Inhalt Beantwortung von Fragen Interaktionen! Ihr könnt die Übung mitgestalten! Einfach eine Mail mit Fragen/Wünschen an Christian oder Arne. Wir versuchen dann, diese einfließen zu lassen. Christian Rieck, Arne Schmidt Große Übung 6

Hausaufgaben 7 Blätter 2 unbewertet (Blatt0a/Blatt0b) 5 bewertet (Blatt1-5) Je 60 Punkte Insgesamt 300 Punkte Studienleistung: 50% aller Punkte, also 150 Punkte Studienleistung ist keine Vorraussetzung, um an der Prüfung teilzunehmen Studienleistung ist eine Vorraussetzung, um das Modul abzuschließen Christian Rieck, Arne Schmidt Große Übung 7

Hausaufgaben Pt. 2 Zu späte Abgaben: 0 Punkte Falscher Abgabeschrank: 0 Punkte Mit Bleistift oder Rot geschriebene Teile werden nicht gewertet Zusammen arbeiten, ABER: einzeln aufschreiben und abgeben Wichtig: Die Hausaufgaben dienen Euch (und nicht uns) zur Vorbereitung für die Klausur. Abschreiben bringt nichts, da es nicht Eure Fehler sind. Die eigenen Fehler passieren dann in der Klausur! Christian Rieck, Arne Schmidt Große Übung 8

Hausaufgaben Pt. 3 Der Hausaufgabenschrank Christian Rieck, Arne Schmidt Große U bung 9

Klausur Findet statt am 23.02.2018, zwischen 11:00 Uhr und 14:00 Uhr. Nähere Information wie Raumaufteilung Beginn der Klausur werden wenige Tage vorher bekanntgegeben. Christian Rieck, Arne Schmidt Große Übung 10

Mailingliste Anmeldung über Homepage. Sämtliche Ankündigungen werden dort verkündet: Raumänderungen, Ausfälle, etc. Bietet Möglichkeit Fragen zu stellen. Diskussion mit anderen Teilnehmern Gegenseitige Hilfe Hiwis können über die Mailingliste erreicht werden. Christian Rieck, Arne Schmidt Große Übung 11

Fragen! Stellt Eure Fragen: über die Mailingliste in: Vorlesung, Gr. Übung, Kl. Übungen Euren Tutoren Sprechstunde von Christian Rieck (Di. 08:30-09:30 Uhr) Sprechstunde von Arne Schmidt (Mo. 09:30-10:30 Uhr) Per Mail an Christian oder Arne Sprechstunde von Prof. Sándor Fekete (Mi. 13:15-14:00 Uhr) Christian Rieck, Arne Schmidt Große Übung 12

Fragen? Christian Rieck, Arne Schmidt Große Übung 13

Problem Allgemeine Fragestellung. Meistens formuliert mit: Eingabe: Was ist gegeben? Ausgabe: Was ist gesucht? Lösung eines Problems: Angabe eines Algorithmus. Christian Rieck, Arne Schmidt Große Übung 14

Instanz Eine Problemstellung mit konkreter Eingabe. Lösung einer Instanz: Angabe einer konkreten Ausgabe. Christian Rieck, Arne Schmidt Große Übung 15

Ein Beispiel - Größter Gemeinsamer Teiler Problem ggt: Gegeben: Zwei Zahlen a, b. Gesucht: Der größte gemeinsame Teiler q von zwei Zahlen a und b. Lösung: Euklidischer Algorithmus (dazu gleich mehr) Instanzen: ggt(5, 102); Lösung: 1 ggt(8, 64); Lösung: 8 Christian Rieck, Arne Schmidt Große Übung 16

Beispiel 2 - Fibonacci-Zahlen Definition der Fibonacci-Zahlen: F (0) := 0, F (1) := 1, F (n) := F (n 1) + F (n 2) Problem Fibonacci: Gegeben: Eine Zahl n. Gesucht: Die n-te Fibonacci-Zahl Lösung: Rekursion aufschlüsseln. (Siehe Blatt0a) Instanzen: F (6); Lösung: 8 F (17); Lösung: 1597 F (200); Lösung: 280571172992510140037611932413038677189525 Christian Rieck, Arne Schmidt Große Übung 17

Algorithmus Beschreiben durch: Prosatext Pseudocode Ausführbarkeit Endlichkeit Endliche Ausführzeit Endlicher Speicherbedarf Also nicht: Gib 5 oder 1 aus. Sei F (0) = 0, F (1) = 1, F (2) = 1, F (3) = 2, F (4) = 3, F (5) = 5, F (6) = 8,... Christian Rieck, Arne Schmidt Große Übung 18

Warum Pseudocode? Euklidischer Algorithmus als Text: Solange die Zahl b nicht 0 ist, wählen wir h = a mod b, setzen a auf b und b auf h. Nachdem b = 0, geben wir a zurück Euklidischer Algorithmus als Pseudocode: function euklid(a, b) while b 0 do h a mod b a b b h end while return a end function (Für modulo gilt r = a mod b, sodass a = q b + r für ein q Z gilt mit 0 r < b.) Christian Rieck, Arne Schmidt Große Übung 19

Pseudocode - Bausteine Ausgaben/Rückgaben: print a (Gibt a aus und beendet die Funktion nicht) return a (Gibt a zurück und beendet die Funktion) Christian Rieck, Arne Schmidt Große Übung 20

Pseudocode - Bausteine Zuweisung: a b (Weist a den Wert b zu.) a b + c (Weist a die Summe von b und c zu.) A B (Weist der Menge A die Menge B zu.) Beispiel: function Sum(a, b, c) sum a + b + c A {a, b, c, sum} return A end function Christian Rieck, Arne Schmidt Große Übung 21

Pseudocode - Bausteine Schleifen: for a in start,..., ende do... end for for a b (down)to c do... end for while Bedingung do... end while repeat... until Bedingung Beispiel: function SomeFunction(a, b, c) for a 0 to b do d c repeat a a + b d d 1 until d = 0 end for return a end function Christian Rieck, Arne Schmidt Große Übung 22

Pseudocode - Bausteine Bedingte Anweisung: if Bedingung then Aktionen, falls Bedingung wahr ist else Aktionen, falls Bedingung falsch ist end if Beispiel: function Absolute(a) if a < 0 then a a end if return a end function Christian Rieck, Arne Schmidt Große Übung 23

Pseudocode - Bausteine Methoden: Funktion-Körper: function Name(Param1, Param2,... )... end function Aufruf: Name(a, b,... ) Beispiel: function Absolute(a) if a < 0 then a a end if return a end function function AbsoluteDiff(a, b) return Absolute(a b) end function Christian Rieck, Arne Schmidt Große Übung 24

Pseudocode - Beispiel Problem Sum: Gegeben Zwei Zahlen s und e Gesucht Die Summe von s bis e, oder 0 falls s > e. function Sum(s, e) if s > e then return 0 end if for i s + 1 to e do s s + i end for return s end function Instanz: Berechne die Summe von 4 bis 8, also Sum(4,8) Lösungsschritte: 4 > 8? Nein. Betrachte For-Schleife nach jeder Iteration: i s 5 9 6 15 7 22 8 30 Gib 30 zurück. Christian Rieck, Arne Schmidt Große Übung 25

Pseudocode - Variationen Auf Deutsch Wenn... Dann... Sonst... Solange... Für i 1,..., k... Anstatt schreibt man gelegentlich = Mischung aus Prosa und Pseudocode: function ProsaCode(s) if (Es existiert k Z, sodass 0 < k < s) then Wähle h = 1 else h = 2 end if return s h end function Christian Rieck, Arne Schmidt Große Übung 26

Algorithmenentwurf in Theorie und Praxis (Form.) Beschreibung = Skizze Überlegungen Analyse = Pseudocode (Form.) Beschreibung = Skizze Überlegungen = Pseudocode Experimente = Implementierung = Analyse Christian Rieck, Arne Schmidt Große Übung 27

Ein einfacher Algorithmus für den Logarithmus Betrachten wir den Logarithmus: Gegeben Zwei (ganzzahlige) Zahlen n und b Gesucht Eine (nicht-ganzzahlige) Zahl x, sodass n = b x. Oder kurz: x = log b (n) Einfach ausgedrückt: Wie oft muss man n durch b teilen, damit man auf 1 kommt? Das ist einfach, wenn x ganzzahlig ist: function Log(n, b) Beispiel: Log(64,2) log 0 log n while n > 1 do 0 64 Erhöhe log um 1 1 32 n n/b 2 16 end while 3 8 return log 4 4 end function 5 2 6 1 Christian Rieck, Arne Schmidt Große Übung 28

Ein Algorithmus für den Logarithmus Was passiert, wenn x nicht ganzzahlig sein wird? Problem: Das Ergebnis kann irrational sein. Bestimme den Logarithmus auf k Stellen genau. Exponentieren erlaubt? Wir beschränken uns auf das Exponentieren mit ganzen Zahlen! Damit können wir folgendes tun: Betrachte 10 k log b (n). Das gibt uns k Stellen mehr vor dem Dezimalkomma. Die bekommen wir mit dem alten Algorithmus! Berechne also log b (n (10k ) ): function Log(n, b, k) n n (10k ) log Log(n, b) return log 10 k end function Problem 1: Schon für kleine k treten große Zahlen auf. Problem 2: Der Algorithmus benötigt exponentiell viele Schritte. Christian Rieck, Arne Schmidt Große Übung 29

Mehr zu Logarithmen Algorithmen: Logarithmen lassen sich deutlich schneller präziser berechnen. Beispiele: Taylor-Entwicklung (gibt es in Analysis) Newton-Verfahren (gibt es in Numerik) Diese Verfahren werden wir nicht brauchen. Wir brauchen den Logarithmus beispielsweise für Laufzeiten, z.b. beim Sortieren (Kapitel 5) zum Bestimmen der Höhe eines Baumes (Kapitel 4) Dazu sind folgende Rechenregeln hilfreich: log c (a b) = log c (a) + log c (b) log c (a b ) = b log c (a) log c (a) = log b (a) log b (c) Christian Rieck, Arne Schmidt Große Übung 30