Grundlagen der Informatik 2 (GdI2) - Algorithmen und Datenstrukturen -



Ähnliche Dokumente
Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Numerische Verfahren und Grundlagen der Analysis

Programmiertechnik II

Grundbegriffe der Informatik

Die Komplexitätsklassen P und NP

Sortierverfahren für Felder (Listen)

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

Algorithmen & Datenstrukturen 1. Klausur

Überblick. Lineares Suchen

Vorkurs Informatik WiSe 15/16

Konzepte der Informatik

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis

1 Mathematische Grundlagen

1 topologisches Sortieren

Kapitel 5: Dynamisches Programmieren Gliederung

7 Rechnen mit Polynomen

Theoretische Grundlagen der Informatik

Primzahlen und RSA-Verschlüsselung

Grundlagen der Theoretischen Informatik, SoSe 2008

Kapiteltests zum Leitprogramm Binäre Suchbäume

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

4. Übungsblatt zu Mathematik für Informatiker I, WS 2003/04

1 Vom Problem zum Programm

Theoretische Informatik SS 04 Übung 1

Repetitionsaufgaben Wurzelgleichungen

Das Dilemma des Einbrechers Wer die Wahl hat, hat die Qual!

Algorithmen und Datenstrukturen

Zeichen bei Zahlen entschlüsseln

Korrelation (II) Korrelation und Kausalität

Informationsblatt Induktionsbeweis

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

Abschlussprüfung Realschule Bayern II / III: 2009 Haupttermin B 1.0 B 1.1

SOI Die Schweizer Informatikolympiade

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

Professionelle Seminare im Bereich MS-Office

Grundlagen der Programmierung

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Programmieren I. Kapitel 7. Sortieren und Suchen

Anmerkungen zur Übergangsprüfung

Sortieren durch Einfügen. Prof. Dr. W. Kowalk Sortieren durch Einfügen 1

4. BEZIEHUNGEN ZWISCHEN TABELLEN

Wirtschaftsinformatik I

Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken?

Zahlenwinkel: Forscherkarte 1. alleine. Zahlenwinkel: Forschertipp 1

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

Ohne Fehler geht es nicht Doch wie viele Fehler sind erlaubt?

Skript und Aufgabensammlung Terme und Gleichungen Mathefritz Verlag Jörg Christmann Nur zum Privaten Gebrauch! Alle Rechte vorbehalten!

Programmierkurs Java

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineare Differentialgleichungen erster Ordnung erkennen

Grundlagen der Künstlichen Intelligenz

Wie Sie mit Mastern arbeiten

Kompetenzen und Aufgabenbeispiele Englisch Schreiben

Grammatiken. Einführung

Tutorial: Homogenitätstest

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)

Der Zwei-Quadrate-Satz von Fermat

Rente = laufende Zahlungen, die in regelmäßigen Zeitabschnitten (periodisch) wiederkehren Rentenperiode = Zeitabstand zwischen zwei Rentenzahlungen

Software-Engineering SS03. Zustandsautomat

Datenstrukturen & Algorithmen

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Erfahrungen mit Hartz IV- Empfängern

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Wachstum 2. Michael Dröttboom 1 LernWerkstatt-Selm.de

Lehrer: Einschreibemethoden

Rente = laufende Zahlungen, die in regelmäßigen Zeitabschnitten (periodisch) wiederkehren Rentenperiode = Zeitabstand zwischen zwei Rentenzahlungen

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Informatik Kurs Simulation. Hilfe für den Consideo Modeler

Also kann nur A ist roter Südler und B ist grüner Nordler gelten.

Mathematischer Vorbereitungskurs für Ökonomen

3. Ziel der Vorlesung

Arbeitsblätter. Sinnvolle Finanzberichte. Seite 19

Lernmaterial für die Fernuni Hagen effizient und prüfungsnah

ERGÄNZUNGEN ZUR ANALYSIS II MITTELWERTSATZ UND ANWENDUNGEN

4 Aufzählungen und Listen erstellen

Komplexität und Komplexitätsklassen

Einführung in die Algebra

BEISPIELKLAUSUR Softwareentwicklung:

IT-Unternehmensarchitektur Übung 01: IT-Strategie

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.

Die reellen Lösungen der kubischen Gleichung

Kompetitive Analysen von Online-Algorithmen

