Algorithmen und Berechnungskomplexität I

Ähnliche Dokumente
Logik und diskrete Strukturen

Algorithmen und Berechnungskomplexität I

Theoretische Informatik

Einführung in die Informatik

Einführung in die Praktische Informatik WS 09/10

Einführung in die Programmierung

Vorlesung Berechenbarkeit und Komplexität. Motivation, Übersicht und Organisatorisches

ADS. 1. Vorlesung. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

Informatikgrundlagen (WS 2015/2016)

Algorithmen und Datenstrukturen

Einführung in die Informatik für Nebenfach. Einleitung

Randomisierte Algorithmen

Kombinatorische Optimierung Vorlesung für den Bereich Diplom/Master Informatik

Einführung in die Programmierung

Institut für Programmierung und Reaktive Systeme 24. Juni Programmieren II. 14. Übungsblatt

Informatik II Übung 1 Gruppe 7. Leyna Sadamori

Angewandte Mathematik: Stochastik Prof. Dr. Reinhard Klein

Datenstrukturen, Algorithmen und Programmierung 2

11. Rekursion, Komplexität von Algorithmen

Einführung in die Informatik

Einführung in die Informatik

Theorie der Informatik

Algorithmen und Datenstrukturen CS1017

Algorithmen und Berechnungskomplexität II Prof. Dr. Rolf Klein

Grundlagen der Programmkonstruktion (GPK)

1. Einführung. Was ist ein Algorithmus (eine Datenstruktur)? Welche Probleme kann man damit lösen? Warum betrachten wir (effiziente) Algorithmen?

Institut für Telematik Universität zu Lübeck. Programmieren. Kapitel 0: Organisatorisches. Wintersemester 2008/2009. Prof. Dr.

Einführung in die Programmierung Wintersemester 2016/17

Einführung in die Programmierung

Einführung in die Programmierung

Einführung in die Informatik I (autip)

Automaten und Formale Sprachen

Lineare Algebra und Numerische Mathematik

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Datenstrukturen. Sommersemester Kapitel 1: Motivation / Grundlagen. Steffen Lange

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

Kapitel 0: Organisatorisches

Grundlagen der Modellierung und Programmierung, Übung

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Programmieren in C++

Berechenbarkeit und Komplexität

Komplexität von Algorithmen

Lineare Algebra und Numerische Mathematik

Theoretische Informatik

Praktische Informatik 1

Semantische Bewertung und personalisierte Erzeugung von Übungsaufgaben zu Mathematik, Logik, Informatik

Programmkonstruktion. Herzlich Willkommen zu. 185.A79 Programmkonstruktion (PK) VU, 8.8 ECTS

Organisatorisches. Informatik II Informationen und Daten. Organisatorisches. Organisatorisches. Rainer Schrader. 13. Oktober 2008

Grammatiken und ANTLR

Logik und diskrete Strukturen

Formale Sprachen und Automaten

Webbasierte Programmierung

Einführung in die Informatik 1

Programmierkurs Java

Wintersemester 2010/2011 Rüdiger Westermann Institut für Informatik Technische Universität München

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Mathematik für Studierende der Wirtschaftswissenschaften und Gesundheitsökonomie

Informatik II Übung 1 Gruppe 7

Algorithmen & Datenstrukturen

Algorithmen und Datenstrukturen (AuD) Prof. Dr. Claudia Eckert

Theoretische Informatik Kap 2: Berechnungstheorie

Übungen zu Grundlagen der Logik in der Informatik - WS15/16

Kapitel 3: Untere Schranken für algorithmische Probleme Gliederung

1 Vom Problem zum Programm

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

WS 2009/10. Diskrete Strukturen

Programmieren I. Administratives / Java Installation. Thomas Vetter, Brian Amberg, Andreas Forster. 21. September 2010 UNIVERSITÄT BASEL

Einführung in Berechenbarkeit, Komplexität und formale Sprachen

Ideen der Informatik. Eine Vorlesung für Hörer aller Fakultäten

Grundlagen der Programmierung

