(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