Folge 19 - Bäume Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Data Mining: Einige Grundlagen aus der Stochastik

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Lösungsmethoden gewöhnlicher Differentialgleichungen (Dgl.)

Abschnitt: Algorithmendesign und Laufzeitanalyse

ARCO Software - Anleitung zur Umstellung der MWSt

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

2 Evaluierung von Retrievalsystemen

Lineare Gleichungssysteme

1.1 Allgemeines. innerhalb der Nachtzeit (19:00 24:00) Gesamte Normalarbeitszeit (16:00 19:00)

Probleme beim Arbeiten mit Variablen, Termen und Gleichungen

Zahlen und das Hüten von Geheimnissen (G. Wiese, 23. April 2009)

Algorithmen II Vorlesung am

Charakteristikum des Gutachtenstils: Es wird mit einer Frage begonnen, sodann werden die Voraussetzungen Schritt für Schritt aufgezeigt und erörtert.

Transkript:

Grundlagen der Informatik 2 (GdI2) - Algorithmen und Datenstrukturen - 2) Algorithmenanalyse Prof. Dr. Anja Schanzenberger FH Augsburg, Fakultät für Informatik Kontakt: anja.schanzenberger@hs-augsburg.de http://www.hs-augsburg.de/schanzenberger Sommer Semester 2008 (Stand: 16.03.2008) Studiengang Bachelor Informatik (Ibac2), Hochschule Augsburg, 2008 Die vorliegenden Unterlagen zur Vorlesung GdI Teil 2 dürfen nur verwendet werden für Studienzwecke durch Studierende der FH Augsburg.

Gliederung 1. Komplexitätsbegriff 2. Analyse von Algorithmen am Beispiel 1.1 Sequentielle Suche (unsortiertes Array) 1.2 Sequentielle Suche (sortiertes Array) 1.3 Binäre Suche (sortiertes Array) 3. O-Notation 4. Allgemeine O-Notation 5. Klassen N und NP 2

Lernziel Was sind die wichtigsten Einflussfaktoren für die Komplexität eines Algorithmus? Wie analysiert man einen Algorithmus? Wie kann man die Komplexität, Effizienz und die Laufzeit von Algorithmen abschätzen? Was bedeuten die Klassen P und NP und was ist ein NPvollständiges Problem? 3

1. Komplexitätsbegriff (1) Komplexität ist ein wichtiges Merkmal von Algorithmen Ausführungszeit Speicherplatzverbrauch Ziele von Algorithmen: Effizienz, d.h. geringer Zeit- und Speicherplatzverbrauch Im Folgenden wird hauptsächlich die Zeitkomplexität betrachtet Speicherplatzverbrauch wird später im Zusammenhang mit Datenstrukturen diskutiert 4

1. Komplexitätsbegriff (2) Einflussfaktoren für die Komplexität sind Problemgröße: Struktur, Größe und Anzahl der Eingabedaten Beispiel: Array mit n Elementen Problemgröße n Art und Zusammensetzung der Ablaufstrukturen des Algorithmus Beispiel n-durchläufe: k++ wird n-mal ausgeführt Maschineneigenschaften die zur Ausführung verwendet wird (z. B. Schnelligkeit, Befehlssatz ) Wird in der Algorithmenanalyse meist nicht betrachtet Stattdessen werden die elementaren Rechenschritte gezählt 5

1. Komplexitätsbegriff (3) Der Zeitbedarf T eines konkreten Algorithmus A zur Lösung eines Problems P in Abhängigkeit von der Problemgröße n = Die Anzahl der Elementaroperationen (ELOPs) von A um eine Problemgröße n zu lösen Gegeben sei Algorithmus A mit Eingabe e für Problemgröße n Menge aller möglichen Eingaben zu n: E n Maße für die Zeitkomplexität: T min (A; n) ::= min{ t(a; n, e) e E n } günstigster Fall T avg (A; n) ::= avg{ t(a; n, e) e E n } mittlerer Fall T max (A; n) ::= max{ t(a; n, e) e E n } ungünstigster Fall 6

1. Komplexitätsbegriff (4) 1. Abstraktionsschritt: Beispiel Typ der ELOPs wird nicht weiter unterschieden Nur Beobachtung dominanter Operationen Programm Schrittzahl T(n) ELOP Typ Z: Zuweisung A: Arrayzugriff V: Vergleich 7

