Hilfsmittel Mathematik 2 SS10

Aus ProgrammingWiki

< AuK
Wechseln zu: Navigation, Suche

Loading

Inhaltsverzeichnis

Rekursionsgleichungen

Motivation

Ergibt die empirische oder theoretische Analyse des Aufwandes des betrachteten Verfahrend eine explizite Aufwandsfunktion, wie z.B. oder , so kann die jeweils zugehörige asymptotische Aufwandsordnung unmittelbar abgelesen werden: liegt in . liegt in .

Ein systematischer Algorithmenentwurf (s. Folgevorlesungen) führt jedoch oftmals zu rekursiven Ergebnis-Beschreibungen, deren Berechnungsaufwand unmittelbar abgelesen werden kann, allerdings - der Natur des Algorithmus entsprechend - als Rekursionsgleichung der Form (oder so ähnlich). Wie gewinnt man daraus die explizite Gestalt für ?

Fibonacci-Zahlen
, mit

Offensichtlich gilt für den Zeitaufwand:

, mit .

Die nachfolgenden Abschnitte erläutern verschiedene Methoden, die zur Ermittlung des Aufwandes für rekursive Gleichungen helfen.

Computeralgebrasysteme

CAS: Begriff und Reichweite

Computeralgebrasysteme (kurz: CAS) sind computergestützte Werkzeuge, welche entweder symbolische oder numerische Aufgaben lösen können. Nur wenige können beides. Weiterhin sind sie in der Lage rekursive Gleichungen in explizite Vorschriften umzuformen. Dabei ist zu beachten, dass die jeweiligen CAS (z.B. Matlab, Mathematica, Maple, Maxima) auf unterschiedlichen mathematischen Grundlagen aufbauen und bei der Umformung solcher Gleichungen verschieden vorgehen. Im Allg. spielt aber die sog. Z-Transformation eine wichtige Rolle. Z-Transformationen sind sehr kompliziert und können auch nur für bestimmte Typen rekursiver Gleichungen (Gleichungsklassen) verwendet werden. Aus diesem Grund können CAS nicht für alle rekursiven Gleichungen eine explizite Lösung berechnen.

Funktionen von CAS

Um eine rekursive Gleichung aufzulösen benutzt Maple (hier als Referenzsystem) die Funktion rsolve(). Sie benötigt 2 Argumente. Das 1. Argument beinhaltet Wertepaare, während das 2. Argument die aufzulösende Funktionsbezeichnung be.... Durch rsolve(); wird die Rekursion in einen explizieten Term umgeformt, d.h er ist unhabhängig von Vorwerten.

Eine weitere Funktion heißt simplify(). Sie vereinfacht den erzeugten Term, indem Teilterme zusammengefasst und Werte, wenn möglich, gekürzt werden. Ihr Argument ist die jeweilige rsolve()-Funktion.

Schließlich gibt es noch die Funktion evalf(). Diese evaluiert den Term und stellt Brüche in dezimaler Form dar. Das Argument ist mit dem von simplify() identisch.

Raten und Einsetzen

Das geschickte Raten (intelligent guesswork) versucht, den funktionalen Zusammenhang aus einer Wertetabelle "herauszuvermuten".

Sei die rekursive Gleichung , mit gegeben.

Mit Hilfe der Wertetabelle sollen Funktionswerte durch Einsetzen verschiedener Argumente ermittelt werden. Für das gewählte Beispiel bieten sich Zweierpotenzen an, da man dann bei jedem Folgeschritt auf das zuvor berechnete Ergebnis zugreifen kann. Um beispielsweise zu berechnen, kann man auf zurückgreifen. Um zu berechnen, muss man einsetzen, welches man in der Wertetabelle zuvor berechnet hat und so weiter.

Würde man n lediglich inkrementieren, so würde man spätestens bei , also ins Stocken geraten, da hierfür in der Wertetabelle (noch) kein Wert vorliegt.

rekursive Gleichung: ,

Wir vermuten den folgenden Zusammenhang:


Weitere Transformationen ergeben:









 

Anmerkung: Konstante Faktoren innerhalb der Summe können vor die Summe gestellt werden


Formel:










Bis zu diesem Punkt haben wir immer mit gerechnet. Gesucht ist jedoch eine Funktion . Zu Beginn wurde die Vereinbarung getroffen. Da muss substituiert werden.




Formel:


Aus der obigen Formel ergibt sich, dass wir für einfach schreiben dürfen. Auf ist dies nicht direkt anwendbar. Aus der Überlegung, dass ist, kann man schlussfolgern, dass . Nun kann man 3, mit ersetzen.




Das Ergebnis lautet:

.

Konstruktive Induktion

Eine andere Möglichkeit, den Aufwand einer Rekursionsgleichung zu ermitteln, ist die Verwendung der konstruktiven Induktion.

Wie bei der vollständigen Induktion besteht die konstruktive Induktion ebenfalls aus Induktionsanfang und Induktionsschritt. Um mit dem Induktionsanfang beginnen zu können, muss erst einmal auf konstruktive Weise eine Ausgangsgleichung ermittelt werden. Berechnet man einige Werte der Fibonacci-Folge, stellt man fest, dass sich der Aufwand mit einer exponentiellen Aufwandsfunktion beschreiben lässt.

