Тёмный

Laufzeitkomplexität von Programmen bestimmen 

LernenInVerschiedenenFormen
Подписаться 2,9 тыс.
Просмотров 77 тыс.
50% 1

Empfehlung: Mit 1,5-facher Geschwindigkeit angucken
Falls Fehler gefunden werden: bitte in die Kommentare :)
Video erstellt mit HyperCam2

Опубликовано:

 

10 авг 2018

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 66   
@alexander-iu5bf
@alexander-iu5bf 4 года назад
Bester Abschluss beim Erklärvideo : "Ich hoffe, das Video hat nicht zu sehr verwirrt."
@danielkoch8736
@danielkoch8736 2 года назад
"Benutzt niemals i und j beide!" Mein Professor: "Benutzt i und j in diesem Fall."
@Barista12345
@Barista12345 Год назад
Jeder Programmierer macht das :D
@MHeimscheiser
@MHeimscheiser 5 лет назад
9:07 der war ja so trocken, dass ich ein Lachflash bekommen hab :D
@lerneninverschiedenenforme7513
@lerneninverschiedenenforme7513 4 года назад
freut mich, dass ich amüsieren kann :)
@eriksomehow4249
@eriksomehow4249 3 года назад
das war irgendwie echt so stumpf da musst ich auch erstmal lachen hahaha
@BillCipher1337
@BillCipher1337 4 года назад
2:34 mein Professor: Hold my variables
@d1amxnd
@d1amxnd 5 лет назад
Vielen Dank! Und auch Danke für die Empfehlung, hilft extrem wenns der Abend vor der Klausur ist :D
@Guterzogenbistdunich
@Guterzogenbistdunich 3 года назад
Danke !! Ich war voll am Verzweifeln wegen des Themas aber jetzt habe ich das echt gecheckt. In 1 Woche bestätigt mir das dann mein Prof hoffentlich! :D
@MREiermann1000
@MREiermann1000 5 лет назад
danke fürs video! hat mir auf jeden Fall mehr Klarheit im Thema verschafft.
@lerneninverschiedenenforme7513
:)
@TommyStrife
@TommyStrife Год назад
Sehr verständlich! Bringt mich dem Thema gewiss näher :D
@imransiddique6725
@imransiddique6725 2 года назад
Das Video hat sehr geholfen. Danke sehr.
@xfighter8839
@xfighter8839 Год назад
Danke für die Erklärung! Hab bald Informatik Klausur und meine Lehrerin hat es nicht verständlich genug erklärt. Habs jetzt verstanden
@norn-sama3407
@norn-sama3407 Год назад
Danke, hat sehr fürs Mathestudium geholfen und btw sehr angenehme Stimme :)
@drdoombo984
@drdoombo984 5 лет назад
Tolle Erklärung Danke !
@staychill2590
@staychill2590 3 года назад
Sehr gutes Video. danke :D
@markusGone
@markusGone 3 года назад
Hey danke viel mals. Hat mir echt geholfen 👍
@avt996
@avt996 5 лет назад
Danke dir !!
@Coffee_Bubblee
@Coffee_Bubblee Год назад
Super Video!
@miguelnuno928
@miguelnuno928 3 года назад
Besser als mein Professor
@ajmg1993
@ajmg1993 2 года назад
9:07 xD ich hatte es erwartet aber dann haste kurz ne pause gemacht und ich dachte oh er lässt es dabei und dann kahm die supper worstlaufzeit auf die ich gewartet habe und ich habe mich gefreut :,D
@kovoproxy
@kovoproxy 4 года назад
Danke Bro!
@habaguy
@habaguy 5 лет назад
Nice
@sebastiand.5023
@sebastiand.5023 5 лет назад
Tolles Video danke ! Eine Frage hätte ich: Wenn in meiner for schleife folgendes steht: for(i = 1; i
@lerneninverschiedenenforme7513
Du meinst insgesamt sowas wie for (p = 1; p
@sebastiand.5023
@sebastiand.5023 5 лет назад
@@lerneninverschiedenenforme7513 sorry war gestern schon spät ^^' ja es gibt 2 for loops und deswegen dacht ich, dass es automatisch n^2 ist. Danke für die Antwort! Ist eigentlich eh einleuchtend.
@lerneninverschiedenenforme7513
@@sebastiand.5023 Ich hoffe du hast es verstanden :) Du haettest nur deswegen n^2, wenn du "n" mal eine Schleife durchlaeufst, in der du "n" mal eine Schleife durchlaeufst: ----- for ( n mal ) for (n mal ) ----- also n × n fuer das Bsp eben ist ja ------ for (n mal) for (log(n) mal) ------ also n × log(n)
@MrGurke-qo5zd
@MrGurke-qo5zd 7 месяцев назад
banger video
@MrChaosplay
@MrChaosplay 5 лет назад
Wenn ich vereinfachen muss und es lautet O(1/n + 10) ist das Ergebnis dann O(1) weil für n gegen unendlich das Ganze gleich null ist? Oder wird die Konstante ignoriert? Ich weiß es ist ein sehr theoretisches Beispiel, da 1/n wohl kaum in einem Programm auftaucht, aber in Probeklausuren hab ich Aufgaben in der Form häufiger gesehen.
@lerneninverschiedenenforme7513
edit: old
@MrChaosplay
@MrChaosplay 5 лет назад
@@lerneninverschiedenenforme7513 Vielen Dank für die schnelle Antwort und ja das macht schon Sinn.
@MrChaosplay
@MrChaosplay 5 лет назад
Kleines Update, hatte doch noch mal die Gelegenheit den Prof zu fragen, also es zählt ja immer der höchste Exponent und bei einer Konstanten kann man sich immer n^0 dazu denken und dieser ist eben höher als n^-1. Trotzdem danke für die schnelle Antwort.
@lerneninverschiedenenforme7513
@@MrChaosplay Vielen Dank fuer das Update hier! Klingt sehr einleuchtend. Ich habe meine Antwort sicherheitshalber geloescht.
@FISCHBESTECK5700
@FISCHBESTECK5700 4 года назад
nice
@mrkokolore6187
@mrkokolore6187 5 лет назад
Danke
@FilmfanOliver1992
@FilmfanOliver1992 6 лет назад
Cooles Video, echt toll, aber wie ist es mit der Speicherkomplexität in dem etwas "größeren" Programm ?
@lerneninverschiedenenforme7513
Tut mir leid, das bin ich komplett uebergangen. Bei Speicherkomplexitaet bin ich leider nicht ganz so sicher. Sollte aber eigentlich genauso funktionieren: - In dem Teil rechts oben (fak = new int[n]) werden n Speicherplaetze reserviert. Also O(n) - Ueber die Rekursion wird dann die Funktion nochmal aufgerufen, aber dann ist fak nicht mehr null und es wird kein Speicher mehr reserviert. Daraus ergibt sich meines Erachtens eine Gesamt-Speicherkomplexitaet von O(n)
@FilmfanOliver1992
@FilmfanOliver1992 6 лет назад
Ja aber bei der Rekusion ist es doch so das der Stack immer weiter "wachst" und da durch die Speicherkomplexität weiter steigt ?
@lerneninverschiedenenforme7513
In deinem speziellen Fall ist das nicht dramatisch. Der Stack-Wuchs (was ein Wort) belaeuft sich auf O(n), weil jede Funktion sich selbst nur einmal aufruft. (D.h. es wird insgesamt n mal fakultaet() aufgerufen.) Das waeren dann zusammen mit dem Heap O(n+n) = O(2n). Und da wir konstanten kuerzen bleibt wieder nur O(n) uebrig. (Die lineare Kurve ist zwar durch "2n" in der Tat steiler, aber immernoch linear. Und "linear" ist alles, was wir ausdruecken wollen) Und vielleicht das noch als kleine Anmerkung (von der du dich aber nicht verwirren lassen sollst): Wenn du deine Funktion so umbaust, dass du eine Tail-recursion hast, dann hast du nicht mal mehr den Stack, der mitwaechst.
@FilmfanOliver1992
@FilmfanOliver1992 6 лет назад
Ja aber es kann aber irgendwann zu einem Stack-Overflow kommen, da wäre doch der Stack-Wuchs relevant ?
@lerneninverschiedenenforme7513
Du meint, weil ich aus O(2n) ein O(n) gemacht habe? Fall ja, dassn:Ein Stack-Overflow ist bei der O-Notationsbetrachtung nicht Punkt. Bei der O-Notation wird nur betrachtet "in welcher Form" etwas wächst (linear, quadratisch, logarithmisch,...). Merke auch, dass ein Programm mit Speicherverbrauch O(9283239n) auf O(n) gekürzt würde, obwohl es ne ganze Menge Speicher frisst.
@FilmfanOliver1992
@FilmfanOliver1992 6 лет назад
welche Bedeutung haben denn kleine o´s ?
@lerneninverschiedenenforme7513
Am besten guckst du dazu im Internet, falls es dich interessiert (Mathematisch muss der Grenzwert bei kleinen Os gegen Null gehen). Insgesammt gibt es soweit ich weisz 5 oder 6 verschiedene Symbole in diesem Zusammenhang. Am wichtigsten sind aber soweit ich weisz nur die groszen O s. Ich persoenlich wuerde es erst nachgucken, wenn ich in der Literatur drueber stolper.
@sumafaruk6708
@sumafaruk6708 5 лет назад
Sehr schön erklärt, hättest du vielleicht auch etwas zu O(√) ?
@lerneninverschiedenenforme7513
Ad-hoc faellt mir dazu leider kein Beispiel ein :/
@like1the1sun
@like1the1sun 4 года назад
k = n; i = 1 while(k>0) { k = k - i; i = i + 1; }
@ellia5873
@ellia5873 2 года назад
danke, ich habe eine frage wenn wir for{for{if}else}}} haben und bei else steht eine Anweisung wie n+= (a[i]+a[j]) *x; oder n += a[i-1]-n wie sollen wir rechnen? ist O(n) oder O(1)? wann sollen wir wissen ist O(lg(n)) ???
@lerneninverschiedenenforme7513
> wie sollen wir rechnen? ist O(n) oder O(1)? Ich gehe davon aus, dass du fragst nur wegen dem "if". Versuche das Problem runterzubrechen: "(a[i]+a[j]) *x" hat nichts mit der Groesse von n zu tun, also O(1). Aendert sich der "Aufwand" "a[i-1]-n" zu berechnen, wenn n groesser wird? > wann sollen wir wissen ist O(lg(n)) ??? Das ist nicht boese gemeint: Ich empfehle dir an deiner Grammatik zu arbeiten. Sonst laeufst du Gefahr, dass Leute nicht verstehen, was du von ihnen willst. Schreib eventuell deinen Satz in Microsoft Word und lasse ihn korrigieren.
@shittalkatitsfinest3097
@shittalkatitsfinest3097 2 года назад
King
@kiralighto2573
@kiralighto2573 2 года назад
Gibst es andere Übungsaufgaben?
@Sebastian-zs8cp
@Sebastian-zs8cp 6 месяцев назад
Geht man hier von Block zu Block if{} und schreibt es dann so auf O(1) + O(1) + O(n) = O(n)?
@lerneninverschiedenenforme7513
@lerneninverschiedenenforme7513 6 месяцев назад
Erstmal ohne deine Frage direkt zu beantworten: Ich denke das kannst du so machen (wenn ich es richtig verstehe). Dann zu deiner eigentlichen Frage: 'Wie "man" das macht'. Das kann ich nicht (mehr) beantworten. Da aber im Endeffekt nur das Ergebnis ( = die Klassifizierung des Algorithmus / des Codes) wichtig ist, ist das "man" meines Erachtens sowieso nicht so wichtig.
@pascal5197
@pascal5197 3 года назад
Hier ein besserer Weg zum Lösen der Fakultät mit Rekursion: public static int fakultät(int n) { if (n == 1) return n; else return fakultät(n - 1) * n; }
@Mrgamer4you1
@Mrgamer4you1 3 года назад
naja fakultät von negativen Zahlen geht ja nicht das muss novh ergänzt werden sonst perfekt
@FilmfanOliver1992
@FilmfanOliver1992 4 года назад
Könnte ein optimierter Kompiler die Laufzeikomplexität verbessern ?
@lerneninverschiedenenforme7513
@lerneninverschiedenenforme7513 4 года назад
Das kommt ganz darauf an, was du unter "optimiert" verstehst. Allgemein wuerde ich davon ausgehen, dass er es nicht kann. IdR. heiszt "Laufzeitkomplexitaet verbessern" = "Anderer Algorithmus". Ich glaube nicht, dass Compiler z.Zt. sowas leisten koennen.
@FilmfanOliver1992
@FilmfanOliver1992 4 года назад
@@lerneninverschiedenenforme7513 Es gibt C Compiler die erkennen z.b unnütze for-Schleifen oder If Statements und optimieren den assemblierten Code.
@lerneninverschiedenenforme7513
@lerneninverschiedenenforme7513 4 года назад
@@FilmfanOliver1992 Zwischen for-Schleifen-Optimierung und Algorithmenumschreibung liegen Welten :)
@FilmfanOliver1992
@FilmfanOliver1992 4 года назад
@@lerneninverschiedenenforme7513 Wenn ein Algorithmus nur eine Schleife(ohne Body) hat mit O(n) und diese vom Compiler weg optimiert wird hat der Algorithmus nurnoch O(1) ?!
@lerneninverschiedenenforme7513
@lerneninverschiedenenforme7513 4 года назад
@@FilmfanOliver1992 Nein, das ist falsch. Der algorithmus hat immer noch Komplexitaet O(n). Weil es (z.B. ein Groeszenvergleich fuer eine Sortierfunktion) dann immernoch fuer jedes Element gemacht werden. D.h. es ist egal, ob ich schreibe: data[3]; for (int i = 0; i != 3; ++i){ doSomething(data[i]); } Oder ob ich schreibe: doSomething(data[0]); doSomething(data[1]); doSomething(data[2]); Je mehr Elemente du hast, desto mehr Funktionsaufrufe hast du - und zwar proportional. 5 Element => 5 aufrufe (egal ob Schleife oder ohne Schleife). Anmk. Vergiss auch nicht, dass O(1) (Achtung, jetzt nicht O(n)) auch 10.000 Zeilen Code sein koennen. Aber diese 10.000 Zeilen werde nicht mehr oder weniger, wenn deine Daten mehr oder weniger werden.
@nel6963
@nel6963 Год назад
warum wird die 5 weggekürzt?
@lerneninverschiedenenforme7513
An welcher Stelle? Zeit?
@mariusschroeter
@mariusschroeter 4 года назад
Wie mich das triggert wenn die geschweiften Klammern in einer eigenen Zeile stehen :D
Далее
Laufzeiten bestimmen
19:43
Просмотров 21 тыс.
Die O-Notation EINFACH ERKLÄRT! (Landau Notation)
10:43
БИМ БАМ БУМ💥
00:14
Просмотров 3,6 млн
O-Notation (Landau-Symbolik)
19:17
Просмотров 59 тыс.
Learn Big O notation in 6 minutes 📈
6:25
Просмотров 219 тыс.
Big-O Notation - For Coding Interviews
20:38
Просмотров 438 тыс.
Landau-Symbole, Beispiele
17:09
Просмотров 38 тыс.
Big-O notation in 5 minutes
5:13
Просмотров 1,1 млн
Asymptotische Laufzeit
33:32
Просмотров 10 тыс.
Welche Programmiersprache soll ich zuerst lernen?
9:09
Monte Carlo Simulation
10:06
Просмотров 1,4 млн
Big O Notation - Code Examples
15:18
Просмотров 104 тыс.
The Brachistochrone, with Steven Strogatz
16:02
Просмотров 1,3 млн