cards-deck: 100-199_university::111-120_theoretic_cs::111_algorithms_datastructures

- Notation | Bestimmen von Laufzeiten:

anchored to [[111.00_anchor]]


Motivation:

Wir möchten irgendwie quantifizieren, wie die Laufzeit eines Algorithmus mit zunehmender Menge von Eingaben verändert werden kann / sich verändert. Dafür möchten wir mit -Notationen betrachten, wie sich mit einem sehr großen die Laufzeiten von Algorithmen verändern.

[!Summary] Also: Wir möchten die Entwicklung der Laufzeit eines Algorithmus in Abhängigkeit von beobachten.

Meistens möchte man diese Erkenntnis mit den Laufzeiten anderer Algorithmen vergleichen und so etwa herausfinden:

  • ob der eine Algorithmus (garantiert) schneller oder langsamer als ein anderer sein wird.
  • ob zwei Algorithmen in ihrer Geschwindigkeit ungefähr gleich sind.

Charakterisierende Beobachtungen:

| maximal so groß:

f is of order at most g: Wie beschreiben wir diese Notation? #card there exists a number where follows afterwards Betrachtet man den definierten , dann ist erkennbar, dass kleiner sein muss, also garantiert schneller wachsen muss, als

[!Tip] Intuition Mit dieser Notation beschreiben wir, dass eine Einheit maximal so groß sein kann, es aber nicht sein muss. Sie darf nicht größer sein und es gibt einen Punkt im Verlauf, ab welchem diese Funktion garantiert kleiner sein muss, als ^1704708572170

example

at some point the function f is definitely gonna be smaller than function g. A constant shouldn’t interrupt this equation so much. With this idea we can easily leave out constants in large comparisons, because they should not interfere with the proportion at some point

| garantiert kleiner als:

: is of order strictly smaller than : Wie beschreiben wir diesen Sachverhalt mathematisch? #card

[!Tip] Intuition Diese Notation beschreibt den Punkt, dass garantiert kleiner bleiben muss, als . Erkennbar ist es, wenn man betrachtet, dass hier der muss. Während bei noch passieren konnte, dass der Limes etwa sein wird, also da konvergiert bzw. ein Häufungspunkt auftritt, ist es hier nicht erlaubt. muss so schnell anwachsen, dass der Limes sein wird ^1704708572178

| mindestens so groß:

: is of order at least : Wie beschreiben wir diesen Sachverhalt mathematisch? Was bedeutet es für uns? #card

[!Tip] Intuition Hier beschreiben wir einen Sachverhalt, bei welchem mindestens so groß sein muss, wie . Das wird damit beschrieben, dass ab einem gesetzten selbst unter Anwendung einer Konstante immer größer sein wird, als Anders beschrieben heißt das, dass der Limes von sein muss, was wiederum ein Indikator dafür ist, dass schneller wachsen muss ( dann ist es ) oder aber mindestens schneller als , da der Limes größer 0 sein muss! ^1704708572184

| garantiert größer als:

: f is of order strictly larger than : Wie beschreiben wir diesen Sachverhalt mathematisch? Was folgt für ?: #card

[!Tip] Intuition: Wenn wir wissen, dass stetig schneller wachsen wird, als , dann ist es auch logisch, dass der limes von sein muss, denn wächst schneller als . Da hier somit auf jeden Fall größer ist, kann man den Sachverhalt auch umgekehrt betrachten und sagen, dass ist. ( also echt kleiner sein muss, als f) ^1704708572189

| ist von gleicher Ordnung:

: has exactly the same order as : Wie beschreiben wir diesen Sachverhalt mathematisch? Was folgt daraus für ? #card

[!Tip] Intuition Wir beschreiben hiermit, dass von gleicher Ordnung, wie ist hier muss sowohl als auch liegen. Das heißt dann folgend:

  • dass maximal so groß,wie , aber auch mindestens so groß wie ist.
  • Beides vereint gibt an, dass der Limes größer und kleiner sein muss! ^1704708572193

Aus weiterer Betrachtung können wir weiter betrachten: Diese Eingrenzung wird damit vorgenommen, dass wir zwei Konstanten definieren müssen, sodass mit die untere Schranke gebildet werden kann und mit die obere Schranke. Wir wollen also zeigen, dass wir mit einer Konstante die gegebene Funktion unter Anwendung von “einschließen können”. Denn das ist nur möglich, wenn wir entsprechend auf gleichen Größenordnungen unterwegs sind.

Beispiele zur Bestimmung der Laufzeit

Unter der Anwendung eines Beispieles möchten wir betrachten, wie sich die Algorithmen mit großem N verhalten oder verhalten. Wir betrachten ferner: wir wollen also sehen, dass liegt. Dafür müssen wir uns zuvor eine Konstant überlegen:

Wähle ein C: sodass Weiterhin benötigen wir ein , sodass anschließend gilt, dass ! Für unser Beispiel wählen wir so etwa:

, denn dann: (( was wir ja wissen, denn schon ))

