(C) as Excerpt, David Vajda 2025-06-08 Algorithmen in C, Exzerpt, Robert Sedgewick 1.) Laufzeit von Algorithmen, Analyse von Algorithmen 1, N, log N, N log N, N^2, N^3, 2^N 1: konstant, bzw, 1 oder 3 mal oder 4 mal oder 8 mal, waehrend N ist 2048 bis 4G 2: np vollstaendigkeit deterministisch: schleife, Hashwerte, immer weiterrechnen, Pruefsumme aber auch: fakultaet zerlegbar: 4! = 4*3! 3! = 3*2! ... oder sortieralgo: innere schleife aeussere schleife wuerde sagen, n! problem, aber egal wuerde sagen log N oder N log N problem ok, nur, das eine haengt nicht vom anderen ab deterministisch nicht deterministisch knoten im baum, ist nicht deterministisch knoten von der schlange, nachbarn rauf nachbarn in der schlange, kommt der erste runter wieder nachbarn und so weiter aber was passiert, haengt ab von knoten nachbarn und entscheidung ok: dieses problem, beschreibung richtig lernen, nebenbei: alles aufschreiben was da steht, mit oder ohne verstehen, verstehen hier mal ok aber einfach aufschreiben, also da steht sortieralgorithmen werke anderer und begriffe in np Sortieralgorithmen: Selection Sort Insertion Sort Bubble Sort wichtigstes vorweg: Selection Sort Insertion Sort Bubble Sort SIB BIS BSI oder wie auch immer, kann man sich merken Selection Insertion Bubble Vorsicht, Bubble nicht gleich Quicksort Bubble einfach um zu setzen, immer paarweise desweiteren: Selection Sort Insertion Sort Bubble Sort Quick Sort Quick Bubble Selection Insertion Dann: Shellsort, bisher nicht gehoert, merken ueber BASH, Shell, OK und eben so netter Name Selection Insertion Bubble Quick Shell SQBSI Dann kommt: Distribution Counting? Sortieren von Dateien und Grossen Datensaetzen Quicksort: Der Algorithmus Beseitigung der Rekursion kleine Teildateien ... Digitales sortieren ??? digitales sortieren neues phaenomen, Digitales sortieren, mehrere algo ebenso wie klassisch, verschiedene namen Bits Radix Exchange Sort Straight Radix Exchange Sort lineares sortierverfahren neues wort: prioritaetswarteschlangen, begriff heaps heapsort neuer algo: heapsort also jetzt SQSBI Shell Sort Quick Sort Selection Sort Bubble Sort Insertion Sort Stop: die 3 klassiker sind Insertion Selection Bubble vom Namen sind klassiker Insertion Selection Bubble Quick Insertion Selection Bubble Quick Shell neue Namen Heapsort Klassiker unter den Namen wie vielleicht auch Heapsort Mergesort also, die 4 klassiker plus 1 = shellsort und die anderen 2 klassiker vom namen insertion selection bubble quick shell heap merge dazu kommen, algos aus dem digitalen sortieren, quasi klassiker unter den namen bits radix exchange sort straight radix exchange sort also insertion selection bubble quick shell heap merge bits radix exchange sort straight radix exchange sort dann kommen noch namen im bereich mit dem ganzen digitales sortieren externes sortieren das vielleicht einfach merken, wie die algo selber digitales sortieren externes sortieren digital/extern dann kommt dazu digital, radix exchange, wurzel austausch oder was auch immer prioritaetswarteschlangen heap digital prioritaetswarteschlangen, heap mergesort, mischen mischen, bottum up mergesort externes sortieren sortieren-mischen mehrweg-mischen replacement selection mehrphasen mischen neue begriffe digitales sortieren externes sortieren radix exchange sort lineares sortierverfahren prioritaetswarteschlangen heaps heapsort mergesort mischen externes sortiern sortieren-mischen ausgeglichenes mehrweg-mischen replacement selection mehrphasen-mischen also, jetzt namen unter den sortieralgo bubble insertion selection bubble insertion selection quick shell bubble insertion selection quick shell merge heap mit allen namen bubble insertion selection quick shell merge heap radix exchange straight radix exchange jetzt gibt es digitales sortieren und externes sortieren aber dazu noch mischen mischen ist jetzt ein neuer begriff, so sehr prioritaetswarteschlangen nach pater noster klingt finde ich ist prioritaetswarteschlange, einfach heap auch so ein begriff trotzdem mischen digital extern und extern und mischen scheint gut zusammen zu tun sortieren mischen, mehrweg mischen und so weiter geheort zu extern ok also einteilung mit prioritaetswarteschlange digital extern prioritaetswarteschlange = heap mischen 4 grosse digital extern heap merge DEHM MEHD oder so Extern Digital Merge Heap EDMH ab, jetzt: 2025-06-08 1.) sortieralgorithmen lernen ohne wenn und aber und moeglichst ohne Inhalt Kommentar des Vajdas: Lernen mit inhalt macht selten sinn Dafuer gibt es ein anschauliches beispiel, man muss erst wissen wie ein entsprechendes ding heisst, benutzt man den namen dann haeufig genug wird man schon frueher oder spaeter lernen was drin steckt beispiel: sie wissen wahrscheinlich auch schon was ein auto ist, und den inhalt werden die wenigsten kennen, gerissenste ausgebildete automechaniker vielleicht. trotzdem werden sie nicht erst den inhalt des autos studieren und sich dann merken was es ist das ist mit Algorithmen genauso. erst lernen, wie sie heissen, ein paar sortieralgorithmen kann ich mir besonders gut merken, dazu gehoeren ich weiss nie, welcher es jetzt ist insertion sort oder selection sort und bubble sort wenn es aber zum beispiel um radix exchange sort geht, finde ich reicht erst mal der name alleine. einige algorithmen wird man immer mehrr lernen erst den, dann den. zum Beispiel, weiss ich mittlerweise SHA256 und so weiter aber ich weiss, was normales Hashing ist, normalst, wie bei sedgewick dazu kommt Adler32, Fletcher's checksum, Parity, Arith Mittel einiges weiss man schon ohne es zu wisen, wie es heisst, indem man die namen lernt weiss man es am ende, inhalte kommen immer mehr dazu mit den lernen ist es wie mit menschen aus gebildeten familien man sagt, das Linus Torvalds aus einer Familie mit Naturwissenschaftlern stammt, das ist zu erkennen am Namen und er macht immer wieder menschen darauf aufmerksam keine zu sein. da mag er recht haben. mein Name ist David, und sie sind trotzdem nicht alle ganz dumm Lempel ziv ist ein gutes Beispiel, aber David Ricardo ein anderes Also, totalschaden wuerde ich nicht sagen. Sondern, mein vater war phil prof, schoene buecher muss ich moegen, meine mama phil doktor und schreibt. gut, aber: ich sage so: man sagt im deutschen, in die gefahr in die man sich begibt, kommt man drin um. das ist richtig. manche leute vermeiden deswegen die gefahr um nicht drin um zu kommen, muessen sie sich nicht negativ anrechnen kommt mit dem alter, aber - sich in keine gefahr zu begeben, ist auch eine gefahr. nicht nur das - einen tot muss man sterben doch wie lernen leute in rein naturwissenschaftlichen familien begriffe besser, indem sie - sie staendig heeren wer info lernen will, der muss einfach, wenn die family es nicht tut staendig die begriffe sagen, die in lehrbuechern stehen deswegen unterstuetze ich keine angriffe gegen religioese, die etwas verehren was nicht ist, oder leute die etwas erklaeren ... ich sage: das kommt vielleicht spaeter, wenn sie bereits wissen, was es Ist kann man naemlich lernen und sie kommen auch aus einer welt voller sprache das ist das erste. das zweite ist, dass dieses thema was ich hier sage unwuerdig ist, aus einem grund. es wurde das NP Vollstaendigkeitsproblem geloest, und diese sprechweisen sind es. sie sind allenfalls lernwissenschaftlich oder erziehungswissenschaftlich die reinste erfindung allenfalls doch ein NP Vollstaendigkeitstheorem zu loesen ist viel besser, deswegen ersparen wir uns diesen ganzen mist. 1 log N N N log N N^2 N^3 2^N 1: ein mal oder hoechstens mehrere male, konstante laufzeit log N: Laufzeit eines Programm ist logarithmisch N: Laufzeit eines Programms ist linear N log N: mangels eines passenden adjektivs: linearithmisch: Robert Sedgewick N^2: laufzeit eines programms ist quadratisch N^3: programm hat kubische laufzeit 2^N: exponentielle laufzeit 1: konstante laufzeit log N: logarithmisch laufzeit N: lineare laufzeit N log N: linearithmisch: Robert Sedgewick N^2: quadratische laufzeit N^3: kubische laufzeit 2^N: exponentielle laufzeit Adjektive, auftreten: 1: konstante laufzeit vermutung: zum beispiel rest vom programm ... viele programme fuehren anweisungen durchschnittlich ein oder mehere male aus nicht mehr oder weniger log N: logarithmisch laufzeit: kennzeichen, bezueglich der laufzeit, symptomatisch: mit wachsenden N wird laufzeit allmaehlich langsamer loesen umfangreiches problem, wandeln es in kleinere probleme um... verringern den umfang um einen etwas kleineren geringeren N: lineare laufzeit Die Laufzeit ist ebenso gross, wie die Anzahl der Daten, proportionaler faktor... N log N: linearithmisch: Robert Sedgewick zerlegen das programm in kleiner probleme, die immer kleiner werden, loesen indem sie in kleinere Teilprobleme aufteilen und kombinieren ddan diese loesungen. N^2: quadratische laufzeit auftreten: typisch paarweise kombinationen von datenelementen doppelt verschachtelte schleife typisch i=0..N, j=0..N N^3: kubische laufzeit 2^N: exponentielle laufzeit typisches auftreten: gewaltsame methoden, brute Force Attack versuch alle Hashwerte durch brute force zu erraten oder passwoerter zu erraten log N: symptomatisch: werden mit wachsenden N allmaehlich langsamer auftreten: umfangreiches problem umfangreiches problem loesen indem sie es in einen kleineres problem umwandeln, wobei sie den umfang um einen gewissenkonstanten teil verringern N log N: ebenso, aber sie kombinieren am ende die entstandenen loesungen wiederum noch zusaetzlich miteinander das waere das erste thema: Analyse von Algorithmen Klassifikation von Algorithmen Berechnungskomplexitaet Jetzt der Begriff der Schranke, also Analyse von Algorithmen Klassifikation von Algorithmen, hier typischerweise 1, N, log N, N, N log N, N^2, ... Berechnungskomplexitaet Jetzt der Begriff der Schranke, also Hier: g(N), O(f(N)) was heisst das? na ja, wir haben nicht nur 1, N, log N, ... sondern in wirklichkeit haben wir natuerlich eine funktion, bzw. abbildung die laufzeit betraegt: g(N) eines programms man koennte es auch f(N) h(N) ... nennen gut, die laufzeit betraegt einfach g(N) und wir gehen aus, dass es sich nicht einfach um eine wie auch immer sehr lineare abbidung handelt f(N) waere wiederum eine Abbildung bezogen auf eine Menge N, die sich sagen wir nahezu konstant verhaelt f(N) = k, sagen wir aber, alternative denkweise f(N) > g(N) das gilt immer, es gilt fuer alle N g(N) < f(N) gut, dabei wird f(N) von g(N) nie ueberschritten, dann laesst sich g(N) als obere Schranke annehmen obere und untere Schranke obere und untere Grenze Minimum und Maximum Supremum und ... Minimum und Maximum obere und untere Grenze obere und Untere Schranke ... obere Schranke: O untere Schranke: U mathematisch meist: S, obere schranke s: untere Schranke so, dann ist O(f(N)) obere schranke von g(N) ganz einfach, unter einer bedingung Konstante c0 und N0 fuer alle N > N0 das heisst nicht beliebig, wie immer anfang und ... c0 f(N) das heisst, wir denken ab einem initialwert, anfang, vollstaendige induktion z.B. und ab dem gilt c0 und erst ab N0 gedacht ... ok also: Analyse von Algorithmen Klassifikation von Algorithmen, hier typischerweise 1, N, log N, N, N log N, N^2, ... Berechnungskomplexitaet Jetzt der Begriff der Schranke, also Hier: g(N), O(f(N)) gut, jetzt: Analyse von Algorithmen Klassifikation von Algorithmen, hier typischerweise 1, N, log N, N, N log N, N^2, ... Berechnungskomplexitaet Jetzt der Begriff der Schranke, also Hier: g(N), O(f(N)) analyse des durchschnittlichen falls wir hatten, durchschnittlicher fall an verteilung von daten + verteilung von daten: na ja, sortieralgorithmus ist wohl deterministisch, wenn man zum beispiel die schleifen anguckt trotzdem: das vertauschen wird bei, trotz gleichbleibender vergleiche mehr, also wenn die verteilung anders ist, mehr taeusche eventuell wenn nicht durch den ersten durchlauf schon alles richtig einfach getauscht wurde vorsicht tricky, nicht so schnell so, deterministisch bleibt deterministisch anderes problem: graph: guenstige verteilung der daten 2. problem: programm selbst kann muss aber nicht hinzukommen BFS: stur die knoten in der ersten permutation wie vorgegeben an nachbarn durchlaufen das ist auch eine entscheidung, eine sture entscheidung aber, es gibt die moeglichkeit sich trotzdem noch weitere entscheidungen einfallen zu lassen, indem ich noch was dazu tue aber: hier arbeitet programm an entscheidungen, immer dasselbe zu tun, ist auch eine nur: hier haengt es von der verteilung der daten selber ab aber: anders problem wachsendes N OK, wachsendes N, mehr Daten ist ein problem der Verteilung weil je groesser eine menge ist, die kardinalitaet ist teil der menge aber: man kann die elemente bei gleicher menge anders verteilen bei einigen programmen vielleicht mehr oder weniger egal wo bei anderen gar nicht ... unguenstigster fall Analyse von Algorithmen Klassifikation von Algorithmen, hier typischerweise 1, N, log N, N, N log N, N^2, ... Berechnungskomplexitaet Jetzt der Begriff der Schranke, also Hier: g(N), O(f(N)) analyse des durchschnittlichen falls naeherungsweise und asymptotische ergebnisse Name: Robert Sedgewick Obere und untere schranke, O und o eigentlich, Supremum und Infimum Mathematische Grundlagen: Luise Unger, Fernuni Hagen obere untere Schranke obere und untere Grenze, Minimum und Maximum Supremum und Infimum, S und s alternative Schreibweise, Supremum: S infimum: s Obere Schranke???: O Untere Schranke???: U Maximum??????????!!!: M Minimum??????????????!!!: m andere Formulierung: O-Schreibweise also, Obere Schranke, O(f(N)) Obere schranke, schreibweise, wenn f(N) diese obere Schranke angibt. Berechnungskomplexitaet hier begriff: obere schranke u. untere schranke O-Symbolik, O-Schreibweise enthaelt impliziet, die Konstanten c0 und N Naeherungsweise und assymptotische Ergebnisse 1. Frage, .. erst mal das oben in der liste ergaenzen erste frage: bisher haben wir 1 N lg N N lg N N^2 ... zweite frage: es gibt ja polynome auch bei robert sedgewick ist die rede von polynomen wie waere es mit 2^N + N^3 + N^2 + N + 1 + ln N 1: konstante laufzeit log N: logarithmisch laufzeit N: lineare laufzeit N log N: linearithmisch: Robert Sedgewick N^2: quadratische laufzeit N^3: kubische laufzeit 2^N: exponentielle laufzeit Analyse von Algorithmen Klassifikation von Algorithmen Berechnungskomplexitaet Analyse des Durchschnittlichen Falls Naeherungsweise und asymptotische Ergbnisse ... der ausdruck koennte eine folge, von aus kleiner werdenden termen bestehen ohne, den gerade, es geht ja auch c3 N log N + c2 N/2 log N/3 + ... oder so. fuehrender term ... immer kleiner werdenden termen, koennte term