1. Komplexitätsbegriff (5) 2. Abstraktionsschritt: Die Menge aller Eingaben E n wird aufgeteilt in Komplexitätsklassen Untersuchung reduzieren von jeder möglichen Eingabe auf die Komplexitätsklassen Beispiel: T(n) = f(n) = 2n+3 3. Abstraktionsschritt: Innerhalb einer Komplexitätsklasse wird unterschieden zwischen Spezialfällen (T min, T max ) und des Durchschnittsverhaltens (T avg ) 8

1. Komplexitätsbegriff (6) 4. Abstraktionsschritt: Weglassen von multiplikativen und additiven Konstanten Nur das Wachstum einer Laufzeitfunktion T(n) soll noch betrachtet werden O-Notation (Genaue Definition folgt in Unterpunkt 5) Beispiel: T(n) = 2n+3 O (n) 9

2. Analyse von Algorithmen am Beispiel (1) 2.1 Sequentielle Suche (unsortiertes Array) Typische Aufgabenstellung: Gegeben ist ein Array mit n Elementen. Suche Element X. Problem: Suchen in einem unsortierten Array Lösung: Sequentielles Suchen a value 12 33 4 7 23 Überprüft wird ob value im übergebenen Array a[links], a[links+1],.,a[rechts] vorhanden ist. Value wird nacheinander mit jedem Arrayelement verglichen. 45 10

2. Analyse von Algorithmen am Beispiel (2) Aufwand 1.Fall: Erfolglose Suche T min = T max = T avg = 2.Fall: Erfolgreiche Suche 1. T min = 2. T max = 3. T avg = Beweis: Laufzeitverbesserung möglich? Ja, z.b. durch Sortierung des Arrays a 12 4 7 23 45 a 12 4 7 23 45 value 33 value 7 11

2. Analyse von Algorithmen am Beispiel (3) 2.2 Sequentielle Suche (sortiertes Array) Problem: Suchen in einem sortierten Array Lösung: Sequentielles Suchen entspricht linearem System Algorithmus wie bei 2.1 a 4 7 12 23 45 value 33 12

2. Analyse von Algorithmen am Beispiel (4) Aufwand 1.Fall: Erfolglose Suche 1. T min = 2. T max = 3. T avg = 2.Fall: Erfolgreiche Suche 1. T min = 2. T max = 3. T avg = a 4 7 12 23 45 a 4 7 12 23 45 value 33 value 12 13

2. Analyse von Algorithmen am Beispiel (5) Fazit Verfahren 2.2 kann bei erfolgloser Suche weniger Aufwand haben als 2.1 Bei erfolgreicher Suche haben beide Verfahren gleichen Aufwand Beide Verfahren sind bei Echtzeitproblemen in der Regel zu langsam Laufzeitverbesserung möglich? 14

2. Analyse von Algorithmen am Beispiel (6) 2.3 Binäre Suche (sortiertes Array) Problem: Suchen in einem sortierten Array Lösung: Wenn das Array sortiert ist, kann die Hälfte der Elemente von der weiteren Betrachtung ausgeschlossen werden, indem das gesuchte Element mit dem Element verglichen wird, dass sich in der Mitte des Arrays befindet. 15

2. Analyse von Algorithmen am Beispiel (7) Beispiel (n=9) a 4 7 12 23 4 7 12 23 23 45 45 45 48 64 65 86 Gesucht: value 23 1.Schritt: vergleiche value und 45 2.Schritt: vergleiche value und 12 3.Schritt: vergleiche value und 23 1.Schritt, 2.Schritt, 3.Schritt 16

2. Analyse von Algorithmen am Beispiel (8) Algorithmus zur binären Suche 17

2. Analyse von Algorithmen am Beispiel (9) Aufwand 1.Fall: Erfolglose Suche T min =T max =T avg = b* log 2 (n) + a 2.Fall: Erfolgreiche Suche 1.T min : 1 Vergleich 2.T max = T avg = b* log 2 (n)+ a Beweis für Tmax: 18

2. Analyse von Algorithmen am Beispiel (10) Empirische Analyse von sequentieller und binärer Suche [Sedgewick, S.76] 19

