Ja, schönen guten Abend. Wir waren ja in der
letzten Stunde mit dem Kapitelprozess Akibra zum Ende gekommen.
Und ich wollte nochmal wiederholen ab dem Thema Fairness. Das war ja wichtig,
um eben solche Schleifen hier auszuschließen, was die Formalisierung der Tatsache ist,
dass eben in der Spezifikation nicht ein Fehler permanent auftritt.
Und das ist ja die Folie aus dem Teil Transitionssystem und Büschi-Automat.
Und sie erinnern sich, diese Fairness-Bedingung wurde ja hier dadurch dargestellt,
dass wir diesen Anfangszug Zustand auch als Endzustand gewählt haben.
Was bedeutete, dass alle unendlichen Folgen, die wir betrachten,
eben immer mal wieder diesen Zustand hier besuchen müssen.
Was also ausschließt, dass man hier in dieser Schleife eben bleibt.
Das heißt also, dieser Endzustandsbedingung bei den Transitionssystemen diente als Fairnessbedingung.
Bei den Petri-Netzen hatten wir eine faire Schaltregel. Und
hier haben wir also eine faire Regel,
die darin bestand, dass wir solche Situationen betrachten,
wo also die Gleichung in der Gestalt sind,
dass wir hier immer eine Schleife durchlaufen können und diese nie verlassen.
Und das wird dadurch erzwungen, dass man Also eine Fairness-Gruppe definiert,
wo das also passieren kann, wo also gerade diese Übergänge gegeben sind und fordert,
dass auf jeden Fall der Ausgang benutzt wird.
Was also eine Alternative ist, die dann aus diesem Zyklus eben raus führt,
ähnlich wie das da im Petrinetz dargestellt ist,
wenn man zum Beispiel auf diese Transitionen, die faire Schaltregel anwenden würde.
Ja, nicht in die Regel war dann eben entsprechend,
dass man also die Fairness-Gruppe so definiert, als eine Menge von Variablen,
die also gewissermaßen im Prozessgrafen wechselseitig erreichbar sind,
also eine strenge Zusammenhangsgruppe bilden und einen Ausgang,
der dann aus dieser strengen Zusammenhangsgruppe,
muss ja nicht nur einfach eine Schleife sein,
kann ja irgendwie komplexer sein, eben herausführt.
Ja, und die Regel war dann eben so,
dass wir ja die Situation haben, dass das eben Initial,
Verzweigungs-B-Seminar sein soll zu der Situation,
wo dann auf jeden Fall hier die Alternative dann eben gewählt wird.
Ja, und das war dann die entsprechende Regel mit
der Fairness-Gruppe C und den Ausgängen I und dann hat man
hier also diese entsprechende Gleichung
Gut, dann hatten wir nur noch angemerkt,
dass der so erweiterte Kalkül dann immer noch die schönen Eigenschaften,
er hat korrekt und vollständig zu sein.
Und dann waren wir zum Alternierbit-Protokoll übergegangen, was wir ja
schon früher mehrfach hatten. Hier nochmal eine kurze Erklärung dazu.
Das war dann die Spezifikation, auf die wir hinarbeiten,
dass wir nämlich eine unendliche Folge spezifizieren vom Lesen auf dem
Kanal A und schreiben auf dem Kanal C,
wobei was auf dem Kanal B und D passiert,
eben verdeckt wird
Nicht, was da in diesem externen Verhalten entspricht, so sah das im Petri-Netz aus.
Und das war jetzt nochmal die Beschreibung des Alternierbit-Protokolls. Ja,
dann hatten wir hier die Spezifikation für den Sender und für den Empfänger.
Das war jetzt nur in drei Gleichungen aufgeteilt,
nicht durch einsetzen könnte man da auch eine Ergleichung draus machen.
Und dann hatten wir so eine kleine Simulation durchgeführt, erst das korrekte Verhalten.
Und dann in Rot ein fehlerhaftes Verhalten, nicht was darin besteht,
dass auf den Kanal B eben das Fehlersymbol geschrieben wird,
was der Empfänger auch als solches dann erkennt und dann entsprechend
eben mit dem gewechselten Bit dann eben reagiert.
Ja, und der Sender dann in dem Falle dann das
Datum nochmal schickt. Ja, und dass die Spezifikation,
die wir dann erreichen wollen,
da setzen wir zu an eine Beschreibung unseres Senderempfängersystems,
wo wir die Spezifikation für den Empfänger und den Sender
parallel zueinander eben setzen
Und das sieht dann so aus, wo wir hier das so sagen,
wenn wir mal als Merkzettel hier unten die Spezifikation da haben.
Und dann haben wir einfach da losgerechnet. Na,
im Einzelnen sah das dann so aus,
nicht das übliche Parallelapparater durch Left Merch ersetzen.
Und dann die entsprechenden Auflösungen durch zum Teil distributiv
Gesetze oder Anwendungen der Regel für das Left Merch.
Und dann kann man also,
wenn man sich das so klar macht,
relativ durchsichtig zu dem Ergebnis
Dann bei den nicht erlaubten Kommunikationen haben wir dann auch diesen Deadlock-Operator. Ja,
und nicht schon mit dem Grünen haben wir dann weitererarbeiten erarbeitet und dann das Ergebnis erhalten,
wenn wir den, das in die Entsprechenden Operationen unterdrücken,
die also intern sind,
dass wir einen solche Gleichung haben,
die aussagt,
dass wir von diesem Therm mit einer Aktion zu einem
solchen Therm kommen und das haben wir da später durch
eine Variable ersetzt oder durch den Grafen den Prozessgrafen dann dargestellt
Wo wir hier also das Beispiel haben für den ersten Beispiel einer solchen Transition.
Ja, und die anderen liefen dann ganz entsprechend.
Also insgesamt gab es dann zwölf von diesen Gleichungen,
was also den zwölf Pfeilen in diesem Graphen dann entspricht.
Dann durch entsprechende Ersetzungen mit Variablen kommen wir dann
zu diesen Gleichungen her
Ja, dann Anwendung der Fairness-Regel auf jetzt die Situation,
wie angekündigt, führt dann dazu, dass wir dann gleich diesen,
zu diesem Ausgang übergehen können und dass wir sagen,
dieses endliche Durchlaufen dieser Schleifen intern machen.
Und letztendlich kamen wir dann zu dieser Spezifikation,
wo wir das dann also nur noch durch X ersetzen müssten, wie anfangs dargestellt.
Nochmal grafisch dargestellt, das war sozusagen, fängt an,
zum Beispiel mit Bit Null und die Symmetrie kommt dadurch,
dass mit Bit 1 das nochmal genauso aussieht
Das hat die Fairness-Regel gesundmaßen eliminiert oder verdeckt, sagen wir mal.
Und die internen Aktionen auf den Kanälen B&D werden zur stillen Operation,
sodass nur noch die externen sichtbaren übrig bleiben.
Und das Ganze, also wie gewünscht, dann wieder dieser
unendlichen Folge hier entspricht. Wobei wir ja gelernt haben,
dass es keinen Unterschied macht, in so einer Spezifikation,
ob wir das zweimal oder einmal dieses AB da vorschreiben.
Ja, und schon das Bild sieht da ganz analog aus,
wie wir das bei den Traditionssystemen ja auch
schon eben hatten
Gut, dann hatten wir dann auch mal so eine Aufgabe betrachtet,
wo jetzt sozusagen künstlich ein Fehler eingebaut wurde, der da drin steht,
darin bestand, dass eben die Fehlermeldung vom Kanal D ignoriert wird,
also er nicht entsprechend reagiert, sondern so tut,
als wäre es alles korrekt.
Und das führt dann zu dem Prozessgrafen,
der so aussieht,
wo wir also in der Tat dann hier immer so rumlaufen
können und nie zu dem Kanal C kommen und dann auch
nicht diese Spezifikation eben erreichen können
Gut, ja, dann hatten sie nochmal gefragt,
ob das eine typische Aufgabe für die Klausur war.
Das hat mich etwas geschockt, weil ja,
das war ja nun besonders schwer,
aber an den üblichen Aufgaben sitzen sie ja vielleicht eine Stunde,
nehme ich mal an, nicht?
Jetzt so. Und da haben wir insgesamt, ich weiß nicht,
ich glaube, zwei, zweieinhalb Stunden für 13 Aufgaben.
Das müssen also ganz kurz so sein.
Und sie müssen das sich also eben so vorstellen,
dass sind sozusagen vereinfachte Formen von den Übungsaufgaben.
Und das so ungefähr kam,
dass in der Art und Weise alles mal vor,
was dann in der Klausur dann ist.
Gut, gut
Ja, und wie gesagt, also die Aktion mit der Prozess Algebra,
die hängen hinten dran im Kausurheft, die Gleichungen.
Aber nicht die Aktionen und Regeln für die Konstruktion des Prozessgrafen.
Das sind also der Kalkül mit den Pfeilen. Das könnte
schon vorkommen, dass sie das aus dem Gedächtnis brauchen.
Gut, aber insgesamt wird da Herr Mold dann am Donnerstag
nächster Woche dann nochmal zusammenfassen, uns was zu sagen.
Gut, dann sind wir hier mit fertig
und wir kommen also dann zum nächsten Kapitel
Eben den Parallelen, Maschinen und Programmen,
was ja eben auch zum Thema der gesamten Veranstaltung erpasst,
was, wo wir ja im Grunde eine Art formale Informatik machen mit dem besonderen Fokus auf parallele Systeme.
Gut, ja,
unter Parallelen oder verteilten Algorithmen wird die Erweiterung von klassischen für einen Prozessor,
Maschinen konzipierten Algorithmen auch viele miteinander kooperierten Prozessoren verstanden, also eine Situation,
wie man das in lokalen Netzen oder globalen Netzwerken hat aber eben auch in Prozessor,
Maschinen, die eben in einer Kiste angesiedelt sind,
um eben den Durchsatz, also die Effizienz eben zu erhöhen.
Und ja, speziell kann man sagen,
die parallelen Algorithmen beruhen in der Regel auf Speicher und Randovous und Congroisation
und haben eine synchrone Ablaufsemantik, werden wir noch genauer sehen,
was das bedeutet.
Und charakteristisch für verteilte Algorithmen
ist dagegen die Nachrichtensynchronisation
Also beide Algorithmen haben den Sinn, dass wir doch Parallelismus drin haben,
aber dass es den Benutzer so aussieht,
als hätte es mit einer Maschine zu tun,
dass das nach draußen verdeckt wird,
dass wir aber intern ein unterschiedliches Verhalten haben.
Ja, diese, ich mache nochmal zurück,
diese Unterscheidung zwischen Parallelen und verteilten Algorithmen,
die ist relativ üblich, aber vielleicht auch nicht zwingend.
Das ist eben Sprachgebrauch,
den ich so benutze
Nicht, dass ich verteilte Algorithmen so verstehe,
dass wir verschiedene Prozessoren haben,
was man bei den Parallelen auch hat,
dass die aber so schwach gekoppelt sind,
dass eben sie über Nachrichten kommunizieren und man eben keine obere Schranke für die Laufzeit der Nachrichten hat.
Wenn wir eine obere Schranke für die Laufzeit der Nachrichten haben,
dann kann man dann das immer auch durch parallele Algorithmen simulieren,
was zwar in der Architektur anders aussieht,
aber im prinzipiellen Verhalten dann eher wie die parallelen Algorithmen
eben aussieht
Ja, nicht und speziell wird man den Parallelen Algorithmen dann nicht über Nachrichten synchronisiert,
sondern Speichersynchronisation, dass also die auf gemeinsame Variablen zugreifen und
zum Beispiel der eine Prozess dort ein Bit setzt,
was der andere später dann liest und dann sich entsprechend dann eben verhält.
Diese verteilten Algorithmen, die waren früher auch mal Bestandteil dieser Vorlesung,
das ist aber im Zuge der Abmagerung entfallen und ich biete dazu im Sommersemester
eine Vorlesung an und zwar im Modul Modellierung verteilter Systeme,
das ist ein Mastermodul.
Nicht nur sind sie ja, glaube ich, Bachelorstudenten.
Aber es gibt aber auch in den Mastervorlesungen schon mal Bachelorstudenten,
da dürfen sie auch reingehen und dürfen auch die Prüfung machen.
Aber mir ist schon bewusst, dass das vielleicht an der Zeit
und an dem Aufwand scheitert, den sie zu treiben haben.
Aber umgekehrt krankt ja das Bachelormasterstudium daran,
dass man auch selten Sachen kann,
die man sonst früher im Studium mal gemacht hat,
ohne dass man dazu gezwungen wurde.
Aber vielleicht kann der eine sicher doch
ein bisschen freiräumen,
Zeit freiräumen und in diese Veranstaltung komme nicht.
Also da gibt es sozusagen die Möglichkeiten,
dass er tatsächlich den Model macht und dann später im Masterstudium
dann anerkannt bekommt oder dass er nur in meiner Vorlesung kommt,
weil das interessiert.
Und dazu habe ich dann jetzt hier in der Vorschau
dann mal angegeben, was da alles drin vorkommt.
Also solche Beispiele sind verteilte Terminationen. Da geht es
darum, festzustellen, ob ein Netzwerk terminiert hat.
Darunter versteht man dann anders als klassischerweise nicht nur,
dass die einzelnen Prozessoren zum Ende gekommen sind,
sondern dass auch keine Nachrichten mehr
unterwegs sind
Und das ist unter den gegebenen Bedingungen natürlich nicht trivial. Andere Geschichten sind Routenplanen in den Netzwerken,
dass man kürzeste Wege in Netzen findet,
um die Nachrichten effektiv zu bestimmen oder ein verteiltes,
minimales Gerüst oder ein Spanning-Tree zu konstruieren oder verteilter wechselseitiger Ausschluss,
also sozusagen der wechselseitige Ausschluss haben wir ja auch hier gelernt,
aber jetzt in dem Szenario eines Netzwerkes, Auswahlverfahren,
da geht es darum, einen Knoten auszuzeichnen, sodass alle wissen,
ob sie ausgezeichnet sind oder nicht und das darf dann natürlich nur einer sind,
der dann irgendeine Verwaltungsarbeit ausführt oder Broadcast-Algorithmen, die darin besteht,
dass ein Knoten an Fehler gleichzeitig was schicken kann,
wo dann aufgrund der unterschiedlichen Nachrichtenlaufzeit dann Konflikte dadurch entstehen,
dass die in verschiedenen Reihenfolgen ankommen können.
Nicht nur diese Algorithmen, die man hier behandelt,
die maskieren diese Algorithmen so, dass man das für jeden,
die ihre Nachrichten in gleicher Reihenfolge eben ankommen.
Wenn ich das in solche Verfahren,
die in Netzwerken häufig in der Mittelwehr stecken und die
dann dem Benutzer schon zur Verfügung gestellt ist,
aber wichtig ist schon zu wissen,
was dahinter steht
Oder Konsensalgorithmen,
das ist auch in Datenbanken bekannt,
wenn eben viele Datenbanken immer auf den gleichen Stand gebracht werden sollen,
dann gibt es eben oft den Konflikt,
dass sie eben nicht auf den gleichen Staaten bestanden sind und dann könnte man eben überlegen,
ob man eben eine Mehrheitsentscheidung herbeiführen kann und das ist eben im verteidigen Szenario auch nicht trivial.
Ja, verteilte Termination hatte ich schon genannt oder mit der
verteidigen Termination sehr verwandt ist,
der verteilte, die verteilte Freispeicherverwaltung,
also das Distributed Garbage Collection
kann man eben zeigen
Ja, das ist dann die Literatur dazu. Ja,
um sie ein bisschen auf den Geschmack zu bringen,
habe ich dann jetzt hier mal die angedeutet,
wie das mit der verteilten Konstruktion eines Gerüstes oder sogar eines minimalen Gerüstes zu Englisch,
Spanding Three, funktionieren könnte, nicht ein solches Gerüst,
ist ja ein Teilbaum, der ein Baum ist,
der aber jeden Knoten berührt.
Wer kann sagen, warum sowas in Netzwerken vielleicht manchmal nützlich ist?
Ja, bitte? Minimalinstanz zwischen zwei Wochen
Ja, erstmal um eine ausgezeichnete Verbindung zu haben.
Und wenn man das dann noch minimiert, dann,
also hier haben wir noch keine Gewichte dran, das kommt dann später,
dass man sozusagen das Gesamtgewicht dann eben gering macht.
Und wenn man einen Baum hat,
dann kann man auf diese Art und Weise auch Zyklen vermeiden,
wenn man irgendwelche Nachrichten verschickt und dergleichen.
Und ein Ansatz ist hier,
das Ganze eben in Fragmente zu zerlegen,
indem man eben hier mal so kleine aufspannende Bäume zunächst mal anlegt,
im Extremfall besteht jetzt jedes Fragment
nur aus einem Knoten
Ach ja, was ich vorher noch sagen wollte und daran erklären wollte,
charakteristisch für diese verteilten Algorithmen ist natürlich, dass es kein globales Wissen gibt.
Kein Knoten kennt beispielsweise diesen Graphen und hier haben wir auch noch die Besonderheit,
dass der Algorithmus sozusagen über das eigene Netz,
über Wissen oder Eigenschaften des eigenen Netzwerkes geht. Man könnte ja auch,
es gibt diese verteilten Algorithmen für alle möglichen Probleme,
auch für Graphen, die irgendwie im Design entstehen,
aber hier, das heißt,
dass wir irgendwie eine Zeichnung,
die unabhängig von dem Netzwerk besteht,
aber hier ist der Gegenstand
das Netzwerk selber
Und jeder Knoten weiß nur, seine eigenen Daten,
das heißt, im Extremfall, welche Kanäle er hat,
naja, in solchen einfaches Hin- und Herschicken von Nachrichten
kann er dann erfahren, wer sein Nachbar ist.
Und das nimmt man dann manchmal schon an, dass man weiß,
das ist der Kanal nach V6 und dass der Kanal nach V7, aber mir nicht.
Nicht alles andere ist verborgen und muss sozusagen erarbeitet werden.
Und das Ergebnis wird dann auch so sein, nicht,
dass keiner das Bild hier sieht, kennt mit diesem Gerüst,
sondern jeder weiß nur von seinem Knoten, ja,
der gehört zum Gerüst, nee,
umgekehrt,
der gehört zum Gerüst und der nicht
Das heißt also, wenn zum Beispiel eine Wurzel ausgezeichnet ist,
nehmen wir hier mal V1, dann könnte hier zum Beispiel
das Attribut stehen, das ist die Richtung zur Wurzel.
Ja, und da würde dran stehen, dass sich die entgegengesetzte Richtung zur Wurzel.
Das ist manchmal eben sehr nützlich. Ja,
und die Konstruktion könnte zum Beispiel da drin stehen,
dass man also diese Fragmente bildet. Und jetzt diese Fragmente
sukzessive vereinigt. Man kann das auch sehr martialalisch einkleiden,
als dass er sozusagen einzelreicher sind,
wo dann die Hauptstädte Eroberungen initiieren und dann es dann zur Vereinigung von diesen Reichen ergibt,
sodass dann hinterher Diese Fragmente vereinigt werden und es zu einem größeren Gebilde kommt.
Und so geht das dann weiter. Wenn man da zum Beispiel die Vereinigung haben,
dann hätten wir hier das neue Fragment oder da,
dann hätten wir hier ein Fragment.
Oder da, dann haben wir hier noch ein Fragment.
Und in der Situation kann man zum Beispiel gut erklären,
zu welchen Konflikten es kommen kann.
Wenn zum Beispiel da das ganze C-Zentral passiert,
könnte zum Beispiel hier ein Vereinigungsversuch hier sein und es könnte hier ein Vereinigungsversuch sein.
Und wer die beide erfolgreich durchgezogen wird,
hätte man einen Zyklus und ein Problem
Nicht. Und deswegen muss also intern hier eine Kommunikation stattfinden,
dass nur einer erfolgreich ist. Nicht so, dass das
also durchaus eben komplexe, nicht triviale Algorithmen werden nicht.
Also hier nehmen wir mal an, der Rechte,
da ist erfolgreich, sodass wir dann zum Gesamtergebnis kommen.
Nicht? Und ja. Bitte? Ist das nicht
CrossGits-Algorithmus mit der Minienfeindstadtschrift? Habe ich das nicht verstanden?
Nochmal ab. Die sagen wirklich, das ist nicht
CrossGits-Algorithmus mit der Linie, fang da an.
Weiß ich nicht. Das gesagt mir gar nichts.
Genau diesen Algorithmus hatten wir nämlich jetzt neulich in Mai
Da kann sein, dass wieder andere Bezeichnungen hatten.
Aber da wurde dann auch ein Spanning Pre kontrolliert.
Ja, dann heißt er eben nur andere.
Meistens wird er in Beginn nach den Autoren,
die heißen Humblet oder so ähnlich und weitere.
Wie nennen Sie das? Cross. Ich habe es immer
noch nicht verstanden. Cross. So heißt der Autor wahrscheinlich
. Nee, das muss ein anderer sein. Okay,
aber können Sie mir ja mal eine Mail schicken, würde mich mal interessieren, nicht?
Okay. Gut, gut. Ja, nicht. Und die Organisation besteht eben darin,
dass man zum Beispiel einen König, einen Knoten als König auszeichnet,
also sozusagen gedachte Hauptstadt und ein Zentrum, Das Zentrum,
das ist sozusagen immer der Knoten,
der nun gerade jetzt so eine Brücke schlagen will.
Nicht der König, der bleibt immer der Gleiche,
beziehungsweise wenn es zwei Fragmente vereinigt werden, dann bleibt nur einer.
Und das Zentrum wandert immer rum und sucht sozusagen neue Brückenschläge.
Ja, und die Variante mit einem minimalen verteilten Gerüst,
da haben wir dann sozusagen Gewichte wie Leitungskosten,
wenn das Wasserleitungen oder Netzwerkkosten sind.
Und da geht es darum, dann ein minimales Gerüst.
Und wissen Sie auch noch, welche Nachrichtenkomplexität Sie da
gehabt haben in Ihrer Vorlesung
Nicht Nachrichtenkomplexität ist also eine neue Komplexität, die man bei
den verteilten Algorithmen hat. Und da ist eben beachtenswert,
dass das mit N-Log N geht, was ja ziemlich, ziemlich gut ist.
Wobei Andy Anzahl der Knoten ist. Und ja. Okay,
das also dazu, das ist aber, wie gesagt,
heute nicht unterm Thema, sondern wir haben jetzt hier,
also hier haben wir die Nachrichtensynchronisation,
die wir früher ja schon mal so dargestellt haben.
Und hier haben wir parallele Prozessoren mit Ron de Wust-Synchronisation oder
hauptsächlich mit Speichersynchronisation, wo dann hier ein gemeinsames Datum,
was wir auch in so einer Transitionssystem darstellen können.
Wenn ich da zunächst mal nochmal Bemerkungen zur Rande Wur-Synchronisation,
da gibt es ja Sprachen und Architekturen, die irgendwelche Konfigurationen haben,
wo dann die verbundenen Prozessoren über Runde Wur-Synchronisation miteinander kommunizieren.
Das müssen dann also vergleichsweise kleine Nachrichten oder kleine Laufzeiten sein,
sodass man, du sagst, dass du sagst,
Ganze im Intakt eben passiert.
Ich setzte eben meistens auch eine globale Uhr eben voraus.
Ja, nicht, also könnte zum Beispiel auch ein
zweidimensionales Feld sein
Und im Gegensatz zu haben wir die Speicher-Synchronisation, wo also
die Prozessoren neben ihrem lokalen Speicher dann auch einen gemeinsamen Speicher haben.
Nicht anders als bei den verteilten Algorithmen, die wir eben haben.
Ja, und nicht? Und dieses Modell, das heißt
Peram und das P kommt von parallel und ramm ist random Access-Maschine.
Das ist ein Modell, was gleichmächtig ist zur Thuring-Maschine,
aber eben näher an dem von Neumann-Modell der Rechenarchitektur ist.
Gehe ich richtig in die Annahme,
dass sie das, die RAM in FG1 nicht gehabt haben
Das gab es früher mal, weil das eigentlich sehr wichtig ist.
Und deswegen benutzen wir hier die Gelegenheit, die nochmal einzuführen.
Also Ram heißt Rheintom Accessmaschine und parallel ist klar.
Kann jemand jemand den Namen erklären? Was heißt Rheintom Access
? Einen Rheintom Accessspeicher, was ist das?
Ja, bitte. Zufällig ist das gerade die falsche Interpretation
und sie
Genau, also man kann direkt zugreifen,
nicht in dem Sinne hängt das vielleicht für mir zufällig zusammen,
dass man eben nicht irgendwie irgendwelche Umwege, sondern irgendwie direkt zugreifen kann.
Ja, im Gegensatz beispielsweise zu Tourit-Maschine,
wo man das Band ja erst spulen muss,
bis man an eine entsprechende Speicherstelle eben kommt.
Ja, nicht und deswegen machen wir jetzt zunächst mal einen kleinen Vergleich zur Thuring-Maschine und zur Ran.
Und wer Alan Thuring ist, das haben Sie aber gelernt oder so. Da gibt es ja jetzt auch einen Film,
glaube ich dazu, im Kinos bald,
der also ziemlich kitschig sein soll,
nicht der beispielsweise Das nennt er da seine Maschine Christopher,
was völlig unhistorisch ist, wahrscheinlich deswegen, weil ihm nachgesagt wird,
dass er Selbstmord begangen hat,
weil er in einen vergifteten Apfel gebissen hat und weil er vorher als homosexueller verurteilt worden ist.
Also, und der wird da so als Hero dargestellt,
das war ziemlich meiner Meinung nach nach der Vorschau,
finde ich, schrecklich sein, dieser Film.
Interessanter ist, das wirkliche Erleben nicht,
und das geht also zurück auf die Arbeit,
euren Computable Numbers,
this in Application to
the Entscheidungsproblem von
Entscheidungsproblem, sagt Ihnen das was?
Und warum das deutsche Wort in einem englischen Titel vorkommt?
Können Sie sich das erklären? Also Sie wissen ja,
dass die Englischen auch schon mal Kindergarten vorkommt.
Oder Rucksack. Oder Eigenwert. Ja, wieder. Wahrscheinlich,
weil deren Videos im Bett hat, das muss man im
Herzen nehmen. Genau, und das war ein deutschsprachiger.
Und wer war das, auf den da Bezug genommen wird
Da gibt es also zwei Namen. Einmal Hilbert,
der eben sozusagen ein Mathematiker in Göttingen bearbeitet hat,
der hat ja die These aufgestellt, dass alles,
was man mathematisch definieren kann, in entsprechenden Beweissystemen auch beweisen kann.
Also mehr oder weniger kalkülhaft. Und der andere Deutschsprachige,
der auch das jetzt als Entscheidungsproblem negativ entschieden hat,
das war Göde, der eben gezeigt hat,
dass es einfache, einfache, einfache Systeme gibt,
die nicht gleichzeitig entscheidbar und vollständig sein können.
Das heißt also, wo es Und wo es Sätze gibt,
die man nicht durch ein Kalkül, ein Gegebniskalkül ableiten kann.
Und das war also damals eine ziemliche Sensation,
weil eben dieses Hilbertsche Programm sehr berühmt war und viele eben dem gefolgt sind.
Und relativ gleichzeitig, und Thuring hat also mit seiner Thuring-Maschine
dann eben auch gezeigt, dass es einfache Probleme gibt.
Einfach heißt er, einfach zu definieren,
die unentscheidbar sind, wie zum Beispiel das Halterproblem,
ob eine Maschine, wie er sie definiert hat,
zum Beispiel zum Halt kommt oder jemals eine Null druckt oder dergleichen.
Ja, und relativ gleichzeitig gab es dann auch ein Papier von Alonso Church,
der das mit etwas größeren, mathematischen Komplexität behandelt hat,
mit dem, was wir dann später sowas wie den Landerkalkül eben nannten,
und das sollte hier ein Unsolvival Proplan in alle Mentory Nambas Theorie.
Das Interessante ist,
dass eben dieses heute berühmte Papier von Thuring eben damals kaum Beachtung fand,
das liegt daran, weil das sozusagen den Mathematikern,
denen war das zu praktisch, da kommt ja irgendwie Papier und Maschinen drin vor.
Und den Ingenieuren war das so theoretisch, weil ja gar nichts richtig geschraubt wurde.
Und die Bedeutung ist, ist irgendwie eigentlich erst dadurch entstanden,
dass John von Neumann dieses Papier dann gelesen und verstanden hat.
Und der hatte übrigens auch ursprünglich an Fragen gearbeitet wie Gödel. Und wir wissen,
der Neumann war sehr vielfältig und hat auf den verschiedensten Gebieten große Erfolge gehabt wie Spieltheorie,
die ganze ganze Ökonomie, die Wirtschaftswissenschaften beruhen,
zum großen Teil auf den Ergebnissen von John vor Neumann.
Und der hat das also erkannt, was das für
ein Potenzial hat, für die Konstruktion von Rechnern.
Und der hat dann also Thüring auch nach Prinzen eingeladen,
wo ja dann John vor Neumann die erste Maschine in den
USA dann eben gebaut hat.
Also wie gesagt, das war also eine Parallelentwicklung zu dem Artikel von Church,
nicht während das gewissermaßen als mit Funktionen arbeitet.
Er hat eben Thuring dort eben eine Art Maschine vorgeschlagen,
die also John vor Neumann dann zu seiner Architektur inspiriert hat
Und was würden Sie sagen,
was ist das charakteristisch an einem John von neunmal ein Rechner?
Sie haben jetzt schon mal jemand anderes vielleicht. Dann See
. Das ist eben Rama und Daten auch von Seiten.
Genau. Und er hat das dann ja dann auch noch weiter dahingehend betrieben,
dass die Programme sogar erlaubt haben, den Speicher zu verändern.
Und das war sozusagen die Assoziation, war lernende,
lernende Programme, Künste, Intelligenz.
Und das wurde dann später erst mal sein gelassen,
weil das auch großer Komplexität führte und erst viel spät,
also sagen, im Kontext der Künstlichen Intelligenz kamen solche Ideen dann eben wieder auf.
Ja, hier sehen Sie jetzt, was habe ich da noch gehabt?
Ja, und da ist nochmal das die Referenz zu dem
Hillbertschen Entscheidungsprobleme. So, das ist das berühmte Bild,
ein berühmtes Bild von Thuring. Und eine Mannschaft,
wo er nach dem Krieg dann auch eine Maschine gebaut hat.
Und das ist ein Buch,
was gerade erschienen ist von Dyson,
was also so und so ein Schmöker
Aber unheimlich interessant fand ich zum Beispiel,
nicht weil sie so sagen, für mich war das insofern interessant,
weil jahrelang habe ich solche Dinge in der Vorlesung gebracht wie jetzt.
Aber in diesem Buch wird also wirklich ganz detailliert dargestellt,
wie die Entwicklung war. Man lernt dann, ja,
erst gab es Frill Lehrrechner und dann haben wir daraus
Röhren gemacht und so weiter ging das also relativ kurz.
Und da drin kann man erst mal lesen,
welcher Aufwand darin bestand dieser Elektronik erst mal zu beherrschen und
so fehlerfrei zu machen, dass das vernünftige Rechnungen eine waren.
Hier sehen wir schon von Neulichmann mit diesem Rechner und diese Gebilde,
das sind also handelsübliche so Kathodenröhren gewesen, die als Speicher gedient haben.
Das steht ja auch, glaube ich, das waren 40
Williams-Katholenstrahlröhren mit jeweils 1024 Bit, also insgesamt 5 Kilobyte.
Und wenn ich das richtig verstanden habe, bestand dieser Speichermechanismus da drin,
dass also ein Datum eine bestimmte Position des Strahls war.
Und er würde alle paar Millisekunden immer wieder aktualisiert,
weil der sich ja nicht hält.
Aber der hat so ein gewisses Nachglühen. Und der wurde
immer wieder akkalisiert und dann konnte er dann entsprechend auch abgefragt werden.
Und die haben dann also auch eben solche Röhren,
die aus der Kriegswirtschaft oder sonst übrig geblieben waren,
genommen und vor Neumann geht eben ganz viele Arbeit darauf zurück,
dieses hochunterverlässliche Gebilde so zu machen, dass man überhaupt vernünftige Rechnungen machen konnte.
Und dann ist eben erstaunlich, was für Rechnungen die da gemacht haben.
Also zum Beispiel haben sie dann erste Wetterberechnungen gemacht oder dann war das Ganze sehr wichtig,
auch für den Baumbau,
zum Teil der Atombombe,
aber viel wichtiger noch für den Bau der Wasserstoffbombe und nicht woran man sieht,
dass die Informatik gewissermaßen von ihren ersten Schritten
immer schon ganz stark mit Kriegswirtschaft oder Waffentechnik
verbunden war
Nicht und in den Artikeln heißt das dann immer auch,
ein Hochleistungsrechner wird das also bezeichnet und für die damit gezeigt,
war das natürlich ein Riesensprung,
weil die Rechner davor eben aus ganzen Seelen von Einzelrechnern mit zwei Beinen,
was meistens Frauen waren, die da irgendwelche Formblätter ausgefüllt hatten.
Ja, nicht unten eine Veröffentlichung dazu ist also dieses hier,
der Goldstein kommt in dem Buch auch drin vor,
wo also ein sehr frühes Papier, wo diese Architektur eben beschrieben wird.
Und diese Renderung Accessmaschine ist jetzt nun ein Gegenstück zur Thuring-Maschine,
was nun dieses von Neumann-Prinzip eben darstellt. Nicht,
und das geht eben in der theoretischen Form eben sehr viel später,
zum Beispiel auf dieses Papier von 64 eben zurück.
Oder auf dieses hier von zweien Elswein 70. Und ja,
das Interessante ist, während man, also diese Rand- und Accessmaschine,
sehr viel näher an dem ist,
was eben die so eine von Neumann-Architektur ausmacht, in der Tatsache,
aber diese Ideen von Thuring eben den Einfluss ausgeübt haben,
dieses eben zu erzeugen.
Und zwar war es nicht nur diese Thuring-Maschine,
die also in dem Papier von Thüringen drinsteht,
sondern was auch Thuring da drin gezeigt hat,
die Existenz einer universellen Thuring-Maschine.
Wer weiß, was das ist, eine universelle Thuring-Maschine.
Ja, bitte. Genau, ne? Das ist also
eine Thuring-Maschine, die jede berechenbare Funktion berechnen kann.
Nicht jede berechenbare Funktion kann also durch Naturing-Matine dargestellt werden
Und von Neumann, nicht von Neumann. Thuring hat eben gezeigt,
eine Kodierung einer solchen beliebigen Thuring-Maschine kann man aufs Band schreiben und
diese universelle Thuring-Maschine ist in der Lage, dies zu simulieren.
Also es ist auszuführen und dann jede Eingabe für diese Maschine,
die auf dem Band steht, so zu verarbeiten mit dem Ergebnis,
was diese Maschine getan hätte, wenn sie für sich gearbeitet wäre.
Nicht, was eben auch wieder, dass der Prototyp ist zu dem universellen Rechner.
Gut, also das hat sich dann also durch eingesetzt,
dass eben diese Random-Access-Maschine dann in der theoretischen Informatik prominent wurde.
Und man könnte also, und das wurde auch zum Teil gemacht,
in der Ausbildung die Tutoring-Maschine gar nicht mehr zu bringen,
sondern nur noch mit dem Rahmen zu arbeiten,
weil man alle Fragen, die man in der Turing-Maschine beschreiben kann,
natürlich hiermit auch beschreiben kann.
Und die Komplexitätsergebnisse hier viel realistischer sind als die Mediatorik-Maschine,
aber wie man an ihrem Beispiel sieht,
wird das nicht durchgehalten aus Abspeckgründen.
Bleibt man dann bei der Turing-Maschine und das hat eben
zum Teil einen Grund, weil die eben sehr viel einfacher
zu beschreiben ist und viel elementarer
Okay, aber eben, wie gesagt,
hierfür Komplexität und für den Übergang zur Parallelenrahmen brauchen wir das doch.
Und wir sehen hier die verschiedenen Teile. Wir haben also ein Eingabeband,
nicht wo jetzt in diesen Zellen beliebige reelle Zahlen stehen können.
Das ist also, wenn man zum Beispiel irgendwie zwei Zahlen miteinander multiplizieren würde,
dann würde die eine hier stehen und die zweite da.
Also anders als in der Tourikmaschine auf dem Band ja
immer nur Zeichen eines Alphabets stehen dürfen.
Dann gibt es ganz entsprechend ein Ausgabeband,
was also den Lochkastenstreifen, Lesern und Schreibern der frühen Maschinen
Dann gibt es einen Datenspeicher, nicht also die Röhren,
die wir da eben gesehen haben,
wo also ein Speicherelement, ein Register heißen die,
ausgezeichnet wird, mit dem besonders gearbeitet wird.
Das ist der Akkumulator. Dann ergibt es einen Speicher,
der, also Programmspeicher ist, also hier auseinandergehalten,
also in der wirklichen Maschine, dass irgendwie in einem Medium vorhanden war.
Dann gibt es ein Insrutching-Accounter,
der also die verschiedenen Befehle durchläuft
Dann gibt es eine automatical logical Unit,
die also die elementaren arathmetischen Operationen ausführen kann.
Und es gibt einen Adress-Counter, der also die Adressen hält,
die nun gerade eben wichtig sind und in der Berechnung eben eingehen.
Nicht sowas haben sie ja wahrscheinlich dann woanders im Studium
kennengelernt bei Maschinen in naher Programmierung oder so.
Bitte? Das gibt es also noch Rechnerstrukturen, okay.
Nee, weil früher war ja das Studium auch noch,
da haben sie ja auch noch richtig Elektronik gelernt.
Das ist, glaube ich,
inzwischen gestrichen
Okay, gut. Ja, so,
nicht nur die Operationen sind, also solche elementaren Operationen,
die dann in vielleicht aus dem Kontext bekannt sind,
deren Bedeutung wir gleich noch genauer betrachten, mit Operationen,
die also diese Gestalt haben, wenn ich zum Beispiel gleich,
ich schreiben wir als Operant, wenn wirklich die Zahl i gemeint ist.
Und ich schreiben wir, wenn der Inhalt des Registers mit
der Adresse i, des i der Register gemeint ist.
Und die sogenannte indirekte Adressierung, die man hier auch benutzt,
ist, schreibt man mit dem Sternchen,
dann nimmt man den Inhalt des Registers RJ,
wo bei J der Inhalt des Registers RE ist.
Man muss also in ihn nachgucken und dann findet mein Register
und da findet man wieder Adresse und dessen Inhalt ist also Gemeinden.
Ja, und dann gibt es natürlich Befehlsadressen, für die völlig Sprungbefehle. Ja,
und die einzelnen Befehle sehen dann hier so aus,
zum Beispiel ein Load Arn bedeutet hier,
ein V von A wird nach einem C00 gespeichert,
wobei also C00 jetzt diese Akkumulator wird und C ist die Speicherabbildung,
das heißt C von I ist der Inhalt des Registers CE.
Und dieses V von A,
das kann also gerade diese Formen der Der Operantenheim,
die wir eben hatten, nicht um das V von Gleichi,
ist also die Zahl I,
das V von I ist der Inhalt des Registers eh und das V von Stern E ist C von C von I,
nicht zu sehen, also wie das in der theoretischen Informatik üblich ist,
wird alles genau definiert.
Naja, und deswegen, das laut A ist dann klar und das Store eh bedeutet eben,
dass der Inhalt des Akkumulators in die Zelle eh gespeichert wird,
dass da Stern eben mit der indirekten Adressierung,
das Ad A bedeutet, dass auf den Akkumulator der Wert,
also entsprechend dieser Definition, von dem A draufgeladen wird,
bei dem Zug dasselbe mit minus mal und der ganzzahligen Division.
Nicht so die sehen, da sind also,
wie man bei der Maschinensprache sagt, ein Adressbefehle,
nicht es gibt das ja auch mit zwei und mehr Adressbefehlen.
Also hier muss man so gewissermaßen die Mehradresse befehlen,
dann simulieren durch einen Adressbefehl.
Ja, was gibt es da noch? Da haben wir ein Reti,
das heißt, der auf dem Eingabeband wird gerade gelesen,
da steht der Kopf ja gerade auf einem Symbol,
der wird dann ins Register E geladen oder indirekt mit
dem Stern
Ja, und entsprechende gibt es dann zum Schreiben auf das Band.
Und dann gibt es Sprungbefehle. Das bedeutet also,
das wird also der Befehlszähler gesetzt auf den Wert von B,
also auf die mit B markierter Anweisung und bedingte Befehle.
Das wird nur gemacht, wenn der Inhalt des Akkumulators größer als null ist.
Oder wenn er gleich null auch. Also sozusagen der,
das ist auch dann natürlich ein Haltbefehl,
gibt es auch, ist ja nicht ganz unwichtig.
Okay, also das ist Ihnen dann mehr oder weniger geläufig,
sowas. Haben Sie wieder vergessen, na gut.
Weil da liegt auch, da hatten Sie
andere Bezeichnungen
Im Prinzip ist das okay. Naja,
dann gucken wir uns mal ein Programm aus.
Anders könnt ihr dann zum Beispiel so aus. Wir sehen schon,
dass es also ein Rahmenprogramm zur Berechnung von N hoch N.
Da haben wir das N also am Anfang in dem Band stehen.
Und das wird dann jetzt zunächst mal gelesen. Und
ins Register 1, das haben wir jetzt also da,
die 2, wir wollen also 2hoch2 rechnen.
Und dann haben wir das Load 1. Das heißt,
der Inhalt von Prägister 1 wird in den Akkumulator geladen,
wir hier schon dargestellt.
Und dann haben wir eine Verzweigung nach Post
Und machen dann in Posts, haben wir hier, da haben wir,
jetzt laden wir wieder was in Register 1 und speichern das noch zwei.
Und sie sehen, das ist ja eben sehr maschinenartig.
Und das kann man sich ja sehr viel besser merken,
wenn man das ein bisschen hochsprachig her macht.
Also das hier ist ja nichts anderes als,
also Laden vom Register 1 und Speicher nach zwei,
als wenn man das mit dem Zwei-Adressbefehl machen wird,
denn innerhalb von R1 nach R2.
Und das liest sich dann natürlich sehr viel einfacher. Hier hätten wir dann,
wird das Register, na was 3,
kommt R1 minus 1 und dann beginnt hier die Waldschleife,
wo immer auf R2 der Wert von R1,
draufgezählt wird und dass R1 runtergezählt wird,
sodass wir das Ganze einmal durchlaufen und dann einmal das N mit sich selber modifiziert haben.
Und deswegen werden diese RAM-Programme auch meistens so aufgeschrieben.
Gemeint ist aber das. Und die Frage ist,
ob man da nichts durchfeliert, indem man sich hier so einfach macht.
Und die Antwort ist nein, weil wir die Komplexität immer
mit der sogenannten Ohnnotation schreiben.
Nicht, wenn wir zum Beispiel sowas schreiben,
die Komplexität ist O von Endquadrat.
Wer weiß,
was das bedeutet
Sie liebt, okay? Dass die Komplexität in der Klassenform von Enten,
Quadratmie, das heißt,
sie kann einfach uns da so ein Pastor da vorgehen,
aber alle, das sind so die alle,
wenn es verlassen kann, weil ich dann um 3 Uhr so etwas wandere.
Ja, also die würden sagen, das wächst ungefähr so
wie Endquadrat. Finden das alle sehnlich? Ja,
das war also halbrechtig, das ist wichtig,
das ist eine obere Grenze
Das heißt, das ist ja eigentlich eine ganze Klasse von Funktionen.
Deswegen kann man sagen, eine Funktion, F&N. Meistens schreibt
man gleich, aber genauer würde man sagen, Element,
weil das eine ganze Menge. Deswegen würde man eben schreiben,
dass das F&N ist kleiner, gleich zäh,
mal ein Quadrat, wobei C eine beliebige Konstante ist.
Und außerdem, sagt man noch, das soll eben für
fast alle entgelten. Was heißt das für fast alle,
weiß als jemand
Nicht, das heißt, das ist ein mathematischer Sprechweise,
das soll heißen, für alle N, bis auf eine endliche Anzahl.
Das heißt, deswegen heißt diese Komplexität ja auch, asymptotische Komplexität,
weil irgendwann mal, dass dieses Wachstum haben. Ja,
und dieses See hier, nicht,
das ist jetzt hier von Bedeutung, das ist irgendeine Konstante,
das heißt, das muss nicht wirklich kleiner sein,
das kann auch zum Beispiel zehn, kleiner,
wenn mir jeder einen Faktor zehn haben und der Faktor zehn,
der bleibt hier also unausgesprochen,
weil dieser Faktor C häufig dann von der speziellen Maschinenarchitektur abhängt,
Und in der theoretischen Informatik will man also Ergebnisse,
die jetzt unabhängig von konkreten Implementationen ist.
Und hier sehen Sie, dass wir so praktisch jeden Befehl
hier in dieser höheren Sprache durch ungefähr, glaube ich,
drei, maximal drei Maschinenbefehle bearbeiten können.
Und das versteckt sich alles hier in dem C. Ja,
und deswegen können wir dann auch argumentieren,
indem wir jetzt hier in dieser höheren Sprache das.
Und entsprechend geht es ja auch weiter,
dass es eben auch dann vielleicht Java-Befehle gibt.
Da würde dann die Komplexität dann auch nur übertragbar sein,
wenn der Java-Befehl mit einer konstanten Anzahl von Befehlen
zu simulieren ist
Und es kann ja durchaus andere Befehle geben, wo das nicht
der Fall ist, dann müsste man dann eben aufpassen.
Ja, und so geht das dann also weiter mit dem Akku.
Ich mache das mal kürzer und irgendwann mal sind wir dann fertig und dann wird dann,
also ist die Schleife runtergezählt und es wird dann die zwei eben ausgegeben.
Das letzte war ja hier, Register 2 wird geschrieben und
da haben wir dann hier die, die das Ergebnis fährt, dastehen.
Ja, wie gesagt,
und das Ganze könnte man dann also auch noch kompakter schreiben,
indem man dann hier das so mit bedingten Anweisungen und weil,
haben wir ja auch schon so da, also dass wir sagen,
so eher allgäuartig dargestellt und das liest sich ja dann sehr viel schneller.
Okay. Das heißt, wenn wir jetzt die Komplexität,
die Zeit und die Speicherkomplexität berechnen, dann machen wir das lieber hier dran,
aber wir müssen in meinem Kopf haben,
im Zweifelfalle muss das übersetzbar sein, in der Richtung.
So, und bei der Komplexität gibt es jetzt verschiedene Maße,
sagen das uniforme Zeitmaß und das Uniforme Platzmaß,
das haben Sie auch schon mal irgendwo kennengelernt,
in algorithmische Strukturen müsste das ja
irgendwie vorgekommen
als eine
Ja, okay. Gut. Also im uniformen Zeitmaß,
da nimmt man einen Schritt, eine Zeiteinheit. Wenn man von Zeitkomplexität spricht,
ist das ja in der Informatik auch nicht,
dass man da mit der Stoppuhr steht, sondern man zählt die Schritte.
Und beim Platzmaß, da hat man irgendwie eine Einheit und Bit oder was,
was man oder ein Register, was man als Platzeinheit nimmt.
Also da würde man zählen,
wie viel Register man hat in der Annahme,
dass die Register beschränkt sind,
wie man da so rangekommt
So, und dagegen gibt es gegen den Uniformmaß,
gibt es das logarithmische Maß.
Da nimmt man dann für einen Wert, den Zweierlogarithmus,
ja, wer weiß, warum man gerade den Zweierlogarithmus nennt.
Was bedeutet das, wenn ich also einen Register habe und
da steht eine Zahl drin, in binärer Kurdierung.
Und was gibt dann der Zweierlogarithmus an? Die Länge,
die Länge des Drinks. Und das ist ja dann auch,
wie viel Platz, also wie viel ich da dann
eben belege
Okay. So, nicht nur das heißt also,
wenn ich jetzt hier den Operant Gleichi habe,
dann will ich ja den Wert für das I haben,
dann nehme ich nur das LVNE.
Wenn ich aber jetzt eine Adresse anspreche,
dann muss ich ja auch noch den Wert,
also nicht nur die Komplexität des Speicherinhaltes,
sondern auch der Adresse nehmen.
Nicht um bei der indirekten Adressierung dann entsprechend zweimal.
Ja, das heißt also, wir haben jetzt folgende Definition.
Die uniforme Zeitkomplexität eines Randprogramms A ist die maximale Anzahl TVNA
der Summen der Uniformen Kosten aller Schritte des Programms
bis zur Termination
Wobei das Maximum über alle Eingaben der Uniformen größer N gebildet wird.
Haben Sie da jetzt mitgekriegt, worüber das Maximum gebildet wird?
Wenn wir das mal anschaulich so darstellen,
wenn wir hier so sagen, den Anfangszustand haben, S0,
und wir haben eine bestimmte Eingabe, eine bestimmte Eingabe X,
wobei die Länge von X, sagen wir mal gleich N ist.
Nichts ist ja klar, wenn die Eingabe größer ist,
dann müssen wir mehr Sei zum Beispiel spedieren, als bei weniger,
das wäre unfair, die alle übers gleiche Maß.
Aber wenn die alle die gleiche Länge haben, dann vergleichen wir,
dann könnte es ja eben jetzt Rechnungen geben für irgendein X1 mit der Länge,
was so lang geht, ein X2, was so lang geht,
oder ein X3, was so lange geht.
Alles Eingaben der Größe N. Und da nimmt man dann sozusagen den schlechtesten Fall.
Nicht und das macht man auch bei der Thuring-Maschine. Wenn man jetzt noch eine Bit,
nicht die Teleministritoring-Maschine hat, dann kann man ja mehrere Anfangszustände,
vielleicht hier noch so ein S1,
wo man ja hier sowas hat, sowas vielleicht,
nimmt man dann auch wieder das Maximum von allen,
wenn man jetzt eine Thuring-Maschine hat.
Aus meiner Frage können Sie sich schon schließen, nein.
Und das hängt damit zusammen, weil dann nicht die Terministien Thuring-Maschine,
ist sich ja durchaus denkbar, dass hier so eine Rechnung geht,
sie hier abhaut in unendliche, also zum Beispiel nicht terminiert.
Und da man diese nicht deterministische Enthuring-Maschine dann simuliert und deterministisch beispielsweise durch eine Breitensuche,
dann sucht man dann immer sozusagen die kürzeste eine Rechnung.
Aber das ist jetzt hier nur eine Nebenbemerkung,
nicht die Terminismus betrachten wir hier erstmal nicht. Okay,
jetzt ist also hoffentlich klar, also diese maximale Anzahl da,
also das andere, das Untere, das vergessen werden,
jetzt wieder, das verwirrt ja nur.
Wir nehmen hier also dieses Maximum und dieses Maximum,
das heißt jetzt also TA. Ja, also T-4-Time,
A für die Maschine,
die doch benutzt war und N für die Länge der Eingabe,
dass sozusagen der Parameter, es gibt eine Funktion,
das heißt eben,
dass wir für größere N auch
mehr Zeit benötigen können
So, diese Lücken da, die beziehen sich jetzt auf das Dual,
den dualen Begriff, nämlich auf die lugarithmische Zeit.
Das heißt also, die lugarithmische Zeitkomplexität ist dann eben entsprechend definiert,
wo ich dann nur das Uniforme durch das Lugarit mische.
So, das war die Zeitkomplexität. Und dann gibt es natürlich die Platzkomplexität,
auch wieder Uniformen und Logarithmisch, eines Randprogramms ist die maximale Summe SA von N.
Der Kosten aller Register, die dieses Programm bis zur Termination adressiert,
wobei das Maximum über alle Eingaben der Uniformen größer gebildet wird.
Das heißt also, das heißt jetzt wieder,
wenn wir bei dem Bild hier bleiben, nicht also diese Rechnung hier,
die könnte vielleicht zwei Register brauchen, die hier eins,
zwei, drei, vier, fünf, die nur eins,
und dann nimmt man hier auch wieder die größte Zahl,
die dort eben weiter größere N eben gebraucht wird.
Und das heißt dann eben S von Speicher oder Sorrige,
A ist die Maschine und N ist die Bezugsgröße der Eingabe.
Ja, machen wir das mal für unser Programm her
Können wir uns ja an der höheren Äquivalenz eben nehmen.
Und da steht jetzt schon mal da,
also die Ergebnisse stehen schon mal da,
wir müssen überlegen, warum die gelten.
Warum ist die Zeitkomplexität bei diesem Programm zur Berechnung von Urhoch-N, N-Hoch-N-Grade-O-Hoch-N?
Wo muss ich da eigentlich nur hingucken? Eigentlich ist da
nur die Schleife wichtig. Also was wir da vorher haben,
ist alles konstant, wenn wir dahinterhin,
auch was hätten wir auch konstant, die Schleife.
Da kann es ja die Fälle geben von mehreren geschachtelten Schleifen,
aber hier haben wir ja nur eine.
Und die Schleife wird ja
gerade einmal durchschlafen
Also Endschritte. Und dann haben wir da natürlich noch eine Konstante,
aber nach den Überlegungen brauchen wir die,
da uns keine Kummer drüber zu machen.
Das ist also hoch eng. Und warum ist die Platz kommt?
Was bedeutet da jetzt Ohohoch 1? Das ist ja vielleicht
noch mal ein Sonderfall. Das wäre ja hier,
wenn das Stadtend Quadrat 1 steht, dann heißt das ja,
dass die Funktion durch eine Konstante beschränkt wird.
Ja, und wie ist das hier?
Warum wird die Platzkomplexität hier durch eine Konstante beschränkt?
Ja, bitte. Egal, wie dann
die Eingabe ist
Genau. Egal wie lange du redest,
sagst du auch mal laut, egal wie lange die Eingabe ist,
wir brauchen immer nur dieselbe Anzahl von Registern.
So, das ist aber natürlich unfair,
weil ja die Kosten größer werden können bei großen Zahlen.
Und dazu haben wir dann das Logarithmische Maß,
wo ja dann die Größe der Eingabe eine Rolle spielt.
Und da haben wir jetzt die Zeitkomplexität von N-Quadrat
Login. Und das kann man jetzt folgendermaßen überlegen. Werden wir uns überlegt schon,
dass es auf die Schleife ankommt, die wir einmal durchlaufen.
Und das Entscheidende ist ja hier so eine Anweisung,
wo wir immer die entsprechende, das Fürchenergebnis nochmal mit der TALN multiplizieren.
Das heißt also, wir berechnen ja sowas.
Wir haben schon ein N-Hochin nach dem Eden-Schleifen-Durchlauf und in dem Aktuellen
wird dann nochmal ein End-Hauf multipliziert.
Nicht und nach unserem Maß ergebt das ja eben der Logarhythmus davon,
was man auch umrechnen kann, als NVNI und LVNN,
was man wiederum abschätzen kann,
als iPlus 1 mal Logarhythmus
Okay, das wären also die Kosten für so eine typische Einweisung.
Wie kommt man jetzt von da zu dem Endquadrat-Log-N? Nicht,
das war ja nur für die Schleife, für einen Punkt I.
Das Ganze müssen wir ja für verschiedene Schleifen Durchlauf machen.
Also müssen wir das aufsummieren für I gleich 1 bis N.
Das heißt also, die Komplexität ist,
wir rechnen den Ausdruck von I gleich 1 oder N minus 1,
von dem hier, und das wiederum ist ungefähr,
oder von der Ordnung, Uhr von N-Quadrat-Log-N.
Wer kann denn das nachvollziehen? Wie kommen wir von hier
nach der Also das Lockerhythmus ändert, können wir ja ausklammern.
Das ist klar. Warum ist die Summe von I
gleich 1 bis N von der Ordnung N Quadrat?
Nicht, dass es elementare Mathematik. Nicht diese Summe ist
ja gerade N minus 1 mal N. Und wenn man das
ausmultipliziert, haben wir ja N Quadrat minus N halbe.
Und wenn man eben wieder an die Ordnung denkt,
wo die konstanten Faktoren weggelassen werden können,
kann man das sozusagen abschätzen durch zwei Endquadrat oder sowas.
Also ist das von der Ordnung
in Quadrat
Also sieht man, in manchen Fällen ist das also durchaus gar nicht so schwer.
Aber es gibt natürlich beliebig schwere Fälle dann. Okay. Ja, das Ganze,
diese Unnotation, das kommt aus der, glaube ich,
Zahlentheorie und heißt da, auch nach dem Autor Landauer-Symbole.
Und was wir hier also gerade benutzen haben, ist jetzt
dieses O von G. Und was später nochmal vorkommt,
ist dieses Täter von G. Das wäre dann,
wenn man wirklich auch nicht nur eine Obergrenze hat,
sondern auch eine Untergrenze.
Und dann gibt es noch ein paar andere,
die wir hier aber nicht eben benutzen
Okay. Gut. So,
und jetzt kommen wir also zu dem Vergleich von RAM und Turigmaschine,
was eben auch dazu dient,
irgendwie Mächtigkeit einzuschätzen und zu vergleichen, zum anderen aber auch,
um sich ein bisschen näher mit diesen Modellen zu befassen,
nicht eine Rechnung jetzt auf der RAM,
haben wir ja jetzt schon gesehen.
Und auf der Turingmaschine haben sie in FGI 1 kennengelernt.
Da gibt es also ein Band. Ja,
manche sagen, eine Turingmaschine hat ein unendliches Band.
Ist das
eine richtige Aussage
Ja? Man kann es beschränken, wenn man los ist.
Da ist auch was Wahres dran, aber ich hätte es gern nochmal präziser.
Was heißt kein und muss? Wann meint man,
ja bitte? Man kann es vordefinieren, ob es ein
einseitig unendliches Baden sein soll. Als Weitweite. Ja,
wird denn jemals das unendliche Band unendlich beschrieben, Budget?
Genau, das wäre die präzisere Formulierung. Das ist immer
ein endliches Band, aber bei Bedarf kann man es verlängern.
Insofern entspricht das gewissermaßen auch realen Rechner,
nicht wenn sie irgendwelche Bänder haben und ihr Algorithmus langt nicht,
dann kaufen sie noch Bänder oder Speicher dazu und dann können
sie es wieder verlängern
Nicht, aber da verlangt es halt möglicherweise die ganze Geschichte.
Und das ist der Hintergrund der Thurikmaschine, dass je mehr Band ich brauche,
je größer sind die Kosten. Das Interessante ist,
obwohl das so ist, in der Arbeit von Thuring,
da, die heißt ja, wie Sie gesehen haben,
Berechnung oder Entscheidungsproblem für berechenbare Zahlen und nicht Funktionen.
Und er schreibt, ja, er hätte auch Funktionen nehmen können,
aber er wollte das einfachste mathematische nehmen und das sind Zahlen.
Und da gibt es dann eben einen Begriff von berechenbaren Zahlen,
zum Beispiel P. Nicht von P wissen Sie ja,
das kann man nicht durch einen endlichen Dezimalbruch darstellen.
Das heißt, wenn man das berechnen wollen,
müsste man das tatsächlich unendlich beschreiben
Das ist also ein kleiner Widerspruch zu dem, was wir heute unter Naturikmaschine verstehen.
Aber wer könnte denn sagen, wie kann man sich das vorstellen,
dass man LP mit der Turing-Maschine berechnen kann?
Also man könnte sich vorstellen, man geht hin und lässt
die unendlich weiterlaufen. Und wenn man lange genug wartet,
dann hat man eine beliebig lange Expansion von der wirklichen Wert von P.
Dann weiß man nun natürlich nicht, wie lange muss man warten,
nicht, weil die Maschine hat ja die Möglichkeit,
wenn sie hier schon ein paar Tagen geschrieben hat,
wieder zurückzulaufen und wieder was zu ändern.
Und in Wirklichkeit ist das ja auch so
Er hat eine jüngere Idee, wie man das nun wirklich
exakt machen könnte, wenn man Pieper rechnen wollte.
Ja, man könnte zum Beispiel Marken setzen. Man könnte die unendlich laufen lassen und sagen,
der setzt hier immer mal eine Marke mit der Bedeutung,
was links von der Marke ist, das ist schon endgültig.
Und die Marke wird immer weiter nach rechts gesetzt, sodass man,
wenn man beliebig lang wartet, eine gewünschte Genauigkeit eben bekommt.
Ja, oder eine andere Möglichkeit ist,
man betrachtet das tatsächlich als Funktion und sagt,
wenn ich eine Zahl N eingebe,
dann soll die Zahl Pi in den ersten N dezimalstellen, berechnet werden.
Und das funktioniert für alle N. Dann hätte man auch eine
genaue Definition von P. Und er schreibt dann auch,
es gibt dann auch Beispiele von nicht berechenbaren Zahlen.
Wer kann sich das denken? Wieso kann man einsehen,
dass es nicht berechenbare Zahlen gibt? Also in dem Sinne Zahlen,
die nicht von der Touringmaschine berechnet werden. Wenn ich also vorher,
wenn man das klassische klassische Bild nimmt,
hätte man ja nur so sagen endliche Dezimalbrüche,
da weiß ja jeder, es gibt eben Zahlen, die unendliche erfordern.
Aber das haben wir ja nun ausgeräumt mit dem Argument von von Thuring.
Wieso kann das jetzt immer noch nicht berechenbare Zahlen geben?
Nicht, also jede Zahl, bei der ich irgendwie,
die ich irgendwie definiere, konstruktiv definiere,
steckt ja am meisten Algorithmus dahinter, die ist natürlich berechenbar.
Nicht, aber sie können sich ein folgendes Argument unternehmen.
Die Menge der berechenbaren Zahlen ist ja gleichmächtig der Menge der Thuring-Maschinen, die die berechnen.
Ja, und wie viele Thuring-Maschinen gibt es? Nicht,
wenn Sie mal an unendliche Kardinalitäten denken,
Da gibt es nur abzählbare Touringmaschinen,
weil ich die Touringmaschinen ja erst mal ihre Größe danach sortieren
kann und dann ihre alphabetisch elexikografisch nach ihrer Beschreibung und so weiter.
Also ich kann alle Touringmaschinen in eine Reihe aufzählen und auf
diese Art und Weise erfasse ich auch alle.
Aber wenn Sie jetzt die unendlichen Dezimatbrüche betrachten,
gibt es natürlich überabzählbare Fehler, weil Sie wissen,
in dem Kontinuum zwischen 0 und 1 gibt es überabzielbar viele Elemente oder es gibt das berühmte Diagonalverfahren,
das geht ja folgendermaßen, wenn Sie mal annehmen,
Dann haben wir noch Platz hier oben.
Wenn Sie mal annähen, wir schreiben hier alle unendlich
in dezemahlzahlen auf. Das geht also hier unendlich weit.
Und hier auch unendlich weiter. Wie kann man jetzt daraus
eine Zahl konstruieren, die da noch nicht enthalten ist?
Nicht, das ist das berühmte Diagonalverfahren, was Georg Kanther
schon entdeckt hat. Ja, das macht man so,
indem man sagt, hier an der Stelle ändere ich was,
an dem zweiten Teil, an der zweiten.
Und hier endlich auch was. Und hier ähnlicher, ich muss natürlich
mindestens zwei Ziffern haben. Und wenn ich das so weitermache,
kriege ich jetzt an den Kreuzen eine unendliche Folge, Eine unendliche Zahl,
die den Zynalbruch, der in dieser Folge noch nicht enthalten ist.
Das ist natürlich ein abstrakter Beweis, aber das geht auch.
Gut, also das war jetzt ein kleiner Exkurs zur Endlichkeit des Arbeitsbandes.
Deswegen haben wir hier auch eben solche Randmarkierungen.
Wenn die Thuring-Maschine da draufläuft und Platz braucht,
dann darf sie die irgendwie beschreiben und neue,
entweder sind die Randmarkierungen schon da oder das setzt also neu
So, und dann haben wir hier diese Steuereinheit,
die, ich habe übrigens nicht,
das wird ja auch meistens als die endliche Kontrolle bezeichnet,
also mein ganzes Informatikerleben kämpfe ich gegen diesen Begriff,
dass man sagt, das ist die endliche Kontrolle,
das ist eine völlig falsche Übersetzung, nicht Kontrolle,
Kontrolle im Englischen heißt Steuerung, nicht Kontrolltheorie ist Steuerungstheorie und nicht Kontrolltheorie,
aber das kann man schon nicht mehr rausgehen,
dass jeder sagt, das ist die endliche Kontrolle,
es ist die Steuerung,
deswegen steht hier auch Steuereinheit und nicht Kontrolleinheit.
Gut, die hat ja eine endliche Anzahl von Befehlen,
die jetzt nur die Arbeitsweise auf diesem Band hier beschreiben und
die sehen ja immer so aus, ich lese ein Zeichen,
Bin in einem Zustand, schreibe ein neues Zeichen,
gehe nach links und rechts und gehe in einen neuen Zustand.
Das kennen Sie ja alle. Und wir wollen jetzt in der Simulation durchführen.
Und zwar, wenn wir hier eine Thüring-Maschine haben,
die ein Problem berechnet, in der Zeitkomplexität TVN.
Und die Frage ist, wenn wir die jetzt simulieren,
erstens, wie das geht und ob das geht.
Und zweitens, wie lange wir der brauchen. Nicht,
dass wir das natürlich schrittweise simulieren, muss das länger sein,
weil wir ja für jeden Schritt hier ein paar Schritte machen müssen.
Nicht, das widerspricht gewissermaßen der Anschauung,
dass die Rahmen ja
irgendwie schneller ist
Aber aufgrund unseres Konstruktionsbeweises muss das ein bisschen langsamer sein.
Und die Frage, wie langsam? Ja, und die Antwort ist,
eine TVN-beschränkte Thuring-Maschinezeit kann man in TVN-Log, TVN-N simulieren,
also fast in der gleichen Zeit kommt nur noch der Faktor Logphone-N. Werden wir gleich sehen.
In der umgekehrten Reihenfolge, wenn wir also eine TVN-N beschränken,
Zeitbeschränkte ran haben, wäre auch die Frage,
wie viel brauchen wir hier auf der Thuring-Maschine?
Und da wird dann herausgekommen, dass wir da Quadrat von denen brauchen.
Das heißt, sie sehen an der kleineren Verzögerung hier,
kann man also trotzdem ablesen,
dass die RAM so im Groben etwas schneller ist als die Torikmaschinen.
Okay, das ist jetzt also der Satz.
Eine Tee von Endzeit beschränkte Mehrband, deterministische Torikmaschine,
könnt euch ein RAM plus simuliert werden,
die im Uniformen Mars OFONTee von Endzeit beschränkt ist und die
im Lokaritmischen Mars,
also TVNN-Main LockTee
von Endzeit beschränkt ist
So, da haben wir jetzt erst mal verschiedene Fragen zu klären.
Also TVN Endzeit beschränkte Tourigmaschine. Ist klar, DTM,
das ist ja das normale Modell der Tourigmaschine.
Kann man sich überlegen, wie man das überträgt,
auf eine Nicht-Deterministische. Mehrband-Touring-Maschine. Das haben sie ja,
ich weiß nicht, ob sie das in FGG1 hatten.
Man kann genauso gut, also auch eine Touring-Maschine betrachten,
wo wir statt einem Band mehrere Bänder haben.
Das heißt also, wenn hier die Steuereinheit ist,
dann könnten wir hier so sagen, nehmen wir mal einseitig
unendliche Bände.
Also hier zum Beispiel drei
Und da lese ich ihn dann also auch lese Schreibköpfe drauf.
Und die Befehle sehen dann eben so aus,
dass aus diesem Viertuppel dann ein Sechstuppel wird,
wo dann jedes Band speziell gesteuert wird.
Das ist manchmal sehr praktisch. Die Frage ist nur,
wie verhält sich eine Mehrband-Touring-Maschine im Vergleich zur Einband-Touring-Maschine?
Weiß das jemand? Ist das, gibt das wesentlich mehr,
also eine bessere Komplexität oder wie ist das?
Ja bitte
Ja, das kommt ja von mir.
Das ist dann die Beine. Ja, und warum?
Das habe ich gerade auf Johannes gehauen. Aha,
aber gehabt immerhin. Das ist ja schon mal interessant.
Nee, das geht jetzt folgendermaßen. Also machen wir was
mal mit zwei Bändern. Wenn wir zwei Bänder haben,
ja, wie könnte man die beiden Bänder durch Einbahn simulieren?
Ja, das wissen sie noch. An einem Bann
hat er in jeder Zeichen, sagt er,
links davon
Ja, das kommen wir gleich drauf,
das ist die schwierige Methode, die einfache Methode, ist die Methode,
dass sich die Bänder so zusammenlege und ein zweiseitig unendliches Band habe.
Das geht auch. Dann hätten wir nur die Frage,
wie kann ich ein zweiseitig unendliches Band auf ein einseitig unendliches Band reduzieren?
Und ich so, das ist ja so,
dass das immer nur endlich beschriftet ist.
Und dann müsste ich dafür sorgen,
dass ich bei jedem Schritt den ganzen Kram so verschiebe,
dass ich immer rechts von einer Marke bleibe.
Das geht also. Das ist die weniger elegante und
sie haben jetzt richtigerweise schon die elegantere Methode gewählt.
Also können sie jetzt nochmal entschuldigen,
dass ich unterbrochen habe, wie geht das mit der anderen
Und der andere mal das eine Band, was man im Ball Richtung entwickelt.
Ja, so wie jetzt hier, genau. Und,
warte mal, so mit Meter, sag ich mal,
so in diesem Gesetz, das irgendwie Erkennen zu fallen,
dann ist man jetzt wieder am Anfang und angekommen.
Und ich rate mal, das eine Band. Okay. Ja,
also der entscheidende Begriff ist ja der Spuren. Nicht,
Sie kennen das vielleicht von Tonbändern, dass man da verschiedene Spuren hat.
Ich habe also ein Band, wo ich gewissermaßen hier zwei Spuren habe.
Und wenn ich hier zum Beispiel ein A und ein B habe,
dann habe ich hier auch ein A B und was ich als Metazeichen benutzen,
nicht dieses AB, nehme ich jetzt als ein Zeichen,
was dafür steht, könnte ich auch schreiben, Ja, ist ja egal.
Könnte ich zum Beispiel schreiben, irgendwie das Zeichen XAB,
nicht was das Zeichen, dieses neue Zeichen,
das Zeichen A auf dem ersten Band und das Zeichen B auf dem zweiten darstellt.
Dann habe ich zwar ein bisschen geschummelt in dem Sinne,
dass ich zwar ein größeres Alphabet habe,
aber ich habe die beiden Bänder dargestellt.
Und dieses Schummeln geht jetzt ja in die Zeitkomplexität nicht ein,
sodass das also so funktioniert.
Also das hat natürlich immer alles seine Kosten.
Und das geht natürlich genauso mit Endbändern und deswegen
ist der Satz hier auch mit Endbändern formuliert
So, dann haben wir hier noch die RAM Plus.
Das bedeutet nichts anderes. Die RAM hatten wir ja mit Multiplikation und Division definiert.
Das ist hier ausgeschlossen. Die darf nur addieren und subtrahieren,
weil mit Plus und Mal, da kann man ganz andere Sachen machen.
Das wäre auch unfair. Da haben die Thuring-Maschine mit zu
vergleichen. So, dann als nächstes machen wir,
dass wir das Eingabeband und das Ausgabeband hier weglassen,
weil wir gewissermaßen unsere Arbeit,
Thuring-Maschinen könnte man ja auch mit Eingabeband und Ausgabeband definieren.
Und dann wäre das zu sagen, gleich.
Man kann umgekehrt bei beiden das weglassen und sozusagen den Speicher
zu gewissermaßen als Eingabe und Ausgabe benutzen.
Das machen wir hier auch
Und dann müssen wir eben natürlich eine Simulation, geht so,
dass wir uns eine Konfiguration der Touring-Maschine überlegen und überlegen,
wie wir sie hier im simulierenden Modell darstellen.
Warum spreche ich hier von einer Konfiguration und nicht vom Zustand der Touring-Maschine?
Warum wäre Zustand, wenn ich vom Zustand,
ich spreche ein unglücklicher Begriff? Weil wir ja die Zustände
hier in der Steuereinheit haben und die gesamt,
der Gesamtzustand besteht ja aus dem Zustand der Steuereinheit und dem Zustand des Bandes,
also des Bandinhalt.
Und ich und beides
zusammen bezeichnet man gerne als Konfiguration
Okay, also diese Konfiguration der Thüringen-Maschine besteht also aus dem Arbeitsband,
dann aus dem Zustand der Steuereinheit, dann aus der Position des Kopfes,
hier zum Beispiel J gleich 6 und aus einem Befehl,
der hier im Psychiater P auszuführen ist, also Zustand P,
ich lese auf dem Band das I,
das passt ja hier gerade, ich schreibe dann ein U,
gehe nach links oder rechts,
hier nach links und gehe dann in einen Zustand Kuh.
Nicht so eine Situation muss ich jetzt hier auf der Ran simulieren,
da überlege ich mir zunächst mal, wie stelle ich jetzt den Arbeitsspeicher da
Das mache ich hier in den Registern. Also ich darf ja hier
beliebig große Zahlen reinschreiben. Das nutze ich nur ganz rudimentär aus,
indem ich nur Buchstaben des endlichen Alphabetes hier reinschreibe.
Und hier habe ich jetzt noch zwei Register frei. Die benutze ich für den Rest,
indem ich hier in den Akkumululator den Zustand P schreibe,
den aktuellen, und in das Register 1 dieser Position J. So,
und können Sie sich jetzt vorstellen,
wie jetzt die RAM jetzt zu programmieren ist,
dass Sie genau jetzt hier diesen Übergang der Thuring-Maschine darstellt
Ja, erstmal machen Sie mal ein Gedankenexperiment, ob Sie
sich das vorstellen können. Was muss dann passieren? Wenn
ich also hinterher, müssen wir im Zustand Kuh sein.
Okay, dann müssen wir eine Stadt im PNQ schreiben.
Dann müssen wir, statt dem II, ein Uhr
geschrieben haben. Das ist ja irgendwo auf dem Arbeitsbank.
Und dann müssen wir nach links oder rechts gegangen sein.
Das heißt, wir müssen das J hier verändern.
Dass sie doch alles harmlos aus. Dann müssen wir
uns nur noch überlegen, wie wir das genau machen.
Nicht, und das machen wir jetzt so,
indem wir jetzt hier mal erst eine bedingte Abfrage haben.
Das sind ja auch hier immer ganz viele,
ganz viele Befehle und wir müssen dann immer gucken,
in welchem Zustand wir gerade sind.
Und das machen wir hier auch. Nicht,
wenn wir im Zustand P sind, das gucken wir hier
im Akkumulator nach
Dann fragen wir ab, was wir gerade im Arbeitsband lesen. Ja,
also in der höheren Sprache schreiben wir dann,
wenn der Inhalt des Registers 1 und des Registers mit der Adresse 1,
also 6 hier, wenn der gerade I ist,
dann führen wir gerade die Simulation aus,
wie wir sie hier gerade vornehmen wollen.
Ja, und dann schreiben wir genau an die Stelle ein U,
nicht für diesen speziellen Befehl, dann gehen wir nach links.
Das heißt, das Register 1,
wo der Befehl Nummer 6 stand,
der wird dann runtergezählt auf 5,
nicht bei rechts hochgezählt
Genau, dann bleibt nur noch, dass wir in der neuen Zustand Kuh ausgehen.
Und das ist, wie gesagt, nach R0, schreiben wir dann Crew. Und dann sind wir fertig. Das heißt,
wir sehen jetzt, wir haben jetzt für jeden Schritt der Turing-Maschine,
haben wir hier eine größere Anzahl, also ein,
zwei, drei, vier, fünf Schritte,
aber eine konstante Anzahl, dass es für alle Befehle gleich,
da ändert sich nichts, das sind immer fünf Schritte,
was sich jetzt hier in dem C hier versteckt,
was eben erklärt,
dass wir jetzt im Uniformenmaß das Ganze auch mit T
von N-Zeit beschränkt geschafft haben
Ja, wie kommen wir denn jetzt zu dem Zusatz,
dass wir im Logarithmischen Maß noch einen Logarithmus TVN haben?
Wo kommt das denn her? Also die Frage ist,
wo entstehen hier die größten Kosten? Wo an welcher Stelle
könnte das sein? Dann frage ich mal durch,
entstehen die hier in den Registern des Arbeitsbandes?
Kann ich da große Kosten haben? Nein, siehst du
den Kopf, weil wir ja nur ein endliches Symbol haben.
Entstehen die hier im Register 0
Nein, habe ich nur endlich viele Zustände. Entstehen die
hier im Register 1? Ja, weil ich ja da
beliebig viele Adressen habe auf meinem Bein, beliebig große Adresse.
Und die Adressen kann ja so groß sein, wie ich
Schritte machen kann. Und ich kann Tee von Entschritte machen.
Und da kommt das also her. Also genau das,
was wir auch fühlen, dass nämlich die Territorienmaschine deswegen ineffizient ist,
weil man manchmal unendlich lang hin und her spulen muss.
Das kommt also jetzt durch dieses Ergebnis dann auch zustande.
Okay. Gut, dann wenden wir uns jetzt dem anderen Ergebnis zu. Das heißt,
jetzt haben wir eine logarithmische Im Logorithmus von Maas TV and
Zeit beschränkter Rahmen plus, also ein Rahmen ohne Multiplikationsdivision,
kann durch eine Ohrfund-T-Quadrat zeitbeschränkte Fünf-Band-Touring-Maschine simuliert werden.
Nicht, also dass wir in der Fünf-Band-Touring-Maschine nehmen,
dass es einfach nur praktisch, weil wir ja vorhin schon überlegt haben,
ob Fünf-Band oder Einband macht keinen großen Unterschied,
das können wir hinterher von Fünf-Band auf Einband suggerieren.
Also reduzieren. Also leisten wir uns den Luxus,
dass wir mal fünf Bänder hernehmen. Und ich möchte sehen,
Also da, wenn wir hier ein Band- und Ausgabeband haben,
dann können wir schon mal zwei jetzt dafür spendieren für Eingabe- und Ausgabeband.
Nicht mehr hätten ja das auch dasselbe machen können, dass wir darauf verzichten.
Das braucht auch keinen großen Unterschied. Ein Band,
nehmen wir hier als Arbeitsband, das bedeutet nur für Zwischenreuerechnungen.
Was wir jetzt noch darstellen müssen, ist jetzt der Inhalt des Akkumulators.
Das machen da eben ersten beiden in den zweiten Band,
also dass der Inhalt des Akkumulators und der Rest,
also der Register R1 und folgende,
das machen wir im ersten Band
In der Gestalt,
dass wir hier sozusagen immer die Adressen der Register oder die Nummern der Adresse sind und den US-Inhalt haben und dann schön durch Sondersymbole getrennt,
sodass wir, wenn wir hier zum Beispiel in das Register R2 wollen und auch C2 lesen,
dann würden wir in der Touring-Maschine hier langlaufen,
bis wir hier C2, in der binären Darstellung,
finden dann die nächsten zwei Zeichen überlaufen und dann hier gucken,
wie groß das, was er würde,
ja dann dann i3 stehen, nee, i2 stellen.
Ja, den C2, Moment, hier haben wir Adresse,
1C1, I2 C2 und hier E3,
dann C3,
Okay. Ja, das ist ja jetzt eigentlich,
wenn sie ein bisschen mit der Touring-Maschine gearbeitet haben,
dann durchaus geläufig, aber wenn sie nicht mit der Touring-Maschine gearbeitet haben,
vielleicht nicht so.
Das werde ich jetzt auch nicht weiter formal beschreiben,
sondern nur an einem Beispiel, so wie es auch im Skript steht.
Also zum Beispiel die Simulation von Art Stern 25.
Was muss ich da machen? Also, da steht er.
Man sucht auf dem ersten Band nach dem Register 25. Nicht,
dass es die Adresse, und das ist eine Konstante,
und die Touring-Maschine kann also,
wenn sie irgendwo die 25 stehen haben,
25 Felder nach rechts laufen,
indem sie immer sozusagen
die Felder abstreichen
Sie kann natürlich nie beliebig große Zahlen merken über die Zustände,
die weil die Zustandsmenge in der Steuereinheit nur endlich ist.
Aber sie kann sich das durch aufschreiben und Striche machen in dem Sinne dann rekonstruieren.
Also wenn Sie dann die Position 25 hier gefunden hat,
dann guckt Sie, was nach den Doppel-Noppeln-Kreuzen da steht.
Da steht irgendwo eine Binärkombination. Und die kopiert sie nun
in das Band 5. So,
dann sucht sie in dem ersten Band nach dem Register,
dessen Index auf dem fünften Band
eben gespeichert ist
Wir wollen ja... So, falls gefunden, kopiert M,
den Inhalt dieses Registers auf Band 5, in den Arbeitsspeicher.
So, und am Schluss entaddiert die Zahlen von dem zweiten und fünften Band
und schreibt das Resultat auf Band 2. Also was wir jetzt gemacht haben,
ist, wir haben jetzt die Position von 25 gesucht,
haben doch die Adresse gesucht, die da drin steht,
weitergelaufen zu der Adresse haben dort den Inhalt genommen und den dann hinterher in den Akkumulator,
also Band 2 eben geschrieben.
Nicht, dass es, das geht so, da muss man sich aber wirklich so elementare Dinge der Turink-Maschine klar machen. Nicht,
wenn hier zum Beispiel wir, sagen wir mal,
25 stehen hätten und hier wäre das Band 1 und hier hinten her das Band 25,
dann könnte das nur so sein,
dass sie das so macht,
ich gehe hier nach 1,
setze hier in Sonderzeichen und gehe wieder zurück und verringere das auf 24. Dann gehe ich wieder eins nach rechts und setze mein Zeichen eins weiter,
gehe wieder zurück und setze das auf 23.
Und das bis hier, bis ich hier bei der Null
anbekommen ist. Also das drückt aus,
dass ich diese beliebigen Zahlen natürlich nicht in der endlichen Zustand speichern kann,
sondern dass ich es alles auf dem Band mache.
Und das ist eben aus Sicht der Thüringmaschine sehr mühselig und
deswegen eigentlich für berechenbarkeit kein sehr attraktives Modell.
Und da ist eben die RAM sehr viel sinnvoller.
Ja, das zweite Beispiel wäre die Simulation von Store 32. Das geht so,
man sucht auf dem ersten Band das Register 32,
doch dann den Inhalt, falls gefunden, kopiert man alles von dem ersten Band,
was rechts von sowieso steht, außer dem Inhalt des Registers 32.
Also ich will das mal kurz machen. Nicht mein,
man kopiert das, was rechts von dem Register 32 steht ins Arbeitsband,
kopiert dann den Inhalt des Akkumulators an diese Stelle.
Und dann, was rechts vorher stand, dann wieder zurück.
Das entspricht gewissermaßen der Verschiebeoperation. Denn wenn man irgendwas nach 32 kopieren muss,
kann das mehr Platz erfordern oder weniger,
um aber keine Lücken zu entstehen oder Platz zu schaffen,
wird erstmal alles, was rechts davon steht, in den Arbeitsspeicher kopiert.
Nicht, da geht also ganz deutlich ein,
dass das Band immer nur endlich beschriftet.
Das ist nicht sonst, er würde das ja nicht funktionieren
Okay. Ja, ist das so im Prinzip klar, oder?
Okay. Gut. Ja, dann kommen wir ja zu der Frage,
warum haben wir jetzt da T-Quadrat von N-Zeit beschränkt? Nicht also eines ist ja klar,
dass wir für jeden Schritt der RAM,
haben wir ja auf der Thuring-Maschine einen Schritt gemacht, das heißt,
da haben wir jetzt um S von TVN und dann ist außerdem klar,
dass wir Jetzt ja Speicher,
also wenn die RAM eine Speicherkomplexität von N hat,
dass wir dann auch so viele Schritte,
so viel Speicher hier drüben brauchen.
Aber die Frage ist,
wie kommen wir jetzt von dem Therm hier, der vielleicht,
der ja richtig ist, jetzt zu dem Tee-Vertrag,
warum darf man das S von N durch das T von N eben ersetzen?
Also die Frage ist, gilt das allgemein für eine Thuring-Maschine,
dass wir diese Beziehung haben, dass S von N kleiner gleich, TVNNS.
Also wenn das so ist, dann wären wir ja fein raus,
weil wir ja dann die Abschätzung hätten,
kleiner gleich Schäfer und ET von Henn und unser Ergebnis.
Bleibt also die Frage, warum gilt das immer?
Warum ist die Zeitkomplexität immer größer gleich der Speicherkomplexität einer Thüringmaschine?
Denken Sie mal ans Gegenteil. Wäre denn denkbar,
dass ich vielleicht doppelt so viel Speicher benötige,
wie ich Schritte mache
Nee, das geht nicht. Ich kann ja nur Speicher
dadurch überlegen, indem ich Schritte mache. Also ich muss
immer so viele Schritte machen, wie ich auch Speicher habe. Das heißt also,
in dem Satz wäre das natürlich eine exaktere Abschätzung,
aber wenn man die so sagen,
ein bisschen gröber vergleichen will, nur über TVNN,
dann macht man diese Überlegung und dann hat man das so weit.
Gut. Ja, das war also historisch so,
dass es dann also die Turing-Maschine gab oder das Churcher-Kalkül und später die RAM.
Und die hat man alle verglichen miteinander und es gab
noch viel mehr Maschinenmodelle. Und man hat gemerkt,
die kann man alle miteinander polynumiell simulieren
Nicht Polynomiel kann natürlich im Einzelnen, im praktischen Fall schon
ganz schlimm sein, aber es geht natürlich viel schlimmer.
Und da hat man gesagt, ja, das ist doch
irgendwie so eine Systematik und hat das also eine Maschinenklasse genannt.
Also alle Maschinen, die sich polynomiell miteinander simulieren lassen.
Und das ist jetzt folgende in Varianzthese. Es gibt eine Standardklasse von Maschinenmodelle,
die also zum Beispiel alle Arten von Touring-Maschinen,
also auch mehr Band, die wir gesehen haben,
alle Varianten von Rams, gibt es auch verschiedene, mit logarithmischem Zeitmaß,
Und auch die Rams im uniformen Zeitmaß und logarithmischen Speichermaß umfasst,
wenn wir nur die standardarathmetischen Instruktionen von Additionen und Substraktionen eben benutzen, also keine Multiplikation.
So, und diese Maschinen, die können alle, alle untereinander in Polynomiella Zeit eben simulieren. Nicht,
und das gibt also doch den Hinweis darauf,
dass das irgendwie was sein muss,
was unabhängig von der speziellen Klasse sind,
die ich also in Formeln, ja,
und man nennt das die erste Maschinenklasse und in Formeln heißt das,
also die Ram plus, die eine polynomielle Zeit haben oder die Probleme,
die man damit lösen kann.
Das sind dieselben Probleme, die man auch im lockerithmischen Maß
erlösen kann, in polynomieller Zeit.
Und das sind dieselben, die man mit einer deterministischen Tourikmaschine lösen kann.
Und das sind dieselben, die man nur mit einem Bandhirn erlösen kann.
Und das sind dieselben, die man auch,
das war noch einem 1 zu früh, die man auch in,
die man auch in der Klasse P sind.
Sie haben ja vielleicht in FG1 gelernt über P und NP.
Nicht P ist die Menge der Probleme,
die man in polynomieller Zeit eben lösen kann.
Und da hat man dann also eine Zugehörige Maschinenklasse und die
nennt man dann eben die erste Maschinenklasse. So,
und die wird jetzt in Kontrast gesetzt zur zweiten Maschinenklasse,
die eben jetzt durch die Parallelrechner dargestellt ist,
was wir dann am Donnerstag machen.
Okay, dann erstmal danke für heute