Hilfsmittel Mathematik 2 WS13-14
Aus ProgrammingWiki
Andre Krause s3ankrau@stud.hszg.de Roman Stange s3rostan@stud.hszg.de
Inhaltsverzeichnis |
O-Notation
Beispiel:
Wenn zwei Funktionen gegeben sind vom Bereich natürliche Zahlen in positiv reelle Zahlen: , dann ist in der Komplexitätsklasse von , per Definition genau dann, wenn es ein und eine Konstante mit der Eigenschaft für alle .
Mit der obigen Definition wird also verlangt, dass langfristig unter liegt. Ab der Stelle dominiert , da alle , die noch folgen unterhalb von sind. Dabei spielt es auch keine Rolle, ob mit anderen Anstiegen bestückt wird, ebenso wenig würde ein Koeffizient vor der quadratischen Funktion die Sachlage verändern. Man kann also sagen, dass höchstens von der Komplexität ist - linear wird dominiert vom quadratischen.
Einordnung der Laufzeitfunktionen | |||
---|---|---|---|
Notation | Bedeutung | Anschauliche Erklärung | Beispiele für Laufzeiten |
ist beschränkt | überschreitet einen konstanten Wert nicht (unabhängig vom Wert des Arguments). | Nachschlagen des -ten Elementes in einem Feld. | |
wächst logarithmisch | wächst ungefähr um einen konstanten Betrag, wenn sich das Argument verdoppelt. Die Basis des Logarithmus ist dabei egal. | Binäre Suche im sortierten Feld mit Einträgen | |
wächst wie die Wurzelfunktion | wächst ungefähr auf das Doppelte, wenn sich das Argument vervierfacht | naiver Primzahltest mittels Teilen durch jede ganze Zahl | |
wächst linear | wächst ungefähr auf das Doppelte, wenn sich das Argument verdoppelt. | Suche im unsortierten Feld mit Einträgen (Bsp.Lineare Suche) | |
hat super-lineares Wachstum | Fortgeschrittenere Algorithmen zum Sortieren von Zahlen
Mergesort, Heapsort | ||
wächst quadratisch | wächst ungefähr auf das Vierfache, wenn sich das Argument verdoppelt | Einfache Algorithmen zum Sortieren von Zahlen
Selectionsort | |
wächst exponentiell | wächst ungefähr auf das Doppelte, wenn sich das Argument um eins erhöht | Erfüllbarkeitsproblem der Aussagenlogik (SAT) mittels exhaustivem Verfahren | |
wächst faktoriell | wächst ungefähr auf das -fache, wenn sich das Argument um eins erhöht. | TSP (mit Enumerationsansatz), alle Permutationen |
weitere nützliche asymptotische Ordnungen
Mit der -Notation kann man auf einfache Art ausdrücken, dass eine Funktion höchstens so schnell wächst, wie eine andere Funktion . Es gibt noch weitere Notationen, um das Wachstum von Funktionen zu vergleichen:
weitere -Notationen | |||
---|---|---|---|
wächst mindest so schnell wie , falls | |||
und wachsen gößenordnungsmäßig gleich schnell, falls und | |||
wächst langsamer als , falls die Folge eine Nullfolge ist | |||
wächst schneller als , falls |
Groß-Omega: Da die -Notation eine untere Schranke (reeles Vielfaches von ) für das Wachstum einer Funktion beschreibt, wird sie oft benutzt, um eine untere Schranke aller Algorithmen zur Lösung eines Problems anzugeben und damit die Komplexität des Problems zu charakterisieren.
Exakte Ordnung(Groß-Theta): Im Idealfall kann man eine asymptotische Beschränkung nach oben und unten durch ein und dieselbe Funktion mit verschiedenen Faktoren angeben. Grafisch entsteht eine Art Band, in dem die Graphen sämtlicher Funktionern aus verlaufen.
Rekursionsgleichungen
Grafische Rekursionen wie der "Droste Effekt" sind bekannt. Dabei erkennt der Betrachter Bilder oder Inhalte, die sich selbst in einer kleineren Version wieder beinhalten. Auch anderen rekursiven Funktionen, die sich also selbst aufrufen und zu denen immer eine Abbruchbedingung gehört, begegnet man oft.
Im folgenden wird die Fakultätsfunktion, als ein Beispiel für Rekursivität genommen. Die Fakultätsfunktion berechnet das Produkt aller ganzer Zahlen kleiner gleich der Zahl selbst. Die Fakultät von liefert das Ergebnis . Den Zeitaufwand dafür beschreiben Rekusions-, bzw. rekurrente Gleichungen.
Rekursions- oder rekurrente Gleichungen
Die allgemeine Definition der Fakulttätsfunktion lautet wie folgt:
So könnte diese Funktion in Scheme abgebildet werden:
Die Rekursionsgleichung zur Fakultät:
, mit
Auch für rekursive Gleichungen möchte man natürlich den Aufwand (Schritte, Resourcen, etc.) abschätzen können. Für kleine Schrittfolgen mag die Analyse noch überschaubar sein, doch bei Größeren ist es nicht mehr so schnell ablesbar. Es stellt sich beim Lösen also die Herausforderung dar, den Ausdruck in zu finden, der nicht von irgendeinem einsetzbaren Wert abhängt. Dafür gibt es mehrere Lösungsansätze, die nachfolgend beschrieben werden sollen.
allgemeine Form der Rekursionsgleichung:
Computeralgebrasysteme (CAS)
Im Laufe der Zeit entwickelten sich die Möglichkeiten der Eingabe, Verarbeitung und Ausgabe numerischer Werte von Taschenrechnern immer weiter. Mit der Einführung der Computeralgebrasysteme (CAS) wurde es möglich, auch mit Symbolen zu rechnen. Das Lösen beispielsweise von Gleichungssystemen oder Extremwertaufgaben, stellt die Besitzer dieser "Rechensklaven" nicht mehr vor große Herausforderungen. Zumeist bringen die CA-Systeme grafische Komponenten mit, die mathematische Objekte visualisieren können.
Merkmale eines modernen CAS | |||||
---|---|---|---|---|---|
Symbolisches Rechnen | Grafik | Programmierung | Bibliothek | Benutzeroberfläche | |
Termumformungen, Lösung von Gleichungen, Funktionen, Geometrie, Stochastik | 2D, 3D, Animationen, grafische Objekte | Datentypen (Variablen, Felder, Listen, Mengen), Prozeduren/Funktionen, Verzweigungen, Schleifen, Logik | Konstanten, vordefinierte Variablen, Befehle, Algorhitmen, erweiterbar mit fremden oder eigenen Anwendungen | Input-, Output-, Text- und Grafikumgebungen, Menü, Paletten (Buchstaben, Sonderzeichen, Befehle, Schablonen), Kontextmenüs und Hilfen |
Um kompetente Lösungen mit einem CAS zu erhalten, ist anzueignendes Wissen des jeweiligen Systems notwendig, wie die betreffende Mathematik darauf widergespiegelt ist. Prinzipiell sind das auf CAS-Seite Implementationen, die eine möglichst enge Verbindung zu entsprechenden mathematischen Begriffen und Methoden haben, jedoch nicht identisch sind. Aus diesem Grund muss man sich mit der Evaluaierung der mathematischen Ausdrücke erst einmal vertraut machen.
Lösungsverfahren für Rekursionsgleichungen basieren auf von Spezialisten getätigten Überlegungen (sog. z-Transformationen). Auf die dafür erforderlichen mathematischen Grundlagen, wird hier nicht eingegangen. Die Hinnahme der naiven Benutzung der im CAS eingebauten Symbolmanipulation, wird durch Ergebnisverifikation (mittels vollständiger Induktion) weitestgehend behoben.
Im folgenden Beispiel wird das Protokoll einer Maxima-Sitzung zur Lösung obiger Gleichung wiedergegeben. Das entscheidende Sprachelement ist solve_rec.
Das jeweilige CAS liefert nun das Ergebnis, was abgelesen wird und in die jeweilige Komplexitätsklasse eingeordnet werden kann:
Raten und Einsetzen
Intelligent guesswork heißt geschicktes Raten. Die explizite Bildungsvorschrift für eine Zahlenfolge herauszufinden, bedarf zunächst der Bildung einer Wertetabelle für . Dazu das nächste Beispiel:
wobei eine Zweierpotenz, also ,
Wertepaare | |
---|---|
Ein Blick auf die Ergebnisse in der Tabellenspalte für deuten auf exponentielles Wachstum hin. Die Summenausführung hilft nun beim Erraten der Lösung:
Um eine Funktion abzubilden, ist es notwendig mit zu substituieren. Da man sich für die asymptotische Ordnung interessiert, ist dies für alle natürlichen auch berechtigt. Das Ergebnis ist ables- und damit klassifizierbar:
Iterationsmethode
Iteration wird in der Mathematik angewendet, um sich einer exakten Lösung eines Rechenproblems schrittweise anzunähern. Dies geschieht durch die konsequente Wiederholung des Rechenverfahrens, bis die Lösung gefunden wurde bzw. sich bestmöglichst angenähert hat. Ein Beispiel ist die Approximation an eine Nullstelle einer stetigen Funktion. Auch auf Rekursionsgleichungen kann diese Methode angewendet werden, in dem die rekursive Vorschrift solange iteriert wird, bis ein rekursionsfreier Ausdruck in gegeben ist, auch Telescoping genannt. Der Vorgang ist beendet, sobald das Argument der Anfangsbedingung erreicht ist. Dies ist in der Regel 1 oder 0.
Auf folgende Rekursionsgleichung wird diese Methode nun angewendet.
, für
Die schrittweise Iteration sieht wie folgt aus:
Der Rekursionsgleichung kann entnommen werden, dass die Rekursionsfreiheit nur für gilt. Dies bedeutet, dass die Rekursion auch auf enden muss.
Diese Gleichung kann nun nach umgestellt werden.
Die weiter oben aufgeführte Iterationsformel kann auch als Summe dargestellt werden.
Nun wird für der Term eingesetzt.
Aufgrund der Rechenregel , ergibt sich folgende Gleichung.
Durch die Annahme, dass ist, kann man folgende Aufwandsfunktion ablesen:
Es handelt sich also bei dieser Rekursionsgleichung um einen linear wachsenden Aufwand.
Die Meistermethode
Mit der master method erhält man ein weiteres Werkzeug, die Laufzeitklasse einer rekurrenten Gleichung zu bestimmen. Die allgemeine Form für die Anwendung des Master-Theorems sieht wie folgt aus:
Hierbei steht , wie immer für die zu untersuchende Laufzeitfunktion, während und reelle Konstanten, mit der Bedingung das und sind. Weiterhin benötigt man für die Benutzung noch den Logarithmus von zur Basis , . Warum? Weil man noch drei Muster als Zutaten dazu bekommt, welche die Funktion mit vergleichen. Die Wertbindungen für erfolgen dabei durch einen Musterabgleich (Matching).
Mit anderen Worten heißt es nach Auslegung der so genannten Kochbuchmethode: „Eine schmackhafte Suppe ist es dann, wenn mindestens eine der Zutaten geschmacklich dazu passt. Ist dem nicht der Fall gießen Sie das ganze, unter kräftigen Rühren in den Ausguss.“
Muster der Meistermethode | ||
---|---|---|
Muster 1 | Muster 2 | Muster 3 |
Wenn für eine beliebige reelle Konstante , dann gilt: | Wenn , dann gilt: | Wenn für eine beliebige reelle und wenn , ,mit einer reellen Konstanten dann gilt: |
Zeit für ein Beispiel:
Die Informationen, die aus der Formel gewonnen werden, lauten:
und
Muster 1 passt:
für ein
Eingesetzt ergibt das:
Wähle mit
Das Ergebnis ist die Laufzeitfunktion:
Übungen
1. CAS
Bestimmen Sie für folgende Rekursionsgleichung die asymptotische Ordnung mit Hilfe von Maxima:
, mit
Orientieren Sie sich dazu am Beispiel 3.2 (s.S. 47) aus dem Buch Algorithmen und Kompläxitäten beziehungsweise am Beispiel aus dem Abschnitt CAS.
Hinweis:
Befehlsübersicht | |||||
---|---|---|---|---|---|
Maple | Maxima | ||||
rsolve(%) | solve_rec(%) | ||||
simplify(%) | trigsimp(%) | ||||
evalf(%) | ev(%, numer) |
2. Meister Methode
Berechnen Sie für folgende Aufwandsfunktion, mithilfe des dritten Musters der Meistermethode, ob gilt:
3. Raten und Einsetzen
Rechnen Sie nach und formen Sie um. Werfen Sie untertützend dazu einen Blick auf obiges Thema Raten und Einsetzen.
Lösungen
1. CAS
2. Meistermethode
3. Raten und Einsetzen
Quellen:
- Christian Wagenknecht: Algorithmen und Komplexität, Fachbuchverlag Leipzig im Carl Hanser Verlag, München Wien 2003, S. 34-54 ISBN 3446223142
- Ralf Hartmut Gütting: Datenstrukturen und Algorithmen, B.G. Teuber, Stuttgart 1992, S. 11-17 ISBN 3446223142
Weblinks
- https://www120.uni-hohenheim.de/Downloads/Log_Papier/Logarithmische_Skalen.pdf
- http://rechneronline.de/funktionsgraphen/
- http://de.wikipedia.org/wiki/Master-Theorem