3. O-Notation (1) Je größer bzw. komplexer ein Algorithmus, desto aufwendiger ist die Bestimmung der Anzahl von ELOPs für jede mögliche Komplexitätsklasse Vorteil der O-Notation: einfacheres Vorgehen! Nur das Wachstum der Laufzeitfunktion T(n) wird bestimmt Betrachtung der Zeitkomplexität als Größenordnung Multiplikative und additive Konstanten werden weggelassen Name: "Groß- O- Notation Historisch Paul Bachmann 1894 (in "Analytische Zahlentheorie ) Edmund Landau (1877-1938) machte davon Gebrauch (O-Notation wird auch Landau'sche Symbolik bezeichnet) 20

3. O-Notation (2) Definition 21

3. O-Notation (3) Achtung Gleichung f=o(g) kann nur von links nach rechts gelesen werden. Die Umkehrung O(g)=f gilt nicht! Beispiele 22

3. O-Notation (4) Schreibt man: g(n)=o(f(n)), so bedeutet dies, dass g(n) - also die eigentliche Laufzeit des Algorithmus'- ab einer gewissen Anzahl von Eingabewerten (n>n 0 ) stets kleiner als c*f(n) ist O(f(n)) gibt die obere Schranke der Laufzeit angibt 23

3. O-Notation (5) Überprüfung von Aussagen Annahme: f,g stetig monoton wachsend und von 0 verschieden Die Definition besagt, dass dann für alle n ab irgendeinem n 0 gilt: f(n)/g(n) <=c =>Vergleichen durch Grenzwertbildung Ergebnisauswertung 24

3. O-Notation (6) Beispiele Ist 30n 2 +100n+1000 in O(n 2 )? Ist n*ln n in O(n 2 )? 25

3. O-Notation (7) Eigenschaften der O-Notation Sie eliminiert Konstanten und wirkt daher vergröbernd Sie bildet obere Schranken Sie erleichtert die worst-case-analyse durch Einschränkung der oberen Laufzeit 26

3. O-Notation (8) Wichtige Rechenregeln Abstraktion von Konstanten da O(f(n))+O(f(n))=c 1 *f(n)+c 2 *f(n)=(c 1 +c 2)* f(n)= c*f(n)= O(f(n)) wobei max{...} das Maximum der übergebenen Parameter zurückgibt. Beweis: O(f(n))+O(g(n)) = c 1 *f(n)+c 2 *g(n) <= 2*max{c 1,c 2 }*(f(n)+g(n)) = c*(f(n)+g(n)) <= c*2*max{f(n),g(n)} = O(max{f(n),g(n)}) 27

3. O-Notation (9) Laufzeitermittlung eines Programms: 1. einfache Anweisung: Wertzuweisungen, Deklarationen, Definitionen, einfache Arithmetik (+,-,*,/), Vergleiche (==,!=,<,>,<=,>=), Sprunganweisungen, Eingabe/Ausgabe, etc. 2. Sequenz: alg 1 ; alg 2 ; alg 3 3. Schleife: 4. If (alg1)-else (alg2) -Anweisung: Falls alg 1 =O(f(n)) und alg 2 =O(g(n)) 5. Rekursion: Rekursionsgleichung lösen 28

3. O-Notation (10) Wichtige Komplexitätsklassen Klasse Typ Auswirkung Anwendung Laufzeit wächst wesentlich schwächer als n. Suchen auf einer Menge Laufzeit wächst proportional zu n Bearbeiten jedes Elementes einer Menge Laufzeit wächst etwas stärker als n Gute Sortierverfahren Laufzeit wächst wesentlich stärker als n Primitive Sortierverfahren Verdoppelung von n bedeutet Verk-fachung der Laufzeit Verdopplung von n bedeutet Quadrierung der Laufzeit Backtracking 29

3. O-Notation (11) Kurvendiskussion 30

3. O-Notation (12) Diskussion der vorgestellten drei Suchverfahren 2.1 Sequentielle Suche (unsortiert) 2.2 Sequentielle Suche (sortiert) 2.3 Binäre Suche (sortiert) 31

4. Allgemeine O-Notation (1) Definitionen f wächst mindestens so schnell wie g, falls g=o(f) f und g wachsen größenordnungsmäßig gleich schnell, falls g=o(f) und g=o(f) f wächst langsamer als g, wenn die Folge (f(n)/g(n)) eine Nullfolge ist f wächst schneller als g, falls g=o(f) 32

4. Allgemeine O-Notation (2) Zusammenfassung f=o(g) f=ω(g) f=θ(g) f=o(g) f=ω(g) Schreibweise f=o(g) anstatt f O (g) Die Beziehungen erlauben den Vergleich von Polynomen, logarithmischen und Exponentialfunktionen 33

5. Klassen P und NP (1) Ein Algorithmus heißt polynomiell, falls seine Laufzeitfunktion ein Polynom ist Definition: Die Klasse P Eine Sprache L heißt polynomiell, falls es eine deterministische Turing- Maschine M mit L=l(M) gibt, sodass gilt T avg = O(n k ) für k>=0 Die Klasse der polynomiellen Sprachen (Probleme) wird mit P bezeichnet Klasse P fasst die Komplexitätsklassen O(n), O(n 2 ), O(n 3 ), zusammen Probleme der Klasse P werden auch effizient lösbar genannt 34

5. Klassen P und NP (2) In der Praxis? Polynomielle Algorithmen mit O(n 2 ) und O(n 3 ) sind in der Praxis evtl. gerade noch anwendbar Exponentielle Algorithmen sind nur für sehr kleine Problemgrößen (z.b. n<20) geeignet, jedoch für größere Probleme ungeeignet 35

5. Klassen P und NP (3) Definition: Die Klasse NP Eine Sprache L heißt nichtdeterministisch polynomiell, falls es eine nichtdeterministische Turing-Maschine M mit L=l(M) gibt, sodass gilt T avg = O(n k ) für k>=0 Die Klasse der nichtdeterministischen polynomiellen Sprachen (Probleme) wird mit NP bezeichnet. P NP Beispiel aus der Praxis: Algorithmen zur optimalen Zuteilung von Betriebmitteln in Betriebssystemen 36

5. Klassen P und NP (4) Definition: NP-vollständig Eine Sprache L ist NP-vollständig, wenn sie einerseits selbst in NP liegt und wenn sich ihre Komplexität von der Komplexität jeder anderen Sprache in NP um nicht mehr als ein Polynom unterscheidet Praxisbezug Der Begriff NP-Vollständig charakterisiert diejenigen Probleme, die sich als die schwierigsten Probleme in der Klasse NP herausstellen Berühmte Beispiele Travelling-Salesman Problem (<- nächste Folie), Hamiltonsches Problem, Rucksackproblem, Färbungsproblem, Erfüllbarkeitsproblem, Cliquenproblem 37

5. Klassen P und NP (5) Beispiel: Travelling-Salesman Problem (TSP) Ein Handlungsreisender soll n Städte nacheinander, aber jede nur einmal besuchen. Am Ende der Reise soll er wieder in seine Ausgangsstadt zurückkehren. Sei p eine vorgegebene Schranke. Gibt es einen Rundweg, dessen Gesamtentfernung kleiner oder gleich p ist? 38

5. Klassen P und NP (6) Eingabe Städte: s 1, s 2,,s n Entfernungstabelle mit d ij = Entfernung der Stadt s i von der Stadt s j Schranke p Annahmen: In s 1 wird die Reise begonnen Fragestellung: Gibt es eine Anordnung s i1,s i2, s in von s 1,,s n mit i 1 =1, für welche die Summe der Entfernungen kleiner oder gleich der vorgegebenen Schranke p ist, d.h.: n 1 k = 1 d i k j k+ 1 + d i n j 1 p 39

Klassen P und NP (7) Lösung durch Ausprobieren? Am Beispiel mit p = 250 Lösung: Rundweg = 247 40

5. Klassen P und NP (8) Lösung des TSP Problems? außerordentlich schwierig In diesem Fall: erschöpfendes Durchsuchen TSP ist ein NP-vollständiges Problem O(2 n ) nach heutigem Wissensstand ist keine Methode bekannt, TSP algorithmisch tatsächlich in vernünftiger Zeit zu lösen Es gibt aber Algorithmen, die versuchen, eine möglichst gute Lösung zu raten beantwortet i. d. R. nicht die ursprüngliche Fragestellung nach bester Lösung in der Praxis ist jedoch eine gute Lösung immer noch besser als keine 41

5. Klassen P und NP (8) Näherungsverfahren für TSP mit O(n 2 *log 2 n) [Pseudocode aus Duden, S. 504] 42