wir müssen jetzt noch ein entsprechendes definieren, ab welchem dann diese Aussage gilt

[!Important] darf hierbei frei gewählt werden! Am einfachsten wäre es, wenn wir jetzt ein bestimmen, ab welchem die Aussage zutrifft. Danach bzw. ausgehend von diesem Grundwert sollten alle höheren auch stimmen!

Also können wir jetzt etwa wählen, denn dann gilt die Aussage: Was folgend:wäre.

Wir könnten alternativ auch annehmen, dass: . Auch hier wollen wir dann zuerst ein bestimmen, und anschließend noch passend setzen:

Wählen wir etwa muss jetzt also gelten: Wenn wir jetzt schauen, dann ist ab diese Gleichung gelöst, denn ab diesem Punkt: wächst definitiv schneller, als

Daraus folgt dann auch: –> also definitiv kleiner als und , denn

weitere kleine Beispiele:

Definieren wir folgend: dann stimmen folgende Aussagen ( offensichtlich): , -> denn wächst zwingend kleiner als aber auch: -> Logarithmen sind immer kleiner als exponentielle Wachstumsraten! -> Konstanten können wir weglassen!

Addition zweier Integer der Länge n: -> ( denn wir addieren ) Multiplikation zweier Integer, Länge n und m -> , denn wir müssen entsprechend multiplizieren


Spezialfälle von Laufzeiten:

Es können noch einige Spezialfälle betrachtet werden, die das Rechnen und Arbeiten von Laufzeiten vereinfachen können:

  1. Ist ein Polynom mit Grad , so ist . Warum gilt das? #card

[!Tip] Grund, warum das größte Glied eines Polynom die Laufzeit festlegt. Das kommt daher, dass das größte Monom in dem Polynom bei einer Betrachtung gegen unendlich (bzw. wenn sehr groß wird) viel stärker wächst, als alle Monom, bei welchen der Grad ist. Aus dieser Betrachtung heraus ist es so, dass ^1704708572198

  1. Außerdem gilt: Jede polynomielle Funktion ist: und auch Warum? #card

[!Tip] Grund, warum polynomielle Funktionen garantiert kleiner als exp und garantiert gröser, als Die spezielle Exponentialfunktion beschreibt den Wachstum mit , welche sehr sehr schnell stark ansteigt Logarithmen sind in ihrem Wachstum immer schwächer ansteigend, weswegen sie auch immer kleiner sind, als eine exponentielle Funktion ^1704708572202

  1. Die Basis von Logarithmen ist trivial bzw. nicht relevant: warum ist sie zu vernachläsigen? #card

[!Tip] Basis von Logarithmen egal Wenn wir einen Logarithmus betrachten, ist die Basis egal: Das folgt aus: ( wir können Konstanten bei der Betrachtung vernachlässigen!) ^1704708572206

[!Explanation] Reason for this: , es werden Konstanzen beschrieben weswegen es nicht relevant ist, welcher Log genau gemeint ist, weil sie alle ungefähr gleich konvergieren

  1. Eine Funktion, die durch eine Konstante resultiert, wobei unabhängig von ist, hat eine Laufzeit von Wie folgt das? #card

[!Tip] Grund: Wenn wir eine Funktion betrachten, welche nur durch die Verwendung einer Konstante ist, dann ist der Faktor im Wachstum dieser Funktion nicht so relevant und kann bei einer Betrachtung der Laufzeit vernachlässigt werden. ^1704708572211


Rechenregeln:

Folgend möchten wir grundlegende Rechenregeln mit Werten der -Notation betrachten, die es vereinfachen mit diesen zu arbeiten / rechnen:

  1. ist und :: ^1704708572215

Also wenn in der Konkatenation der größte “Part” bzw. die größte Funktion ist, dann wird auch maximal so groß, wie sein –> also

  1. Ist :: ^1704708572219

Wenn wir die oberen Schranken von zwei Funktionen wissen, ist die Konkatenation dieser ebenfalls entsprechend der Konkatenation der Schranken, die gesetzt wurden.

  1. Ist :: ^1704708572223

bedeutung dieser regel

Wenn wir eine Funktion betrachten, die in eventuell mit weiteren Funktionen () multipliziert wird, kann man dieses Produkt auch aufteilen und somit resultieren.

  1. Bei Konstanten gilt; :: ^1704708572228

  2. Transitivität: :: ^1704708572233

[!Tip] Bedeutung Wir betrachten hier mehr oder weniger eine Transitivität von den -Notationen. Wenn wir also wissen, dass und weiter auch , dann können wir diese Abhängigkeit zusammenschließen und quasi folgendes resultieren:

  1. Abuse of Notation: Whenever one writes :: they actually mean , most of the time at least. ^1704708572238

Weiterführende Betrachtungen:

Mit dieser Grundlage lassen sich weitere Themen besprechen und folgern:

  • [[111.06_algo_runtimeanalysis]]
  • [[111.99_algo_ProblemComplexity]]