Effizienz von Algorithmen



Ähnliche Dokumente
4 Effizienz und Komplexität 3.1 1

Algorithmen und Datenstrukturen Laufzeitabschätzung

T (n) = max. g(x)=n t(n) S(n) = max. g(x)=n s(n)

Aufgabensammlung Klasse 8

Randomisierte Algorithmen

Lineare Algebra II 5. Übungsblatt

Exponentialgleichungen und Logarithmen

UND MOSES SPRACH AUCH DIESE GEBOTE

2 Rationale und reelle Zahlen

Algorithmen und Datenstrukturen 1 Kapitel 4.1

ALGEBRA UND MENGENLEHRE

Praktisch modulo n rechnen

Abschnitt 7: Komplexität von imperativen Programmen

Corinne Schenka Vorkurs Mathematik WiSe 2012/13. ausmultiplizieren. Anwenden von Potenzgesetzen, Wurzelgesetzen, Logarithmengesetzen

Induktive Definitionen

3 Numerisches Rechnen

Schleifeninvarianten. Dezimal zu Binär

$Id: ring.tex,v /05/03 15:13:26 hk Exp $

3.3 Laufzeit von Programmen

Algorithmische Methoden zur Netzwerkanalyse

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Binomialverteilung und Bernoulli- Experiment

Inhaltsübersicht. Definition und erste Eigenschaften komplexer Zahlen

Musterlösung zur Probeklausur zur Angewandten Diskreten Mathematik Dr. Hartmut Lanzinger, Hans- Peter Reck

Leitprogramm Bruchterme

2 Polynome und rationale Funktionen

Komplexität von Algorithmen

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

Algorithmen und Datenstrukturen

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

Algorithmik Übung 3 Prof. Dr. Heiner Klocke. Sortierfolge nach Werten: Bube Dame König As nach Farben: Karo ( ) Herz ( ) Piek ( ) Kreuz ( )

Komplexität von Algorithmen:

6. Rechnen mit Matrizen.

Unterlagen zu Polynomringen. Erhard Aichinger

Kostenmodell. Daniel Graf, Tobias Pröger. 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016)

In Arbeit! Bruchungleichungen. Aufgaben mit Lösungsweg zur Webseite by Josef Raddy. 1

Sortierverfahren. Lernziele

4 Ganzrationale Funktionen

Geheim bleibt geheim: Computeralgebra und Verschlüsselung mit RSA

Algorithmik Übung 2 Prof. Dr. Heiner Klocke Winter 11/

Projekt Systementwicklung

Einführung in die Algebra

Rechnen mit rationalen Zahlen

Wurzelgleichungen 150 thematisch geordnete Wurzelgleichungen mit ausführlichen Lösungen

Zahlen und elementares Rechnen

2. Hausübung Algorithmen und Datenstrukturen

Einstieg in die Informatik mit Java

5. bis 10. Klasse. Schnell-Merk-System. Mathematik. Kompaktwissen Testfragen SMS. Mit Lernquiz fürs Handy

Vorlesung. Inhalt. Lineare Algebra und Wahrscheinlichkeitsrechnung für Informatik Gunter Ochs, Nico Rompos Sommersemester 2016

Multiplikation langer Zahlen

[FREIER FALL MIT UND OHNE LUFTWIDERSTAND] 10. Oktober 2010

1 Dreisatz In diesem Modul werden alle Spielarten des Dreisatzes behandelt

3 Reihen. 3.1 Konvergenz und Divergenz. Die Eindeutigkeit nach Satz 13 ergibt schließlich (5). (6) folgt aus (2) und (1) wegen. 1 a +log ba.

Potenzen mit gleichem Exponenten

Mathematik I für Studierende der Informatik und Wirtschaftsinformatik (Diskrete Mathematik) im Wintersemester 2015/16

Übung zur Vorlesung Berechenbarkeit und Komplexität

9. Übungsserie. Sophia Schumann. Matr. XXX

Grundlagen komplexe Zahlen. natürliche Zahlen

Potenzen mit ganzzahligen Exponenten: Rechenregeln

Kapitel III Ringe und Körper

LAF Mathematik. Näherungsweises Berechnen von Nullstellen von Funktionen

Vektorgeometrie Ebenen 1

4. Beispielitems aus der Standardüberprüfung Mathematik 2012 für die 8. Schulstufe

Ist die Funktion f : R R injektiv, hat den Definitionsbereich D und den Wertebereich W, so ist f : D W bijektiv. Dann heißt

[Ganze] [ ] Zahlen in verschiedenen Formen deuten können, als Zustände gegenüber einem Nullpunkt, als Punkte auf einer Zahlengeraden

Kombinatorik: Abzählverfahren (Teschl/Teschl 7) Summenregel. Allgemeiner

Schulmethode zur Multiplikation von n-stelligen Binärzahlen a und b: (evtl. fallen Zeilen weg, wenn das zugehörige Bit des Multiplikators 0 ist).

Exponentialfunktion, Logarithmus

1.2. Teilbarkeit und Kongruenz

Die Korrelation von Merkmalen

9.2 Invertierbare Matrizen

