2025-07-18 ...before ...npvollstaendig20250608.txt

(C) David Vajda as Excerpt
2025-06-08
NP-Vollstaendigkeit

leichtes problem
schweres problem

nochmal:


leichtes problem
schweres problem
manchmal nur durch haarfeinen unterschied gegeben #


effizienter algo
durchschnittlicher fall
unguenstiger fall

graphentheorie, mathematische grundlagen
    bitte trotz oekonomie bitte ueben
        sha, gut, mit division und rest gutes thema
        aufbau von zahlen
        maedchen feiern, nicht schlimm, typ kommt: hey girl party, toll, aber
        ganze zahl, kein thema, geile kurve, ehrlich, aber schau mal
            mathematische grundlagen, aufbau zahl und
            du kannst darauf verzichten, wenn du mathematik kannst, weil, das praktische problem
            mit dem du zu tun hast, ist eigentlich nur eine verschiebung, du musst nur die kleinste einheit nehmen #
            beispiel: AD-wandler, Atmega8, 256 werte
                fourier-reihe ich einigermassen verstanden, interessant, FFT
                warum: ich kann ein wenig Lempel Ziv, aber no problem, du kannst mit Atmega8, sound machst smartphone und co #
                egal, du kannst lernen SMS protokoll und co. du musst komprimieren, FFT, oder Lempel Ziv
                oder besser, du musst: Hash, du musst, Pruefsumme, du musst IBAN, du musst Abakus und Co#
            was fragst du. dann kommt signal, da gibt es: gausfunktion, irgendwelche peaks, du fragst, hae, berechnen
            es gibt ein buch: da sind funktionen drin, auf oszi, fuer nachrichtentechnik, du musst nur gucken, form #
            hat namen
        was willst du? SMS nur protokoll: musst pruefsumme und immer das gleiche brauchst ganze zahlen ...


    ok, bitte
        trotzdem an mich: graphen zur uebung machen, std. uebung jeden tag. geht nicht drum ob kurs entsprechend bis zum naechsten #
        mal ueben einfach
        das ist wie quine mc cluskey, schaltwerk in der computersysteme i/ii  #
        brauchte - 15 jahre oder so
        jetzt robert sedgewick, kommt mit np vollstaendigkeitsproblem, was sehe ich
            gleichung der booleschen algebra
            bei problemen, deterministisch, nicht deterministisch, np vollstaendigkeit
            haette nichts verstanden
        ... ok und ich denke, so muss es jetzt auch sein, algo mathematik lernen, immer weiter
        uebung, uebung, uebung, irgendwann flow


        also, erstes problem,
            algo mathematik ist wie cs i/ii
            cs 12 ist mathematik
            algo mathematik immer machen uebung, uebung, uebung, spaeter pruefung...

        ok, das ist mein problem, der flow


        und dann geht es: naechstes thema, wir brauchen ueberall graphen


        graphen, graphen, graphen, ...
            und nebenbei ganze zahlen, wegen pruefsumme und co kg


        aber, graphen: nie genug, habe noch skript, erweitert das problem


        was fuer uebungen, ohne kurs einfach
            euler, euler, euler
            tiefensuche, breitensuche
            und ein paar std. uebungen


        gut, damit beim thema


    anschauliches beispiel:

        finde den kuerzesten pfad vom knoten x zu knoten y in einem gegben gewichteten graphen

        algo math:

        G=(E,V)

        Pfad: P_n = (v_i, v_(i+1), ..., v_(i+m))
        mit e_(i+1) = (v_(i+1), v_i)

        irgendwie so, was halt ein pfad ist,


        was ist ein kuerzester pfad

            na ja, ein pfad ist menge

            wenn |P_n| < |P_m|

            fuer alle m, dann ist ersterer der kuerzeste, irgendwie so


        viele definitionen wahrscheinlich, die anzahl der kanten, ...
        deg(...)
        es gab auch eine laenge und so

        ich sage nicht jetzt, aber drueber nachdenken

        pfad, robert sedgewick
            mit zyklen
            und ohne

        drueber nachdenken, nicht jetzt aber spaeter

        1.) wie lautet der kuerzeste pfad
        2.) frage:

        problem: np vollstaendigkeit

        beim lernen, wo einbauen
            ich finde, ehrlich gesagt, dass Hash werte gut in algo math passen, weil
            da aufbau von zahlen pruefsumme immer gut

            ich finde dass np vollstaendigkeit und all das laesst sich auch gut da unterbringen



        drueber nachdenken, nicht jetzt aber spaeter

        1.) wie lautet der kuerzeste pfad
        2.) frage: wie lautet der laengste


        gute frage, sedgewick
            was ist mit zyklen
                gut bedingung, ich darf einen zyklus nur ein mal durchlaufen.

                ich finde dieses problem jetzt nicht so extrem kompliziert, weil ich kann
                ja schlicht ergreifend den kreis nur so betrachten, dass er durchlaufen werden
                muss so viele knoten wie im kreis

                umgekehrt, frage ich mich: wenn ich viele kreise, eulertour habe, dann muss ich einfach alle durchlaufen

                frage: geht es geschickter?
                    ich wuerde sagen, natuerlich nein, nur: dann muesste ich nur alle kreise zusammen tun
                    ich muesste ausprobieren wie besser

                doch eulertour: egal, wie: die anzahl der durchlaufenden kanten bleibt die gleiche
                ich kann so gehen oder so
                    irrtum: ein knoten mit 6 kanten ich gehe 3 mal rein und 3 mal raus,#
                    aber ich werde so oder so, bei einer eulertour immer gleich brauchen

                was automatisch die loesung des problems darstellt, der laengste weg
                es ist die eulertour

                weil: die eulertour

                falsch gedacht, wenn x gleich y ist, wenn beides x ist, anfang und ende gleich
                dann ist es die eulertour


            und wenn nicht, lautet die frage:

                ich soll den laengsten weg nehmen, ich koennte so ungefaehr, vielleicht
                zwei eulertouren nehmen, wie hier, muss ich jede kante bedienen


                das waere doch eine idee

                so oder so, selbst, wenn
                x und y nachbarn

                das entspricht nahezu: x = y

                auf einem kreis, liegen sie dann nebeneinander ...

                aber: wenn nicht, dass ist dasselbe problem wie bei der eulertour
                es soll ja der laengste weg sein

                ich muss also nur das machen

                indem ich jede kante ablaufe, ein mal, mehr ist nicht erlaubt, habe ich automatisch
                dasselbe problem

                nur eine frage

                sind es genau zwei knoten
                    x und y

                dann lautet die antwort:
                    sind x und y im selben kreis
                    dann aehnlich wie: x=y
                    aber abzueglich der distanz von x und y im selben kreis

                die frage, nach dem laengsten wege, kann keine kante doppelt gegangen werden, ist es die eulertour

                dann frage: x und y sind nicht im selben kreis, bleibt das problem der eulertour

                x im ausgangskreis, mit einem letzten unterschied

                der kreis, in dem y ist und den muss es geben und nicht zwei mal

                ....


                dann muss ich nur diesen kreis gesondert betrachten

                er bringt irgendwo abzug


                ...

                auser, ..

                    y hat 20 nachbarn oder 16 oder so
                    und kommt dazu, x auch noch und so

            aber glauben wir, der laengste weg ohne zyklen


    robert sedgewick sagt nicht besser, als pruefen aller pfade.

    why, problem
        ist tiefensuche, breitensuche mist


        kann ich nicht glauben, letzten endes, wenn kein zyklus

        er sagt, pruefen aller pfade, kein zyklus, heist kreisfrei
        heisst baum, bedeutet,

        ich finde das komisch, ehrlich gesagt, weil

        er sagt, kein algorithmus besser, als das ausprobieren aller pfade in mathematik

        ich glaube an sein problem, aber in diesem zusammenhang?

        tiefen und breitensuche

        was habe ich in algo mathematik gelernt

        in einem baum, kreisfreier graph, fuehrt immer genau ein pfad von einem knoten zum anderen.


        das ist eine relativ einfache sache, ich muss zu der wurzel, bei einem baum kann alles eine wurzel
        sein ich muss ihn nur umdrehen

        ich muss den baum in zwei baeume zerlegen, in den einen teil

        ich waehle willkuerlich irgendeine wurzel, irgendwo

        abhaengig von der, waehle, ich bei einem binaeren baum

        und: jeder kreisfreie graph, der zusammenhaengend ist, aus einer komponente besteht, ist
        ein baum, ich kann auch keine falschen pfade gehen, sonst muss ich zurueck, das geht nicht

        gut, und: ich gucke, ausgehend von der wurzel, in welchem teil ist der knoten x und y irgendwie so

        drueber nachdenken ...

    gut, gehen wir davon aus alles ausprobieren


    aber, das ist reiner bloedsinn

    in einem graphen mit kreisen, gesetzt aus y gehen nicht 20 pfade rein und raus, aber dann bleibt eine eulertour
    abzueglich

    und ein baum, es gibt nur einen pfad, der zwischen x und y verlaeuft

    nur einen..

    gut

    angenommen ich muss alles ausprobieren

    sie haben recht, das problem ist es trotzdem

    ich muss von der wurzel, zu den blaettern oder von den blaettern zu der wurzel, wo auch immer
    diese willkuerlich gewaehlt, was einfach aussieht, bei ueblichen baeumen


    sie haben ja recht, nur:

    ich habe das so nicht kritisiert, warum so aggro: sie muessen erst mal argumentieren und nachdenken und nicht so tun.

    ja, so ein baum,
        wenn man so java und c nimmt, sieht klein nett aus, darum geht es ja nicht, es ist die frage, nach der effizienz
        des algos, optische taeuschung

        wie so oft. selbst, wenn: es nur 10 blaetter waeren, das problem bleibt

        ok, dabei muss man bei einem baum klassischer weise nach links und rechts gehen, bis man kann

    tiefensuche breitensuche klingt nett, ist aber das

    in wirklichkeit std. algorithmus links und rechts


    egal

    kuerzeste pfad einfach
    laengste pfad schwierig

    aber das ist ja der unsinn, mein herr da draussen, du sagst,

    aber wo verlaeuft das

    das ist doch stumpfsinn

    in einem kreisfreien graph, das ist dein stumpfsinn, lange oder nicht,
    da steht

    ach so, da steht den laengsten pfad ohne zyklen

    ok, das sieht aus, nicht graph ohne zyklen und den laengsten pfad
    sondern graph mit zyklen und laengster pfad, ohne zyklen zu machen

    dann versagt eulertour und

    aber das ist trotzdem doof

    kreis, darin gehen 2 rein, 2 raus,

    kurz der kreis, liegt so dran

    ja und nun muss ich den zyklus gehen?

    ohne zyklen also nein

    aber knoten uebergangen, die nicht drin

    ...

    und wenn ich das mache, automatisch

    und so on


    leichte: existiert ein pfad von x nach y mit einem Gewicht <= M
    schwer:  existiert ein pfad von x nach y mit einem Gewicht >= M

    ok, sagen wir, ok

    Breitensuche, erstes problem: lineare Zeit
    Zweites problem: Exponentiell

    nichtdeterminismus leicht gemacht


    beispiel:
        breitensuche
        tiefensuche


        ich muss raten

    das geht einfach so, ich lege einen knoten in die schlange
    dann gehe ich zu seinen nachbarn
    ich lege alle wieder auf die schlange und mache so weiter

    ich nehme den ersten nachbarn runter und wieder alle

    ich rate. dieser weg oder dieser???

    da steht deterministisch: der computer kann als naechstes nur eine sache tun

    z.B. vermute ich:

        eine schleife soll nach oben zaehlen und dabei, irgendeine zahl mit einer anderen multiplizieren
        eine operation

        oder hashtabelle

        anderes, vielleicht: sortieralgorithmus, ich muss mich zwar entscheiden,
        das ist ja so ungefaehr n!

        ich habe eine schleife i und j und j wird entweder immer groesser oder kleiner

        wie bei 4! = 4*3! dabei ist 3! gesondertes problem
        3! = 3*2!

        das entspricht so etwa, der sortierung

        aber ich muss nicht entscheiden

        graph, hier lang oder da lang

            4 oder 6 nachbarn

            eigentlich alle ausprobieren, aber

            uebrigens, ergibt wald

            aber ob ich jetzt hier, 1, 2, 3, 4 gehe ist hat auswirkungen auf das naechste, wo wieder
            anders sortierung

        ok,nicht deterministisch

        ich brauche beim einsortieren einer zahl laenger oder kuerzer, aber sie wird irgendwo landen es hat #
        keine auswirkungen auf das andere #
        und ein prozess ist immer gleich lang


        also, kein problem
        es dauert immer j. oder m-j wie auch immer.

        anderes problem:
            schulmathematik


            a*x^2 + b*x + c

                mitternachtsformel

            aber bei hoeherem ...

            und nicht nur das



        bei boolescher algebra, ich sage, ja kein problem

        wahrheitswerte einsetzen gleichung aufstellen ja oder nein

        ich sage: easy ist nicht so easy

        ich muss ja alle werte einsetzen

        bei 2^3  sind das 8 zeilen

        und bei 2^64 ein haufen

        aber man koennte sagen x0 ist abhaengig von x1 ist abhaengig von x2

        je nachdem, weil ich oben anfange, mich entscheiden muss, ist x2 nun 0 oder 1
        kommt es zur unterunterscheidung, x1 0 oder 1, jeweils 1 mal fuer ersteren der beiden faelle.


        erfuellbarkeitsproblem

        gibt es einen eingabevektor, der die gleichung wahr werden laesst

        wann ist man wahr
        gibt es ueberhaupt einen?
        schulmathematik: glauben vermitteln, mit mitternachtsformel wert da, eingabewerte kriegt man raus
        nicht so einfach: lineares newtonsche irgendwas ...

        da bool auch variable, eigentlich klingt easy nicht besser, wie newton irgendwas.

        das problem ist seltsam

        weil ich muss nur die DNF aufstellen, mehr nicht

        und wenn ich die habe, erfuellbarkeitsproblem

        sobald ich die DNF habe, und die muss entstehen #
        ist einfach nur die aussage, es geht nicht,
        ich kann zwar fragen wie oft

        ich kann zu jedem ausdruck eine dnf finden

        und eine dnf muss jedesmal mindestens ein mal 0 sein und alle anderen 1 oder mindestens
        ein mal 1 und alle anderen 0
        ganz einfach, das geht nicht

        und waeren es immer 1
        dann umgekehrt: quine mc cluskey loesst sich die gleichung auf, das heisst es gibt sie nicht mehr.

        das waere eine dnf, in der es so viele min terme gibt, wie ueberhaupt zeilen in der gesamten dnf

        der stumpfsinn liegt in der erklaerung

        wuerde ich einen compiler benutzen, optische taeuschung der aus irgendeinem
        booleschen ausdruck sprachlich eine dnf mit lauter min termen macht, sieht das bei drei variablen
        ja relativ einfach aus. what is the problem

        falsch, tiefensuche und breitensuche sehen sehr easy aus bei 8 knoten
        trotzdem, easy oder nicht, die mathematische laufzeit bleibt
        2, 8 oder 16k knoten
        das gesetz bleibt ist entsprechend proportional wie auch immer
        optische taeuschung, weil im buch 4 knoten
        so auch: die dnf, no problem
        bei drei variablen sieht so aus, und der compiler macht den rest
        blos wie lange braucht der?

        das ist die frage: probiere ich alles aus, gut, entscheidbarkeit
        brauche lange, denke ich. aber ich stelle alles um, compiler
        gut, nur der compiler braucht eben wieder zeit, robert sedgewick lacht
        ob der compiler n^2 braucht oder 1, ist egal, als ob es die entscheidung macht

        optische taeuschung 3 variablen oder 64, sieht anders aus
        glaube nicht an 64, nur: proportional vielleicht letzten endes, bei 3 nicht besser.



        graph anders, hier hat ersteres problem auswirkungen auf das naechste