Laufzeit: Unterschied zwischen den Versionen
Sn (Diskussion | Beiträge) (Artikel angefangen) |
Sn (Diskussion | Beiträge) (Passt so) |
||
Zeile 4: | Zeile 4: | ||
== Beispiel: Schriftlich rechnen == | == Beispiel: Schriftlich rechnen == | ||
[[Datei:Traditional Addition Step 3.JPG|mini|Eine schriftliche Addition|200x200px]] | |||
=== Schriftliche Addition === | === Schriftliche Addition === | ||
Nehmen wir an, wir berechnen schriftlich die Summe <math>652+471 = 1123</math>. Diese Berechnung besteht aus drei kleinen Einzelsummen: <math>2+1 = 3</math>, <math>5+7=12</math> und <math>1+6+4=11</math>, wobei die 1 der Übertrag aus der letzten Addition ist. Jede dieser einzelnen Summen führen wir im Kopf durch, entscheidend ist die Anzahl der einzelnen Summen, die berechnet werden müssen. Um zwei ''drei''stellige Zahlen zu addieren, muss man also ''drei'' einzelne Additionen durchführen. | Nehmen wir an, wir berechnen schriftlich die Summe <math>652+471 = 1123</math>. Diese Berechnung besteht aus drei kleinen Einzelsummen: <math>2+1 = 3</math>, <math>5+7=12</math> und <math>1+6+4=11</math>, wobei die 1 der Übertrag aus der letzten Addition ist. Jede dieser einzelnen Summen führen wir im Kopf durch, entscheidend ist die Anzahl der einzelnen Summen, die berechnet werden müssen. Um zwei ''drei''stellige Zahlen zu addieren, muss man also ''drei'' einzelne Additionen durchführen. | ||
Allgemein gesprochen: wenn man zwei Zahlen mit jeweils <math>n</math> Ziffern addiert, muss man <math>n</math> kleine Einzel-Additionen durchführen. | Allgemein gesprochen: wenn man zwei Zahlen mit jeweils <math>n</math> Ziffern addiert, muss man <math>n</math> kleine Einzel-Additionen durchführen. | ||
'''Das heißt: Wenn sich die Länge der Summanden verdoppelt, verdoppelt sich auch die Rechenzeit bei der schriftlichen Addition. Verzehnfacht sich die Länge der Summanden, verzehnfacht sich auch die Rechenzeit.''' | |||
[[Datei:SchriftlicheMultiplikation2.svg|mini|Eine schriftliche Multiplikation]] | |||
=== Schriftliche Multiplikation === | === Schriftliche Multiplikation === | ||
{{ | Nehmen wir an, wir berechnen schriftlich das Produkt <math>8642 \cdot 9731= 84095302</math>. Für diese Berechnung müssen vier einzelne Multiplikationen durchgeführt werden: <math>8642 \cdot 9 = 77778</math>, <math>8642 \cdot 7 = 60494</math>, <math>8642 \cdot 3 = 25926</math> und <math>8642 \cdot 1 = 8642</math>, die dann versetzt aufeinander addiert werden. Jede dieser vier Multiplikationen besteht wiederum aus vier kleinen Multiplikationen aus dem Kleinen Einmaleins, sodass insgesamt sechzehn kleine Multiplikationen ausgeführt werden müssen. | ||
}} | |||
Zum Schluss werden noch vier Additionen durchgeführt, bei denen eine insgesamt achtstellige Zahl herauskommt. | |||
Allgemein gesprochen: wenn man zwei Zahlen mit jeweils <math>n</math> Ziffern multipliziert, muss man <math>n^2</math> kleine Einzel-Multiplikationen und <math>n \cdot 2n</math> kleine Einzel-Additionen durchführen. | |||
'''Das heißt: Wenn sich die Länge der Faktoren verdoppelt, ''vervierfacht'' sich die Rechenzeit bei der schriftlichen Addition. Verzehnfacht sich die Länge der Summanden, ''verhundertfacht'' sich die Rechenzeit.''' | |||
== <math>\mathcal{O}</math>-Notation == | |||
Die genauen Details, wie viele Schritte nun exakt nötig sind, sind eher unerheblich. Interessant ist nur, in welcher groben Größenordnung man unterwegs ist. Deswegen benutzt man in der Informatik die <math>\mathcal{O}</math>-Notation, um Laufzeiten zu beschreiben. | |||
* <math>\mathcal{O}(n)</math> bedeutet: zwischen der Länge der Eingabe und der Laufzeit besteht ein linearer Zusammenhang; wenn die Länge der Eingabe sich ver-<math>n</math>-facht, ver-<math>n</math>-facht sich auch die Laufzeit des Algorithmus. | |||
* <math>\mathcal{O}(n^2)</math> bedeutet: zwischen der Länge der Eingabe und der Laufzeit besteht ein quadratischer Zusammenhang; wenn die Länge der Eingabe sich ver-<math>n</math>-facht, ver-<math>n^2</math>-facht sich die Laufzeit des Algorithmus. | |||
* <math>\mathcal{O}(1)</math> bedeutet: zwischen der Länge der Eingabe und der Laufzeit besteht kein Zusammenhang; wenn die Länge der Eingabe sich ver-<math>n</math>-facht, bleibt die Laufzeit des Algorithmus konstant. | |||
Ganz allgemein gilt: Wenn ich sage: "Die Laufzeit vom Algorithmus X liegt in <math>\mathcal{O}(n^3)</math>", dann meine ich: "Die Laufzeit lässt sich als mathematischer Term mit der Variablen <math>n</math> angeben und es gibt eine Zahl <math>c</math>, sodass gilt: ab einer gewissen Schwelle ist der Term, der die Laufzeit beschreibt, kleiner als <math>c \cdot n^3</math>". | |||
Grundsätzlich kann in die Klammern hinter dem <math>\mathcal{O}</math> jeder beliebige mathematische Term geschrieben werden. Das Ziel der Notation ist es aber, die Größenordnung der Laufzeit schnell deutlich zu machen, weswegen man sich bemüht, den Term möglichst knapp, aber auch möglichst präzise zu halten. | |||
Die <math>\mathcal{O}</math>-Notation gibt nämlich nur eine obere Schwelle an. <math>\mathcal{O}(n^5)</math> heißt nicht, dass sich die Laufzeit exakt in der Größenordnung von <math>n^5</math> bewegt, sondern nur, ''dass sie nicht schneller wächst''. | |||
== Weblinks == | |||
* {{Inf-Schule|2.4.3.4|Laufzeitabschätzungen}} | |||
* {{Inf-Schule|2.4.1.4|Asymptotisches Wachstumsverhältnis}} |
Version vom 13. März 2024, 19:13 Uhr
Eine der wichtigsten Eigenschaften eines Algorithmus ist seine Laufzeit, das heißt, wie lange er benötigt, um seine Aufgabe zu erledigen.
Nun ist es natürlich offensichtlich, dass jeder Algorithmus eine kleine Eingabe schneller abarbeiten kann als eine große. Deswegen wird die Laufzeit eines Algorithmus immer in Abhängigkeit von der Länge seiner Eingabe angegeben.
Beispiel: Schriftlich rechnen
Schriftliche Addition
Nehmen wir an, wir berechnen schriftlich die Summe . Diese Berechnung besteht aus drei kleinen Einzelsummen: , und , wobei die 1 der Übertrag aus der letzten Addition ist. Jede dieser einzelnen Summen führen wir im Kopf durch, entscheidend ist die Anzahl der einzelnen Summen, die berechnet werden müssen. Um zwei dreistellige Zahlen zu addieren, muss man also drei einzelne Additionen durchführen.
Allgemein gesprochen: wenn man zwei Zahlen mit jeweils Ziffern addiert, muss man kleine Einzel-Additionen durchführen.
Das heißt: Wenn sich die Länge der Summanden verdoppelt, verdoppelt sich auch die Rechenzeit bei der schriftlichen Addition. Verzehnfacht sich die Länge der Summanden, verzehnfacht sich auch die Rechenzeit.
Schriftliche Multiplikation
Nehmen wir an, wir berechnen schriftlich das Produkt . Für diese Berechnung müssen vier einzelne Multiplikationen durchgeführt werden: , , und , die dann versetzt aufeinander addiert werden. Jede dieser vier Multiplikationen besteht wiederum aus vier kleinen Multiplikationen aus dem Kleinen Einmaleins, sodass insgesamt sechzehn kleine Multiplikationen ausgeführt werden müssen.
Zum Schluss werden noch vier Additionen durchgeführt, bei denen eine insgesamt achtstellige Zahl herauskommt.
Allgemein gesprochen: wenn man zwei Zahlen mit jeweils Ziffern multipliziert, muss man kleine Einzel-Multiplikationen und kleine Einzel-Additionen durchführen.
Das heißt: Wenn sich die Länge der Faktoren verdoppelt, vervierfacht sich die Rechenzeit bei der schriftlichen Addition. Verzehnfacht sich die Länge der Summanden, verhundertfacht sich die Rechenzeit.
-Notation
Die genauen Details, wie viele Schritte nun exakt nötig sind, sind eher unerheblich. Interessant ist nur, in welcher groben Größenordnung man unterwegs ist. Deswegen benutzt man in der Informatik die -Notation, um Laufzeiten zu beschreiben.
- bedeutet: zwischen der Länge der Eingabe und der Laufzeit besteht ein linearer Zusammenhang; wenn die Länge der Eingabe sich ver--facht, ver--facht sich auch die Laufzeit des Algorithmus.
- bedeutet: zwischen der Länge der Eingabe und der Laufzeit besteht ein quadratischer Zusammenhang; wenn die Länge der Eingabe sich ver--facht, ver--facht sich die Laufzeit des Algorithmus.
- bedeutet: zwischen der Länge der Eingabe und der Laufzeit besteht kein Zusammenhang; wenn die Länge der Eingabe sich ver--facht, bleibt die Laufzeit des Algorithmus konstant.
Ganz allgemein gilt: Wenn ich sage: "Die Laufzeit vom Algorithmus X liegt in ", dann meine ich: "Die Laufzeit lässt sich als mathematischer Term mit der Variablen angeben und es gibt eine Zahl , sodass gilt: ab einer gewissen Schwelle ist der Term, der die Laufzeit beschreibt, kleiner als ".
Grundsätzlich kann in die Klammern hinter dem jeder beliebige mathematische Term geschrieben werden. Das Ziel der Notation ist es aber, die Größenordnung der Laufzeit schnell deutlich zu machen, weswegen man sich bemüht, den Term möglichst knapp, aber auch möglichst präzise zu halten.
Die -Notation gibt nämlich nur eine obere Schwelle an. heißt nicht, dass sich die Laufzeit exakt in der Größenordnung von bewegt, sondern nur, dass sie nicht schneller wächst.