Algorithmen und Datenstrukturen 1 Kapitel 5

Rudolf Brinkmann Seite

Begriffe zur Gliederung von Termen, Potenzen 5

1. Grundbegriffe: Das Lösen von Gleichungen Lineare Gleichungen Quadratische Gleichungen... 9

Elementare Geometrie. Inhaltsverzeichnis. Fragen und Antworten. (bitte nur für den Eigengebrauch verwenden)

Lineare Algebra und analytische Geometrie

Wir sollen erarbeiten, wie man mit Hilfe der Mondentfernung die Entfernung zur Sonne bestimmen kann.

Folgen und Grenzwerte

Deskriptive Statistik Kapitel IX - Kontingenzkoeffizient

Polynome. Analysis 1 für Informatik

Stichpunktezettel fürs Tutorium

Eigenwerte und Eigenvektoren

y x x y ( 2x 3y + z x + z

IT-Security. Teil 8b: Rechnen mit beliebiger Genauigkeit Algorithmen

DAMPF UND KONDENSAT IN ROHRLEITUNGEN

Definition 131 Sei R ein (kommutativer) Ring. Ein Polynom über R in der Variablen x ist eine Funktion p der Form

Analysis I: Übungsblatt 1 Lösungen

Mathematik für Informatik 3

2. Algorithmen und Algorithmisierung Algorithmen und Algorithmisierung von Aufgaben

Mathematik W7. Mag. Rainer Sickinger LMM, BR. v 1 Mag. Rainer Sickinger Mathematik W7 1 / 25

Der Primzahltest von Agrawal, Kayal und Saxena. Dr. Gerold Jäger

WS 2009/10. Diskrete Strukturen

Potenzen - Wurzeln - Logarithmen

Transkript:

Effizienz von Algorithmen Letzte Bearbeitung: Jan 211 Ein wichtiger Aspekt bei Algorithmen sind seine "Kosten". Wir wollen uns hier ausschließlich mit der Laufzeit des gewählten Algorithmus beschäftigen. Neben der Laufzeit ist auch der Speicherbedarf eine wichtige Größe. Wir vereinbaren zunächst: Ein Algorithmus heißt effizient, wenn er "wenig" Betriebsmittel (Zeit, Speicherplatz) benötigt. Wir beschränken uns hier auf die Abschätzung für die Laufzeit des Algorithmus im schlechtest möglichen Fall. Vorgehensweise 1. Finde einen Algorithmus, der das gegebene Problem löst. 2. Finde, wenn möglich, einen effizienteren Algorithmus bezüglich seiner Laufzeit. Potenzbildung x n Wir wollen die Kosten der Potenzbildung x n bestimmen: x n = x x... x Wenn wir zur Berechnung eine Schleife einsetzen, sind n - 1 Multiplikationen durchzuführen. Wir untersuchen am Beispiel n = 13, ob die Potenzbildung mit weniger als 12 Multiplikationen erreicht werden kann. x 13 = x x12 = x (x 6 ) 2 = x ( ( x x 2 ) 2 ) 2 5 Multiplikationen Frage: Gibt es eine Mindestzahl von Multiplikationen, die nicht unterschritten werden kann? Start: Wir nehmen x (Grad 1 des Polynoms) Schritt 1: x x (Eine Multiplikation führt zu Grad 2) Wir besitzen nun die Zwischenresultate x und x 2 Schritt 2: Jede Multiplikation unter den Zwischenresultaten führt maximal zu Grad : x x, x x 2, x 2 x 2 7.2.11 / 1

Schritt 3: Wir gelangen durch Verwendung der neuen Zwischenergebnisse maximal zum Grad 8: x x Ergebnis Jeder Schritt führt maximal zu einer Verdopplung des Grades. Für n = 13 gilt Die untere Schranke zur Berechnung von x 13 besteht aus Schritten! Ob es einen Algorithmus mit Schritten gibt, ist damit nicht bewiesen. Mit weniger als Schritten kann es jedenfalls keinen Algorithmus geben. Aufgabe Für welche Exponenten werden die unteren Schranken erreicht? Wie viele Schritte sind für n = 2 (, 6, 8, 1) notwendig? 7.2.11 / 2

Berechnung von Polynomwerten Gegeben ist das Polynom 3x + 2x 3-5x 2 +6x + 2 Wie viele Rechenoperationen sind notwendig, um den Wert an der Stelle x zu berechnen? Idee Berechnung der Potenzen x 2, x 3, x Berechnung der Produkte 6x, -5x 2, 2x 3, 3x Berechnung der Summe 3x + 2x 3-5x 2 + 6x + 2 3 Multiplikationen Multiplikationen Additionen Wenn wir jede Addition und Multiplikation als einen Schritt bezeichnen, müssen wir 11 Schritte zur Berechnung ausführen. Schrittzahl S(n) für ein Polynom vom Grad n Berechnung aller Potenzen x 2, x 3, x... x n n -1 Schritte Berechnung aller Produkte: n Schritte Berechnung der Summe: n Schritte S(n) = 3n - 1 Schritte Wir erinnern uns an das Hornerschema zur Berechnung von Polynomwerten: Wir benötigen nur 8 Schritte ( Multiplikationen und Additionen)! 7.2.11 / 3

Allgemein Um zur Summe unter der Position a n-1 zu gelangen, benötigen wir eine Multiplikation mit x und eine Addition. Insgesamt sind n solcher Doppelschritte erforderlich, was zu S(n) = 2n führt, wobei n der Grad des Polynoms ist. Anmerkung: Im Jahr 195 bewies der Mathematiker OSTROWSKI, dass immer mindestens n Multiplikationen und n Additionen notwendig sind, d.h. das Hornerverfahren arbeitet optimal! Einen besseren Algorithmus kann es nicht geben. 7.2.11 /

Schritte eines Algorithmus Für ein Problem gibt es oft mehrere Algorithmen, welche das Problem lösen. Allerdings werden sich die Algorithmen in ihrer Laufzeit unterscheiden. Um den besten Algorithmus zu ermitteln, muss man Tests mit konkreten Eingabedaten durchführen, was sehr zeitaufwändig ist. Man kann dieses Verfahren erheblich abkürzen, wenn wir die Algorithmen einer mehr theoretischen Betrachtung unterwerfen. Theoretischer Weg Idee: Bestimme zu jedem Algorithmus die Zahl der Schritte, die er in Abhängigkeit von der Größe der Eingabedaten auszuführen hat. Algorithmus Schritte Eingabegröße Potenzieren Polynomwert berechnen 2n Exponent n Grad des Polynoms Wenn der Algorithmus mehr Schritte benötigt, wird auch die Laufzeit auf einer Maschine mehr Zeit beanspruchen! Deshalb sprechen wir auch unter Verwendung der Schrittzahl von der Laufzeit, dem Aufwand, der Zeitkomplexität des Algorithmus: Die Zeitkomplexität S(n) eines Algorithmus ist die Anzahl der Schritte, die der Algorithmus (im schlechtesten Fall) ausführen muss. Man spricht von der Laufzeit des Algorithmus. Anmerkungen Die Zeitkomplexität ist ein maschinenunabhängiges Maß, da sie die Zahl der Schritte erfasst. In vielen Fällen genügt eine Abschätzung der Schrittzahl für den Fall, dass die (für die Laufzeit) ungünstigsten Eingabedaten verwendet werden. Wir erhalten dann eine obere Schranke für die Laufzeit des Algorithmus, welche nicht überschritten wird (obere Schranke der Laufzeit). Wir versuchen nicht, die beste obere Schranke zu finden, die tatsächlich erreicht wird. Dies ist oft ein sehr schwieriges Problem, welches wir hier nicht betrachten wollen. Unsere Vorgehensweise ist die, dass wir durch grobe Abschätzung der Schrittzahl eine "sinnvolle" obere Schranke für die Laufzeit des Algorithmus ermitteln. Diese Schranke dient zur Klassifikation der Algorithmen (s. später). 7.2.11 / 5

Was verstehen wir unter einem Schritt? Ein Dauer eines Schrittes eines Algorithmus auf einer realen Maschine hängt davon ab, was in diesem Schritt passiert. Eine Multiplikation, eine Addition, der Vergleich zweier Zahlen, Kopieren von Variablenwerten,... Oft kennt man die Ausführungszeit nicht genau, da diese z.b. auch von der Größe der beteiligten Zahlen abhängt: Es ist nicht gleichgültig, ob die Maschine eine 32Bit-Zahl oder eine 6Bit-Zahl multipliziert. Wir gehen noch weiter: Uns interessiert die Dauer einer Maschineninstruktion nicht, trotzdem werden wir Aussagen über das Laufzeitverhalten eines Algorithmus machen können: Es ist uns sogar gleichgültig, ob der Schritt in einer Multiplikation, einer Division, dem Vergleich zweier Zahlen oder einer anderen Operation besteht. Wir sagen einfach: Der Algorithmus benötigt eine gewisse Anzahl von Schritten, unabhängig davon, dass diese Schritte auf einer realen Maschine unterschiedlich lange dauern. Wir definieren: Ein Schritt ist eine (abstrakte) Operation, bei der wir nicht mehr zwischen Multiplikation, Addition, usw. unterscheiden, da sich die Ausführungszeiten auf einer realen Maschine nur durch konstante Faktoren unterscheiden. Der Aufwand des Algorithmus ist die Anzahl S(n) der benötigten Schritte in Abhängigkeit von der Problemgröße n. Wir interessieren uns also nicht für die tatsächliche Laufzeit des Programms auf der Maschine, sondern für die Laufzeit des Algorithmus, die wir mit Hilfe der Schrittzahl S(n) erfassen. Wenn der Algorithmus mehr Schritte benötigt, wird auch seine Laufzeit auf einer Maschine mehr Zeit beanspruchen! Aus der Sicht der Schritte sprechen wir von der Zeitkomplexität (Laufzeit) des Algorithmus. Wenn wir den schlechtesten Fall für die Anzahl der Schritte betrachten, erhalten wir eine obere Schranke für die Laufzeit des Algorithmus. 7.2.11 / 6