Bäume, Suchbäume und Hash-Tabellen

Algorithmik Funke/Bahrdt/Krumpe/Mendel/Seybold SS Übungsblatt 4

Einige Teilgebiete der Informatik

How To: Bachelor SWT. Heiko Geppert. Fachgruppe Informatik

SE Besprechung. Übung 6 Softwaretests

Einführung in die Programmierung Wintersemester 2011/12

Algorithmen und Datenstrukturen

AuD-Tafelübung T-B5b

kontextfreie Grammatiken Theoretische Informatik kontextfreie Grammatiken kontextfreie Grammatiken Rainer Schrader 14. Juli 2009 Gliederung

Advanced Topics of Software Engineering. Organisatorische Hinweise

Überblick. 1 Vorbemerkungen. 2 Algorithmen. 3 Eigenschaften von Algorithmen. 4 Historischer Überblick. Einführung

der Programmierung (2 V + 3 Ü) WS 2014 / 2015 EDV, WS 2014/2015, Prof. Dr.-Ing. Sigrid Wenzel Seite 1

Das Studium im Fach Informatik

Grundlagen der Informatik I (Studiengang Medieninformatik)

Übersicht Datenstrukturen und Algorithmen. Literatur. Algorithmus: Wikipedia Definition. Vorlesung 1: Einführung. Prof. Dr.

Übungsblatt 3: Algorithmen in Java & Grammatiken

Grundlagen der Informatik Bachelor of Arts: Sprache, Kultur, Translation

Technische Informatik Prof. Dr. Joachim Klaus Anlauf

Programmierung 2. Organisatorisches. Sebastian Hack. Klaas Boesche. Sommersemester

Einführung in die Programmierung

Operations Research I

Prof. Dr. Heinrich Müller; Dr. Frank Weichert 7. September 2015

Schulinternes Curriculum für Informatik (Q2) Stand April 2015

Vorlesung Formale Aspekte der Software-Sicherheit und Kryptographie Sommersemester 2015 Universität Duisburg-Essen

Einführung in Berechenbarkeit, Formale Sprachen und Komplexitätstheorie

Die Informatik als junge Wissenschaft

Veranstaltung Pr.-Nr.: Modul Wirtschaftsinformatik für Wirtschaftswissenschaftler. Organisatorisches. Veronika Waue WS 2007/2008

Transkript:

Algorithmen und Berechnungskomplexität I Prof. Dr. Institut für Informatik Wintersemester 2013/14

Organisatorisches Vorlesung Dienstag und Donnerstag, 12:30 14:00 Uhr (HS 1) Übungen 16 Übungsgruppen Anmeldung über Tutorienvergabesystem https://puma.cs.uni-bonn.de/ bis Freitag, den 18.10., um 23:59 Uhr. 2

Dozenten und Tutoren Vorlesung Professor für Theoretische Informatik E-Mail: roeglin@uni-bonn.de Web: http://www.roeglin.org/ Sprechstunde: nach Vereinbarung und nach der Vorlesung Büro: Friedrich-Ebert-Allee 144, E.63 Übungen Organisation: Tobias Brunsch, Clemens Rösner studentische Tutoren: Philipp Bruckschen, Patrick Loka, Yvonne Omlor, Sonja Schäfer, Patrick Seume 3

Übungsblätter und Studienleistung Übungsblätter Ausgabe: Dienstag in der Vorlesung & auf Webseite Abgabe: Dienstag darauf, 12:30 Uhr, Briefkasten Römerstr. Besprechung: in der Woche nach der Abgabe Studienleistung insgesamt mind. 50% der möglichen Punkte (Abgabe in Gruppen mit max. 3 Studenten möglich) Präsentation von 3 (Teil)aufgaben in den Übungen 4

Literatur Zu dieser Vorlesung gibt es ein Skript: http://www.roeglin.org/teaching/ws201 3/AlgoI/AlgoI.pdf Dieses wird während des Semesters kontinuierlich erweitert. Fallen Ihnen Fehler auf oder haben Sie Anregungen und Verbesserungsvorschläge zum Skript, so sagen Sie mir bitte Bescheid. Sekundärliteratur: siehe Skript 5