Daher ergibt sich zunächste folgende Aufwandsordnung:


Definition Groß-O
Gesprochen: ist die Menge aller Funktionen , für die es eine poitive reelle Zahl gibt, sodass ab eibem gewissen sämtliche Funktionswerte nicht oberhalb von liegen.


Aus der Definition von Groß- geht folgende Ungleichung hervor:


Es gilt nun mittels vollständiger Induktion zu beweisen, dass ein Wert für a und c existiert, sodass die Ungleichung wahr ist.

Induktionsanfang:

Aus der Definition von Fibonacci ist bekannt, dass und . Ergänzen wir nun die vorher ermittelte Ungleichung, ergibt sich folgendes:



Betrachtet man die erste Ungleichung, stellt man fest, dass . Das hat zu Folge, dass . Der Einfachheit halber wählen wir . Für c ergibt sich, dass .

Induktionsschritt:

Aus der Definition der Fibonacci-Folge ist bekannt das . Dies gilt es jetzt im Induktionsschritt zu beweisen. Es lässt sich folgend Rechnung erstellen:

  










Damit muss gelten.





, 

Da würde sich für ein negativer Wert ergeben. Da es einen negativen Wert für den Aufwand nicht geben kann, entfällt .

Daher ist die Lösung der Gleichung .

Der Aufwand für die Berechnung der n-ten Fibonacci-Zahl lässt sich also folgendermaßen beschreiben:


Iterationsmethode

Die Iterationsmethode ist ein Mittel zur Lösung rekursiver Gleichungen T(n). Zur Auflösung einer Gleichung wir die rekursive Gleichung, sowie ein Wertpaar benötigt, welches ein rekursionsfreies n repräsentiert. Meistens wird hierfür T(0) oder T(1) angegeben für eine Gleichung der Form .Beispiel aus dem Buch mit und , sowie .



Die Gleichung wird nun solange iteriert bis das rekursionsfreie n des Festwertes ermittelt wurde. Dazu benötigt man eine hergeleitete rekursive Bildungsvorschrift(Telescoping). Zur Bestimmung der Ordnung muss anschließend eine explizite Bildungsvorschrift bestimmt werden. Hier am Beispiel vorgeführt.

Telescoping

 
Nebenrechnung: 
Einsetzen: 
Zusammengefasst: 
Allgemein: 

Diese rekursive Nottion kann auch in Kurzschreibweise wiedergegeben werden.

Kurznotation: 

Da aus der Ausgangsgleichung hervorgeht, dass die Funktion T(n) nur für n=1 rekursionsfrei ist, gilt: bzw. . Durch logarithmische Umformung erhält man für

Indem man nun k einsetzt erhält man die expliziete Gleichung:


Jedoch ist man hier noch nicht fertig, da hier ein Aufwand betrachtet werden soll bzw. die Ordnung dieses Aufwandes. Offensichtlich handelt es sich bei der Summe um eine geometrische Reihe. Daher kann die Gleichung wie folgt geschrieben werden:

   

Da nach Logarithmengesetz gilt kann man dies auf jeden Term anwenden, welcher einen Logarithmus mit n in der Form im Exponenten besitzt. Dadurch erhält man folgende Gleichung-

     

Zusammenfassend erhält man schließlich:


Da ist der Aufwand :


Die Meistermethode

Die Mastermethode ist ein sehr einfaches Lösungsverfahren für rekurrente Gleichungen der Form $$T(n) =a\cdot T\left(\frac{n}{b}\right)+f(n).$$

Es funktioniert wie nach Kochbuch oder wie die Suche der passenden Schablone. Dabei hat man drei zur Auswahl:

  1. Fall: $\varepsilon < 0$. Ergebnis: $T(n)=\mathcal{O}\left(n^{\log_ba}\right)$
  2. Fall: $\varepsilon = 0$. Ergebnis: $T(n)=\mathcal{O}\left(n^{\log_ba}\log_2n\right)$
  3. Fall: $\varepsilon > 0$ und wenn $a\cdot f\left(\frac{n}{b}\right)\leq c\cdot f(n)$ mit einer reellen Konstanten $c>0$. Ergebnis: $T(n)=\mathcal{O}(f(n))$

Der Wert von $\varepsilon$ ergibt sich zwangsläufig aus der Herstellung der folgenden Gleichheit: $$\mathcal{O}(n^{\log_b a+\varepsilon})=\mathcal{O}(f(n)).$$


1.Fall
2.Fall
3.Fall

Folien

  • Die aktuellsten Folien zur Vorlesung:
Vortrag.pdf (2.2 MB)

Aufgaben

  1. Raten und Einsetzen
    • Ermitteln Sie die explizite Bildungsvorschrift für .
  2. Computeralgebrasysteme
    • Machen sie sich mit dem CAS Maple und den Funktionen rsolve(), simplify() und evalf() vertraut und lösen sie die Aufgabe 3.3 aus dem Buch.
  3. Iterationsmethode
    • Lösen sie folgende Gleichung mittels Iterationsmethode:
    • ; für n>1, sonst d.
  4. Mastermethode
    • Prüfen sie mittels Master-Theorem folgende Gleichungen:
  • und zum abspeichern
Aufgaben.pdf (0.1 MB)

Lösungen

Persönliche Werkzeuge