Algorithmik Algorithmen sind formal definierte Handlungsvorschriften, die von Computern wie ein Rezept zur Lösung eines Problems ausgeführt werden. Dabei wird eine Eingabe in eine Ausgabe transformiert. Eingabe Ausgabe Rezept 91236734982439371 Algorithmus Primzahl ja/nein Algorithmus zum Primzahltest: Bei Eingabe n teste alle Zahlen 2,3,4,,n-1, ob sie Teiler von n sind. Ausgabe: Nein falls Teiler gefunden, sonst Ja. 6

Algorithmik (2) Algorithmen begegnen uns täglich. Navigationsgerät Was ist der kürzeste Wege von A nach B? Online Banking, Einkaufen im Internet Wie werden die Daten ver- und entschlüsselt? Google Suchmaschinen Wie sucht man in einer großen Datenmenge? Paketdienste, Logistikdienstleister In welcher Reihenfolge werden Kunden beliefert? 7

Datenstrukturen Ziel: Korrekte und schnelle Algorithmen. Wichtiges Hilfsmittel: Datenstrukturen. Wie sollen Daten gespeichert werden, um schnelle Ausführung wichtiger Operationen zu ermöglichen? Beispiel: Suchen in einer großen Datenmenge. 8

Lernziele Kenntnis grundlegender Datenstrukturen, Methoden und Algorithmen Fähigkeit, ein gegebenes Problem zu analysieren: Einordnung der Schwierigkeit des Problems Auswahl geeigneter Datenstrukturen und Algorithmen Entwurf von Algorithmen Analyse von Algorithmen 9

Berechenbarkeitstheorie Welche Probleme können von Computern gelöst werden? void foo (int a) { int i = a; while (i!= 10) { i++; } } Es wäre schön, wenn Compilerwarnung: Eine Endlosschleife kann auftreten. Ein Resultat der Berechenbarkeitstheorie besagt: Es gibt keinen Compiler, der automatisch testet, ob ein gegebenes Programm in eine Endlosschleife geraten kann; egal, wie leistungsstark unsere Rechner auch sein mögen. I 10

Komplexitätstheorie Welche Ressourcen (z.b. Rechenzeit und Speicherplatz) sind nötig, um ein Problem zu lösen? Problem des Handlungsreisenden: Finde kürzeste Tour durch alle Städte. Algorithmus: Teste alle Möglichkeiten und wähle die kürzeste Tour. Keine gute Idee: Bei 20 Städten mehr als 6 10 16 Möglichkeiten. Das Problem ist NP-hart, d.h. vermutlich, gibt es keinen effizienten Algorithmus. 11

Komplexitätstheorie (2) Es gibt zahlreiche natürliche NP-harte Probleme. Entweder: Für alle gibt es effiziente Algorithmen. Oder: Für keines gibt es effizienten Algorithmus. Dies ist eine große ungelöste Frage (P NP-Vermutung). Lösung ist 1 Million Dollar Wert. Negative Ergebnisse sind hilfreich: Existiert kein (effizienter) Algorithmus, so kann die Suche eingestellt werden. I 12

Automatentheorie und formale Sprachen Was ist ein gültiges Java/C++-Programm? Wie funktioniert ein Compiler? Wie muss eine formale Sprache (Programmiersprache) aussehen, damit ein effizienter Compiler existiert? Grammatik: Regelsystem zur Erzeugung syntaktisch korrekter Programme. WhileStatement: while ( Expression ) Statement BasicForStatement: for ( ForInit opt ; Expression opt ; ForUpdate opt ) Statement Automat: Einfaches Rechnermodell, das bei Compilern zum Einsatz kommt, z.b. für die lexikalische Analyse (Zerlegung des Quelltextes in Tokens). 13

Viel Spaß und Erfolg! Dr. Thomas Mauersberg / Uni Bonn 14