Ja. So, nun können wir einsteigen. Also,
wo waren wir gestern stehen geblieben? Wir hatten uns dynamische
Programmierung angeguckt. Ein Spezialfall eines Suchverfahrens, was geeignet ist,
optimale Pfade zu finden. Und im Gegensatz zu dem allgemeinen Fall,
der im Buch beschrieben ist,
gibt es also tatsächlich eine Reihe von Spezialfällen,
speziell im Bereich der Sequenzverarbeitung, wo ein solches Verfahren sehr effizient eingesetzt werden kann.
Wir hatten also erst die ins Zeichenkettenvergleich uns angeguckt,
wo aufgrund des Lobkonstraints, was wir angegeben hatten,
immer noch ein Wachstum des Suchraumes da war.
Das heißt, es wurde nicht so viel rekombiniert wie Verzweigung im Suchraum
vorhanden ist. Wir hatten uns dann ein zweites Slobe-Konstraint angeguckt,
was diesen Nachteil nicht hat, was also immer dafür sorgt,
dass die Breite des Suchraumes gleich bleibt.
Das ist hier veranschaulicht gewesen. Wir haben also in jeder Zeitschicht
hier immer die gleiche Anzahl von Knoten im Suchraum drin und über der Zeit,
das ist die Achse hier, wächst also die Knotenanzahl nicht.
Nicht Marline Arne und schon gar nicht exponentiell,
sondern bleibt konstant
Und das ist natürlich sehr interessant. Und da kann man
eben jetzt alle möglichen Sequenzvergleiche ein anwenden,
wann immer man in der Lage ist, ein Distanzmaß anzugeben.
Und Distanzmaße kann ich praktisch für so gut wie alle Dinge
irgendwie definieren. Im euklidischen Raum ist es eben besonders einfach,
aber auch in anderen Räumen lassen sich solche Distanzmaße formulieren.
Auch in hochdimensionalen Räumen. Das ist das Beispiel, was
wir bei der Spracherkennung haben. Und wir haben dann sozusagen
ein Wort repräsentiert, als ein Pfad durch ein hochdimensionalen Raum.
Und über diesen Pfad, wie der sich durch diesen hochdimensionalen Raum windet,
das ist mit dieser Dynamik,
können wir dann das eine Wort von dem anderen unterscheiden.
Was eben dazu führt, dass wir auch Wörter,
die die gleichen Laute enthalten,
aber in unterschiedlicher Reihenfolge voneinander unterscheiden können.
Denn der eine Pfad geht dann so rum und der andere Pfad geht so rum,
auch wenn sie sich zum Schluss wieder an der gleichen
Stelle treffen
Und wem immer das mit den hochdimensionalen Räumen, dass,
wie gesagt, bei der Spracherkennung sind das typischerweise 30,
40, 50 Merkmale, die man hat,
wem das so hochgradig ist, der kann sich immer diese zweidimensionale Swipe-Tastatur vorstellen,
wo eben diese Sequenz von Vektoren aus zweidimensionalen Vektoren besteht,
die immer die XY-Koordinaten des Fingers angeben.
Ich hatte auch diskutiert, dass eine der Anwendungen,
das heißt, das war mir nicht eingefallen,
eine der Anwendungen, die, jetzt ist es weg,
die Passworteingabe ist, also eigentlich die Passwort, das Passwort,
Bildeingabe, jetzt fände ich die Folie nicht mehr.
Irgendwo muss es sein. Das kann man auch wieder
in unterschiedlicher Art und Weise machen. Bekannt ist wahrscheinlich,
dass man schon so ein 3x3-Raster auf dem Mobiltelefon vorgegeben hat und
dort drauf dann irgendeine Linie zeichnet, die alle Punkte miteinander verbindet.
Da ist die Struktur weitgehend vorgegeben,
aber man kann das auf dieser Basis dann auch völlig freilassen,
dass man den Nutzer beliebigen, grafische Symbole zeichnen lässt.
Hauptsache er ist in der Lage, dass einigermaßen genau wieder zu reproduzieren.
Also dann kann ich eben, was weiß ich,
Notenschlüssel da drauf malen und dann komme ich nur mit dem Notenschlüssel wieder rein.
Die ganze Sache hat aus sicherheitstechnischer Sicht natürlich,
das geht jetzt vom Thema ein bisschen ab,
aus sicherheitstechnischer Sicht natürlich einen gravierenden Mangel,
kann sich das jemand vorstellen?
Ja,
es könnte relativ einfach sein,
wenn er bekommt
Wenn es tatsächlich nur immer eine vorgegebene Struktur ist,
dass sie durch bestimmte Punkte drin muss,
da haben sie völlig recht, die Varianz der Passwörter,
die ich dann sozusagen habe, ist sehr gering.
Aber wenn ich das freimalen kann, ist die mögliche Varianz ziemlich groß.
Ich kann ja dann beliebig lange Zeichensequenzen generieren.
Ich kann ja dann eben, was weiß ich,
mehrfach über das Touchpad fuhrwerken und die Sequenz sich merken lassen.
Also das ist nicht der begrenzende Faktor. Es ist auf einer
ganz anderen Ebene. Es hat überhaupt nichts mit dem Algorithmus
zu tun. Es hat nur was damit zu tun,
dass wir die Fehler verwenden
Nee, auch nicht. Ja,
wenn er mich noch ein bisschen fettig ist,
nicht über das Display streiche, dann kann ich es surfen,
wenn es Licht halten würde und ich dem Vater.
Genau, wir haben fettige Finger und die hinterlassen eine Spur auf dem Touchpad.
Also wer Zugang zu dem Touchpad hat, der kann den Code relativ leicht knacken. Ja,
also was immer so auf den ersten Blick an interessanter oder narrensicher Technologie erscheint,
irgendwo ist immer ein Hinkefuß dabei, wo sich dann herausstellt,
dass das vielleicht doch gar nicht so empfehlenswert ist.
Gut, also zurück zur Spracherkennung. Das Interessante war eben,
dass das Ganze jetzt zeitsynchron abwickelt, dass man das nach Zeitsynchron abwickeln kann.
Ich kann jetzt also mehrere Worte parallel,
pseudo parallel über das Signal drüber laufen lassen und immer ermitteln,
wie wahrscheinlich ist es, wahrscheinlich ist es falsch,
gibt es einen großen oder eine kleine Distanz des realisierten Wortes mit den Mustern,
die abgespeichert sind.
Und das ist eben insbesondere für Long-Audio-Alignment sehr wichtig. Long-Audio-Alignment,
ich glaube, gestern habe ich das Beispiel des Musik-Alignments als letztes noch erwähnt,
etwas ähnliches gibt es auch im Bereich,
da haben wir letztens ein Projekt dazu gemacht,
der Untertitelverschriftung
Oder der Untertitelung. Ich möchte ein Video mit Untertiteln
versehen, was dort jeweils gesprochen wird.
Also der Chaos Computer Club macht das routinemäßig auf seinen Jahrestreffen,
dass alle Vorträge auch mit Untertiteln versehen werden,
sodass also höher geschädigte Leute trotzdem die Vorträge genießen können,
ohne dass sie da zuhören müssen.
Das läuft also so ab, dass mehrere Leute zeitversetzt,
während der Vortrag läuft,
in Echtzeit
das verschriften
Ja, weil Spracherkennung ist für die Zwecke zwar einsetzbar,
aber mit relativ viel Korrekturaufwand noch verbunden,
sodass man teilweise schneller kommt, schneller dabei ist,
wenn man das Menschen verschriften lässt.
Und selbst wenn ich aber jetzt die Schriftvariante habe,
bin ich von der Untertitelung immer noch ein Stück entfernt.
Denn die Frage ist ja, auf welches Bild muss ich jetzt welchen Untertitel setzen?
Also ich will ja die Untertitel immer dort haben,
wo das tatsächlich auch gesprochen wird und nicht irgendwo anders.
Das heißt, ich muss jetzt noch das Audiosignal,
was ich ja habe vom Video,
muss ich noch wieder zuordnen zu der verschrifteten Version.
Und das nennt man Long-Audio-Elinment
Ich habe jetzt also, ich weiß,
was gesprochen worden ist, das haben die Leute aufgeschrieben.
Ich kann eine lautliche Repräsentation davon ermitteln,
das wird über Kanonen, über Aussprache, Wörterbücher erledigt.
Und dann kann ich diese beiden Sachen übereinanderlegen und wieder,
die ist das Alignmentfinden, was bezüglich des Abstandsmaßes optimal ist.
Und auf die Art und Weise weiß ich,
in welchem Zeitabschnitt ist das jetzt gesprochen worden?
Denn das ist die Information, die verloren geht. Dadurch,
wenn da Menschen sitzen und irgendwo aufschreiben,
was gesagt worden ist,
jetzt zeitliche Alignment geht verloren und genau das kann ich
damit wiederherstellen
Sodass ich also insgesamt auf einen Workflow oder eine Pipe komme,
die fast den gesamten Prozess abdeckt, der Untertitelung.
Und die sind also dann in der Lage,
mit relativ kurzer Zeitverzögerung, die untertitelte Version zur Verfügung zu stellen.
Das hat man natürlich in allen anderen Bereichen auch.
Also wann immer irgendwo Videodaten vorliegen, die man höhergeschädigten,
zugänglich machen will, dann steht man vor dem gleichen Problem.
Gut, also Sie sehen, da gibt es zahlreiche Anwendungen.
Ich hatte es auch schon erwähnt, die, na gut,
wir sind hier bei der Sprachverarbeitung, ich nicht mehr viel mehr.
Gut, die Nachteile hatte ich auch schon erwähnt, das Ganze ist hochgradig sprecherabhängig.
Das kann man als Nachteil sehen, das kann man auch als Feature sehen. Es gab mal eine Zeit lang in der Zwischenzeit,
ist es, ob die Mobiltelefone gewechselt,
die Anwendungen der Art, wie das Telefon,
in dem ich also eine Anzahl von Nummern einspeichern kann und das abfragende Nummern passiert dann über Codewörter oder aber die Fernbedienung für den Fernseher,
die mir die Steuerung der Kanäle über die Spracherkennung ermöglicht,
Und da kann man aus dem Nachteil ein Feature machen in dem Augenblick,
wo das Ding eben auf den Vater trainiert ist,
dann haben die Kids keine Chance,
irgendwelche unerwünschten Kanäle einzustellen.
Weil wenn ich spreche, abhängige Erkennung habe,
ist der Unterschied zwischen Erwachsenenstimmen und Kinderstimmen natürlich einer der Größten,
den man sich vorstellen kann.
Zwischen männlich und weiblich gibt es auch noch Unterschiede.
Aber das ist so hochgradig sprecheabhängig, dass also ein zweiter Sprecher
so gut wie keine Chance hat, irgendetwas erkannt zu haben.
Also ich weiß noch, ich bin,
das ist so Technologie der 70er Jahre irgendwann mal gefragt worden,
ob ich nicht als Sprecher zur Verfügung stehen würde für einen Erkenner,
der auf eine andere Person trainiert war,
weil ich einen ähnlichen Dialekt spreche
Das reicht nicht aus. Die Stimmen sind so unterschiedlich,
dass kein Bock verstanden wird. Also das ist wirklich eine sehr,
sehr ernste Einschränkung. Und um diese Einschränkung zu umgehen,
müssen wir den Weg zur probabilistischen Modellen machen.
Also ich komme ungefähr in drei Wochen auf das Thema wieder zurück. Da fragen wir uns dann,
wie wir solche Modelle durch Wahrscheinlichkeitsinformationen anreichern können und dann machen wir den Übergang von einer Trajektorie,
die durch den, durch einen hochdimensionalen Merkmalsraum führt, zu einem Kanal,
der durch den hochdimensionalen Merkmalsraum führt, der praktisch keine festen Wände hat.
Da habe ich dann so eine Art Gaussverteilung.
Ich kann sagen, in der Mitte dieses Kanals ist die
Wahrscheinlichkeit der Signalrealisierung
relativ groß
Weiter ich an die Ränder dieses Kanals komme, umso kleiner wird sie.
Aber im Prinzip ist auch im Unendlichen die Wahrscheinlichkeit noch ungleich null.
Sie wird nur entsprechend klein. Das ist ja das Charakteristikum von Normalverteilungen.
Und auf die Art und Weise bin ich dann in der Lage,
auch Abweichungen von diesem strikten Kanal durch den hochdimensionalen Raum zu dieser Röhre,
die praktisch keine festen Wände hat.
Auf die Art und Weise bin ich in der Lage,
Abweichung von der Norm noch ganz gut mit in den Griff zu bekommen.
Gut, ja, die anderen Nachteile hatte ich
schon diskutiert
Eine Möglichkeit besteht natürlich auch, dass man das Ganze umdreht.
Wir hatten jetzt hier immer Beispiele, wo wir beim Startknoten
angefangen haben und uns langsam durch den Suchraum bis zum Ziel durchgearbeitet haben,
sowohl für die Zeichenkettenvergleich als auch für die Spracherkennung hier.
Man kann das Ganze natürlich auch umdrehen und sagen,
ist man dazu auch in der Lage,
die Suche durch das Ziel zu steuern? Wie gesagt,
die Annahme, dass sich das Ziel kennen muss,
die Lichter dem zugrunde, nur wenn ich das Ziel kenne,
kann ich es zur Steuerung der Suche einsetzen, Annahme ist nicht immer gegeben.
Bei der Spracherkennung liegt eben, wenn ich Zeit synchron miterkenne,
dann liegt das Ziel irgendwann in der Zukunft.
Und ich kann nicht sagen, wo die,
wo es in der Zukunft liegt, weil ich die Zukunft ja nicht kennen kann.
Also per Definition, ich kann es nicht wissen.
Und aber wenn ich es denn kenne,
dann kann man das Ganze auch benutzen, um die Suche zu steuern,
indem ich nämlich immer den Abstand zum Ziel noch mit berücksichtige.
Und dann kann ich auf die Art und Weise eben eine optimale Policy bestimmen,
um von einem beliebigen Zustand aus das Ziel dann tatsächlich zu erreichen.
Und ich kann das zur Steuerung der Suche verwenden. Wenn ich diese Distanz kenne,
dann wäre das Ganze dann eine deterministische Auswahl,
ich das Problem, deshalb suche ich ja, ist natürlich,
dass ich die Distanz vor Ablauf der Suche nicht kenne, sondern bestenfalls abschätzen kann.
Das ist ja immer das Problem, was wir mit Heuristiken haben. Gut,
also das Ganze ist insbesondere nützlich, wenn der Problemraum stabil ist,
also sich während der Suche nicht ändert,
das gilt aber für viele Verfahren, das ist nicht nur hier,
wenn ich, wenn das Ziel sich nicht sehr oft ändert,
das ist allerdings jetzt wieder eine Eine Feststellung für Suche im Allgemeinen,
nicht für die Spezialfälle,
die wir hier diskutiert haben.
Die Idee ist nämlich hier, dass ich auf die zielgesteuerte suche,
dass ich mir damit eine optimale Policy für bestimmte Teilziele vorausberechne.
Dass ich also weiß, wenn ich in diesem Zustand bin,
dann ist es gut, diese Handlungssequenz beispielsweise zu wählen.
Das ist für die Spracherkennung nicht anwendbar,
aber in anderen, wie bei der Planung zum Beispiel,
ist das der Thron sehr schön.
Und auf die Art und Weise kann ich die ganzen Entscheidungs,
die optimalen Wege,
wie ich aus einer Problemsituation herauskomme,
die kann ich vorkompilieren
Und dann sollte sich natürlich der Problemraum nicht mehr dramatisch ändern,
damit ich eben tatsächlich das einmal vorkompiliere und dann sehr oft benutzen kann.
Das ist also die Idee, die da dahinter liegt,
dass ich einmal vorausberechne, was eigentlich die optimalen Varianten,
die optimalen Pfade in diesem Suchraum sind. Ja, gut,
die Probleme, das gilt jetzt wieder für die allgemeinen Grafen,
dass eben Zeit- und Platzbedarf, LDA in der Größe des Suchgrafen sind,
aber der Suchgrafen im allgemeinen Fall eben exponentiell anwächswachsen kann und ich deshalb ein Effizienzproblem habe.
Aber wie gesagt, die Kunst besteht immer darin,
zu identifizieren, ob man nicht einen Spezialfall hat,
wo ich durch Multiple-Puff-Pooning, also durch Rekombination von Pfaden,
das exponentielle Wachstum des Suchraums verhindern kann.
Und ja, das ist dieses Abschätzen dieser verbleibenden Kosten,
das muss wieder in breiten Suche passieren und dann haben wir eben auch wieder ein Platzproblem.
Ja, und wann immer ich unterschiedliche Ziele im Suchraum habe,
dann muss ich diese Distanzfunktion natürlich für jedes Ziel individuell berechnen,
die kann ich nicht einfach übertragen,
weil jeder Zielzustand natürlich an einer anderen Stelle im Suchraum liegt und der Weg dorthin unterschiedlichen Aufwand erfordert.
Also wenn wir zusammenfassen,
was wir jetzt unter Übersuche alles hatten über die letzten drei Wochen,
dann brauchen wir in vielen Fällen Suchverfahren,
um optimale Lösungen zu finden und das insbesondere für kombinatorische Probleme.
Also dort, wo ich aus Einzelbausteinen komplexe Lösungen zusammensetzen kann,
also bei der Wegsuche beispielsweise, ich habe Einzelbausteine,
das sind die einzelnen Etappen und daraus muss ich mir optimalen
Pfad zusammensetzen oder Planungsoperatoren, welche Handlungen sollte ich machen.
Da sind eben auch elementare Handlungen, die zu komplexen Problemen zusammengesetzt werden können.
Also in solchen Fällen ist Suche eigentlich fast unverzichtbar.
Ich sage, ausdrücke ich fast. Wann immer wir es mit Sequenzen zu tun haben,
egal ob das Wörter oder Gensequenzen oder Pläne sind,
wann immer wir es mit Bäumen zu tun haben,
also strukturelle Beschreibungen von komplexen Objekten oder wenn wir es mit
Grafen zu tun haben,
dass für all diese Anwendungsgebiete ist das von Interesse
Die Frage ist natürlich, können wir,
und das ist lange Zeit eine Annahme gewesen, dass suche,
so etwas ist, was äquivalent ist, zur Intelligenz?
Oder sagen wir es mal andersrum, man hat versucht,
über lange Zeit hinweg das Problem der künstlichen Intelligenz damit anzugehen
oder der Versuch des Nachbaus von Intelligenz damit zu lösen,
dass man Suchverfahren angewendet hat.
Und da ist die Frage, ist das tatsächlich eine sinnvolle Annahme?
Oder sind wir da eigentlich völlig auf dem Holzweg?
Und in vielen Fällen ist es nämlich tatsächlich so,
dass das Vermeiden von Suche ein Zeichen von Intelligenz
ist und nicht das Durchführen einer Suche
Das Durchführen von einer Suche kann Zeichen für mangelnde Intelligenz oder Stubbilität sein,
dass mir nichts anderes übrig bleibt, als hier irgendwie systematisch
einen Raum abzusuchen, weil ich es nicht besser kann.
Und die Frage ist, wie kann man Suche vermeiden? Und eine,
eine heutzutage sehr populäre Technik ist es eben,
Bewertungsfunktionen zu lernen, das ist Machine Learning,
das ist der Kern von Machine Learning,
dass ich Bewertungsfunktionen lerne,
die es mir erlauben,
ohne zu suchen,
sofort optimale Entscheidungen zu treffen
Das klappt natürlich nicht, das klappt immer nur approximativ.
Und das klappt umso besser, je mehr Beispielfälle ich gesehen habe.
Deshalb brauchen diese Verfahren üblicherweise nicht nur viele Daten, sondern
extrem viele Daten. Und je mehr Daten sie gesehen haben,
umso besser können sie Rezepte daraus destillieren,
wie ich mich in bestimmten Situationen zu verhalten habe.
Das ist eine der Möglichkeiten. Die andere,
wir werden gleich noch eine weitere Möglichkeit anfangen.
Also hier sind eine ganze Reihe aufgeführt.
Ich kann versuchen, bessere Merkmalsrepräsentationen zu finden.
Und das kann ich
auch durch Lernen machen
Ist heutzutage ein heißes Thema,
wie lerne ich eigentlich optimale Repräsentationen für Erscheinungen der Realität?
Also wie repräsentiere ich Wörter im Computer? Wie repräsentiere ich
visuelle visuelle Effekte im Computer? Ich kann versuchen,
eine bessere Kostenfunktion zu lernen, die es mir ermöglicht,
unsinnige Suchentscheidungen zu vermeiden. Oder ich kann eine bessere Heuristik versuchen,
also eine bessere Restkostenabschätzung zu lernen. Und eine Möglichkeit,
die wir die bisher eigentlich eine geringe Rolle spielt,
weil du keiner weißt, wie man dieses Problem in den Griff bekommt,
ist, dass man die Repräsentationsebene wechseln muss.
Dass man das Problem einfach anders darstellen muss,
um es besser lösen zu können. Und das ist tatsächlich
bis heutzutage immer noch der Intelligenz des Systementwicklers überlassen.
Das kann maschinell bisher noch nicht unterstützt werden, um zu illustrieren,
was ich damit meine, ist hier ein berühmtes Problem aufgeführt.
Ich habe ein Schachbrett, das ist alles,
also acht mal acht Felder hier,
64 Felder,
und ich habe Dominosteine
Kann ich mit solchen Dominosteinen dieses Feld vollständig belegen?
Parkettieren heißt das üblicherweise. Ja, also ich habe genügend solche Dominosteine,
kann ich das Feld so belegen, dass keine Lücken bleiben?
Ja. Ja, klar. Das sollte einleuchtend sein,
ja, die Lösung ist trivial. Ich lege immer vier
solche Steine nebeneinander, achtmal übereinander und das Feld ist zugehört.
Jetzt nehme ich zwei Felder weg. Kann ich das Feld
immer noch lückenlos belegen? Nein. Warum nicht?
Ich kenne das Beispiel, wenn man sich vorstellt,
der linke Platz. Dann warten Sie mal einen Augenblick,
wer kennt es
noch nicht
Okay. Gut, dann erklären Sie mal.
Wenn man sich beim Domino-Stein jetzt zum Beispiel vorstellen würde,
oder nehmen wir das als Schaffplatt an,
das ist ein weißes und die weiße und schwarze Felder.
Das sind die beiden in den Ecken. Ja, genau
. Auf jeden Fall beide weiß. Ja. Und ein
Domino-Stein belegt immer genau ein weißes und ein schwarzes Feld.
Ja. Und weil eben zwei weiße Felder jetzt entfernt wurden,
ist es nicht möglich. Genau. Ja. Also das
kann man, egal wie man den Domino-Stein drauflegt,
das benachbarte Feld hat immer die Gegensätzefarbe,
da kommt man nicht raus.
Und jetzt muss ich eben zwei weiße Felder auf die Art und Weise besorgtieren.
Das heißt, ich habe zwei schwarze Felder mehr als weiße
Felder und dann geht das Verhältnis zwischen Nachbarfeldern
nicht mehr auf
Ich habe die Repräsentationsebene gewechselt und versuche jetzt nicht
durch Probieren und Drauflegen von Dominosteinen das Problem zu lösen.
Das wäre ja eine Alternative. Ja,
ich beschreibe alle Varianten, die es gibt,
Dominosteine hier drauf zu platzieren und durchmustere den Suchraum und um im Endeffekt festzustellen,
nach exponentiellem Aufwand, wir kennen das alle,
es gibt keine Lösung für das Problem.
Und man sollte beachten, das hat bereits eine erachtliche Tiefe,
das Suchproblem. Also wenn ich 64 Felder habe,
hier sind es dann noch 62,
habe ich eine Suchraumtiefe von 31. Das heißt,
ich habe irgendwo mal N hoch 31 Varianten zu betrachten.
Das sind gigantisch viele für so
ein simples Problem
Wenn ich das ganze Problem anders darstelle, wird plötzlich offensichtlich,
dass es gar keine Lösung geben kann.
Das ist Vermeiden von Suche durch eine andere Repräsentation einer Problemstellung.
Also es ist relativ bekannt, das sieht man schon hier,
lass es immerhin schon vor langer Zeit mal irgendwo publiziert worden.
Also suche es nicht immer ein Zeichen von Intelligenz,
sondern eher das Vermeiden von Suche,
das ist tatsächlich das in vielen Fällen die bessere Variante.
So, und wir gucken uns jetzt einen Ansatz an,
der zumindest den Anteil an Suche bei der Lösung kombinatorischer Probleme,
wir bleiben also dabei,
Repräsentationen geben wir vor und im Rahmen dieser Repräsentation soll eine irgendwie geartete,
ob möglicherweise optimale Lösung gefunden werden.
Das ist nach wie vor der Denkrahmen, den wir haben.
Aber selbst wenn wir in diesem Denkrahmen bleiben, wie können wir
den Anteil der Suche an der Problemlösung möglichst zurückdrängen? Und das läuft auf einen Ansatz hinaus,
der in der Literatur als Constraint Certisfaction oder Constraint Propagation bezeichnet wird,
dass sich ein Problem darstelle,
als eine Menge von Variablen und eine Menge von Constraints,
die über diesen oder Beschränkungen, Einschränkungen,
die ich über diesen Variablen für ihre Belegungen formuliere,
sodass der Suchraum dadurch reduziert wird,
dass bestimmte vaiablen Belegungen überhaupt gar nicht mehr erst probiert werden müssen,
weil sie bereits gegen irgendwelche Konstruenz verstoßen haben.
Und wir müssen gucken, wie weit kommt man mit solch einer Technik?
Was kann man damit noch lösen? Und wo sind dann
die Grenzen tatsächlich erreicht, wo man wieder auf Suche zurückgeworfen ist?
Und wir werden uns dann insbesondere angucken, welche Suchverfahren in
diesem Falle tatsächlich noch praktikabel sind oder sinnvollerweise anzuwenden sind.
So, also wir haben ein Konstruenz-Citics-Fiction-Problem immer durch eine Menge von Variablen,
eine endliche Menge von Variablen, das ist wichtig.
Und jede dieser Variablen hat eine Domäne und diese Domäne
enthält alle möglichen Werte,
die die Variable annehmen kann
Und wir gucken uns erstmal nur den Fall an,
dass es nur sogenannte harte Konstraints gibt, harte Konstraints heißt,
das sind Bedingungen, die unbedingt erfüllt sein müssen.
Auf jeden Fall. Wir werden das Problem dann später aufweichen,
dass wir sagen, es gibt auch Konstraints,
die sollten nach Möglichkeit erfüllt sein,
aber wenn es gar nicht anders geht, dann können sie auch verletzt sein.
Die werden wir dann im Gegensatz dazu eben als weiche Konstruenz bezeichnen.
Gut, also wir nehmen eine Teilmenge dieser Variablen hier,
beispielsweise diese beiden oder auch nur eine einzelne oder drei oder fünf,
das ist uns überlassen.
Und wir formulieren dann irgendeine Bedingung, die diese vaiablen
Belegungen erfüllen müssen
Ja, in Form einer mathematischen Formel, einer logischen Formel,
je nachdem, was für Datentypen wir haben.
Also irgendwie müssen wir immer spezifizieren, was sind zulässige Kombinationen von Werten, Wertebelegungen für diese Variablen.
Und eine Lösung für dieses Problem ist dann eben eine Vollständige bei Jablenbelegung. Und der Vorteil,
den wir hier haben, den hat man ganz zu Anfang,
glaube ich, mal angesprochen, ist,
dass ich jetzt nicht mehr die Notwendigkeit habe,
alle möglichen Systemzustände aufzuzählen, sondern dass ich,
dass der Systemzustand sich aus der Kombination dieser möglichen vajablen Belegung ergibt,
Und auf die Art und Weise kann ich eben,
wenn ich durch konstremen Verletzungen bereits bestimmte Kombinationen ausgeschlossen habe,
den Suchraum drastisch verkleinern.
Das ist das Mindeste, was wir erreichen wollen.
Der Suchraum soll kleiner werden. Auch wenn wir feststellen,
dass wir die Suche damit nicht ganz loswerden,
aber in vielen Fällen kommen wir ziemlich dicht dran.
So, also hier ein abstraktes Beispiel erstmal. Wir nehmen an,
wir haben diese fünf Variablen und das soll eben ein Scheduling-Problem sein.
Wir haben irgendwelche Jobs zu erledigen auf einer Maschine oder wo
auch immer. Und das sollen die Startzeiten für die Bearbeitung
Und die Nomänen sind also für die jeweils Zeitpunkte, zu denen
das passieren kann. Da gibt es irgendeinen diskreten Wertevorrat.
Hier auch endlich gewählt. Das muss nicht unbedingt sein,
aber für die Illustrationszwecke ist das immer nützlich,
wenn man hier tatsächlich endliche Domänen angibt.
Und jetzt kann man Konstraints formulieren, die sind hier alle konjunktiv miteinander verknüpft.
Das heißt, im Endeffekt ist eine Lösung für dieses Scheduling-Problem
eine Wertebelegung, die alle diese Einzelbedingungen hier erfüllen.
Und die sinnvolle Verwendungsweise solcher Konstraints besteht eben genau darin,
dass man sie möglichst klein, feingranular macht.
Dass sie also
möglichst wenig Variablen betreffen
Und dafür lieber mehr Konstraints auswertet als zu komplexe Konstraints.
Warum das so ist, das werden wir wahrscheinlich gleich noch sehen.
Also erste Bedingung ist B, soll niemals Reihe sein.
Aus irgendwelchen Gründen darf B nicht zum Zeitpunkt 3 anfangen.
Keine Himmel, vielleicht der Mond steht dann falsch oder sowas.
Das heißt, wir können aufgrund dieses Konstraints,
und das ist ein sogenanntes einstelliges, konstruent,
weil es nur eine einzige Variable betrifft,
können wir bereits aus dieser Domäne hier den Wert 3 einfach ersatzlos streichen.
Eine gültige Lösung mit der vaiablen Belegung B,
gleich 3 wird es nicht geben,
weil dieses Konstraint sie verbietet
Genau das Gleiche können wir für zehn machen.
Wir können jetzt also hier aus der Domäne die zwei rausstreichen,
weil sie durch dieses Konzern verboten wird.
Dann fordern wir das A. Ungleich B. sein muss.
Können wir da irgendetwas herausstreichen von den Werten?
Mhm. Weil wir da nicht rein. Die drei,
bei B haben wir ja schon rausgeschrieben.
Warum können wir die bei A? Ist gleich.
Das war ins Unreide gesprochen, ja?
Ja, okay
Leider Gottes, das ist ein sehr schwaches Konstremd,
erlaubt uns in diesem Falle nichts wegzustreichen. Denn egal,
wenn wir für B, die 1 wählen,
bleiben hier noch die 2, 3, 4 übrig,
wenn wir die 2 wählen, bleibt noch die 1,
3, 4 übrig, wenn wir die 4 wählen,
bleibt die 1, 2,
3 übrig.
Das heißt also, wir können aufgrund der Tatsache,
dass es dann die drei hier nicht mehr gibt, hier nichts entfernen.
Das sind immer noch legale Varianten, die wir haben.
Das gilt hier natürlich genau in der gleichen Atmung.
Weise, nein, nicht, dass ich mich jetzt überhebe.
Also wir haben hier die drei nicht mehr und hier die
2 nicht mehr. Mit der 1 ist noch die 3
und die 4 kompatibel
Mit der 2 ist noch die 1, 3, 4 kompatibel.
Gut, damit haben wir es. Wir können also
auch aufgrund dieses Konstants erst mal nichts weiter hier entfernen.
Cäsar, kleiner als D sein,
das erlaubt uns wieder etwas zu entfernen, was nämlich?
Die 4 von 10. Ja, und noch was?
Die 1 von dem D. Genau, also Cäsar, kleiner sein als D.
Die 4 hier ist nicht kleiner als diese 4 hier,
kann also entfernt werden und die 1 muss größer sein als jede Zahl hier.
Das geht nicht, also können wir die 1 hier entfernen
Ja, also diese Größenvergleiche erlauben uns wenigstens die Extremwerte oder
wenigstens einige Extremwerte aussehen, Domänen zu entfernen. A,
soll gleich D sein, das wieder bewirkt etwas,
denn wir haben hier soeben die Eins gestrichen, das heißt,
wir können die Einsätze ja auch aus A entfernen.
Und so weiter und so fort. Die Idee ist erst mal klar,
wir haben, idealerweise stellt man sich das immer als so ein Werteeliminationsverfahren vor.
Wir haben die Domänen initial gegeben, initial,
können sie alle möglichen Werte annehmen.
Wir wenden konstrient nach konstrient an und entfernen auf
die Art und Weise
mögliche Wertebelegungen
Die Frage ist nur, wie gut klappt das?
Also insbesondere, wie weit kommen wir damit? Sind wir
immer in der Lage, eine eindeutige Lösung zu ermitteln?
Kriegen wir möglicherweise eine Menge von Lösungen heraus oder kriegen wir auch gar keine Lösung heraus?
Das sind die drei Fälle, die uns im Weiteren interessieren werden. Entweder das Problem ist überkonstruent,
es gibt keine Lösung, die alle Konstruenz gleichzeitig erfüllt,
dann ist die Lösungsmenge leer oder wir haben alle Werte aus diesen Domänen herausgestrichen oder aber wir bleiben genau mit einer Lösung übrig,
dann steht in jeder Domäne noch exakt eine Zahl übrig,
eine Zahl drin und die Alternative ist dann,
wir haben noch mehrere Lösungen, in den Domänen vorhanden,
dann ist die Frage,
wie gehen wir weiter damit um?
Das verschieben wir mal auf später. Das ist nämlich eine
wichtige Einsicht, zu der wir kommen müssen. So,
die Idee ist jetzt immer, wir müssen ein Problem so darstellen,
dass wir konstruieren zu defekten Techniken dafür anwenden können.
Und das heißt, es wird immer dargestellt,
als endliche Menge von Variablen plus ihre Domänen plus die Konstruenz über den Wertebelegung.
Und die Frage ist jetzt eben,
was gibt es noch für mögliche Anwendungen,
wo wir ein Problem auf die Art und Weise
darstellen können
Also wir hatten hier eben so etwas wie ein Scheduling-Problem.
Wir wollen Arbeitsabläufe organisieren und dann ist eben klar,
zuerst muss die Elektrik fertig sein, ehe der Maler kommen kann.
Sondern das ist so eine einfache Zeitrelation, die man aufschreiben kann.
Und vielleicht ist dieses B und Gleich 3 der Termin,
wo der Klempten auf gar keinen Fall kommen kann.
Das sind so typische Beschränkungen der Welt in Produktionsplanungskontexten.
Haben Sie noch Ideen,
wo man die gleiche Struktur vajablen plus Beschränkungen für Ihre Werte,
für praktische Probleme anwenden kann
Einfach mal überlegen, wo das noch ganz gut geht.
Also machen wir es jetzt auch mal einfach. Das ist
ein Scheduling-Problem. Wir wollen Ereignisse auf der Zeitachse fixieren.
Gibt es andere Scheduling-Probleme, die ähnlich gelagert sind?
Also wo macht man überall noch Zeitplanung
Stellen passiert sowas. Oder möglicherweise keine Zeitplanung und jetzt können
wir das Problem modifizieren. Können wir irgendetwas anderes planen,
was dann auch darauf zurückzuführen ist? Ja, Ideen. Naja,
zum Beispiel, wie wir unseren Bachelor durchplanen,
dann muss das Spiel so und so viele Leistungspunkte haben,
wo wir die Bachelorarbeit anwenden.
Ja, wir müssen ein Seminar vorher machen.
Man sollte SE1, für SE2 machen und solche Angenehmheiten.
Was wären die Variablen? Ja, wir müssen es immer
auf dieses Schema runterbrechen. Was sind die Variablen? Was
sind die Werte? Was sind die Konstretens? Naja,
die Variablen, so wie Starting Times, die du da schläfst,
sein. Na gut, das ist ja, ja,
Starting Times werden die Semester, denn die Lehrveranstaltungen sind ja per Semester getaktet, ja.
Gut. Und dann haben sie sowas wie zeitliche Abläufe,
also was weiß ich, SE1 vor SE2 beispielsweise, ja.
Okay, was hätten wir dann noch an Konstrainz?
So zeitliche Präferenz, Präzedenzbeziehungen, die Hartner,
also dass die Abfolge in einer bestimmten Reihenfolge ist, ja.
Weil sie dann vielleicht mal, gerade Semester war gerade mit dir, Kurzsommer.
Das ist der, klar, das ist das Lehrveranstaltungsangebot,
nicht jede Lehrveranstaltung steht immer zur Verfügung oder bei uns sogar keiner, ja?
Ja, für manche Veranstaltungen muss man halt auch insgesamt
so und so viele Veranstaltungen schon suchen und erfolgreich abgeschlossen.
Ja, das ist besonders trickreich,
weil es nämlich genau dem widerspricht, was ich vorhin erwähnt habe,
dass man möglichst die Bedingungen immer lokal halten sollte.
Das ist ein ziemlich globales Konstraint,
wo ich eben jetzt über viele einzelne Lehrveranstaltungen aufsummieren muss,
damit diese Mindestsumme erreicht ist.
Das ist richtig, haben wir noch Sachen, die zu berücksichtigen sind?
Und dann wird es tatsächlich kompliziert. Also wir gucken jetzt
ja nur auf der Semesterebene auf das ganze Problem.
Jetzt müssen wir ja auch gucken,
kriege ich daraus
einen Wochenplan zustande
Die Dinge sind ja zeitlich in der Woche
auch irgendwo festgelegt und dann wird es tatsächlich sehr kompliziert.
Das ist also, glaube ich, schon da eine ziemlich
harte Nuss, wenn man das durchformalisieren will.
Etwas einfacher, obwohl auch immer noch hinreichend komplex,
ist es in der Schule.
Wenn ich also den Stundenplan für eine Schule aufstellen will,
wie würde ich
die Variablen definieren
Also was würden sie als zwei Jablen nehmen?
Da ist sie die Lage ein bisschen einfach. Ja,
ich will einen Stundenplan aufstellen, der für ein Halbjahr gültig sein soll.
Ich habe Lehrer, ich habe Klassenräume, ich habe Zeitslots,
ich habe Klassen und Fächer, die ich zu berücksichtigen habe.
Was davon mache ich zur Vajablen? Also prinzipiell müssen wir
ja fast alles davon als Variablen definieren,
weil... Nee, ein bisschen was müssen Werte bleiben.
Es ist immer die Frage, ja, das eine machen wir,
Vajablen, wo die Bedeutung der Vajable festliegt,
also so etwas wie, na,
das haben wir vorhin nicht diskutiert,
insofern ist das schlecht
Also hier wären es sozusagen die einzelnen Aktivitäten, die ich mache.
Die sind hier als Vayablen vereinbart. Und die Werte sind dann
die Zeitpunkte. Wenn wir jetzt den Stundenplan wieder nehmen,
also alles zu Vayablen zu machen, geht nicht.
Irgendwelche Werte muss ich ja zuweisen können. Zum Schluss will ich
eine Wertebelegung für Vayablen haben und das soll die Lösung für mein Stundenpatenproblem sein.
Ja. Die Werte sind die Fächer und jetzt wert
ist man die Zeit, nicht die Zeitslast.
Das führt zum Schluss dazu, dass ich sage,
in der ersten stündige Chemie, in der zweiten Stunde Mathematik,
in der dritten Stunde Physik,
ist das ein Stundenplan für die Schule
Das war meine Klasse. Naja, da fehlen noch die
Lehrer. Ja, ja, richtig. Wie kriege ich
die unter? Bitte? Ja, ja, ja.
Naja, was kann ich machen? Irgendwie. Irgendwie muss ich
die Lehrer mit ins Spiel bringen. Die Klassen muss ich
mit ins Spiel bringen. Ja, nur zu.
Ach so, da haben wir noch Ideen, ja.
Ein Lehrer darf nie frei. Das ist ein Konstrunt.
Das ist ein Konstrunt. Wir sind noch bei der Aufgabe
davor. Was sind die Variablen? Erstmal müssen wir sagen,
was sie Variablen sind, dann können wir anfangen, Konstraint zu formulieren.
Also mal eins nach dem anderen, ja.
Welcher Lehrer, ich kriege auch
gar nichts
Dann hätten wir eine Matrix-Lehrer, mal Fächer. Und was
sollen die Werte sein? Ja, das ist wirklich der
eine Kaffee. Ja, dann weiß ich aber noch nicht,
was Klasse 5b in der ersten Stunde heute hat.
Ja, ja, ja, aha. Also, wir
müssen noch einen Punkt bringen, ja. Ich denke mal,
wir sollten die Sideslot als Variablen nehmen, weil man kann dann,
man kann jedem Lehrer den Sideslot zuweisen und dann das Fach im Sideslot.
Und die Schüler und die Klasse in allem bestimmten Sideslot
haben wir einen Lehrer, eine Klasse,
die Fach und Raum
Aber ich kriege zum Schluss eine Wertebelegung heraus.
Die sagt dann im Zeitpunkt, die Zeitslots waren die Basis.
Also Montagfrüh um 8 Uhr findet Chemie mit Herrn Meyer und der Klasse 3B statt.
Im Raum sei. Ja, aber was machen die anderen Klassen?
Was machen die anderen Lehrer? Ja, ja,
es ist so ganz, ganz simpel ist es nicht.
Also das ist genau die Frage, wie kriegen wir dieses Casting hin?
Also wie definieren wir jetzt unsere formale Basis,
dass wir es wirklich als Constraint-Satisfaction-Problem verstehen können
Und ein praktikables System dafür entwickeln. Also by the way,
das ist nach wie vor eine der trickreichsten Aufgabenstellungen im Schulmanagement,
also in der aktuellen Verwaltung der Schule.
Einen solchen Stundenplan aufzustellen, der einigermaßen allen Randbedingungen gerecht wird.
Und die Einzelpraktikable Lösung, die ich bisher kenne, ist,
wir nehmen den Stundenplan vom letzten Jahr und modifizieren ihn minimal,
um nicht zu riskieren, dass wir irgendwie Katastrophen einbauen.
Das ist übrigens überall so. Also was glauben Sie wohl,
wie die Klausurpläne für diese Universität zustande kommen oder die Hörsaalbelegungspläne
Das ist einfach das Recht der Gewohnheit. Die Physik war zu diesem Zeitpunkt
schon in den letzten 15 Jahren immer in diesem Hörsaal.
Sie wird es auch weiterbleiben. Denn jede Änderung,
die Physik irgendwo anders hin zu bewegen,
ruft sofort wieder Folgewirkung hervor, dass irgendwas anderes kneipt.
Also es ist tatsächlich ein schwieriges Problem.
Die Basis ist offen oder das, was wir überlegen müssen,
ist, offensichtlich kommen wir mit einem Einzel,
mit einem einzelnen Wert als Bedeutung der Vagable nicht aus.
Also wenn wir uns vorstellen,
wir haben irgendwie eine Infrastruktur und die Infrastruktur
heißt Schule
Und die Schule besteht dann eben aus Klassenräumen. Das ist
die eine Dimension. Davon gibt es vielleicht 50 oder 60.
Und in der anderen Dimension haben wir die Zeiten.
Also Tee. Und jetzt können wir sagen,
was passiert eigentlich mit diesem Klassenraum zu diesem Zeitpunkt?
Und was passiert mit diesem Klassenraum zu diesem Zeitpunkt?
Wir haben also eine Matrix von Räumen, Mahlzeiten.
Das wäre eine Basis. Und jetzt können wir denen zuweisen,
dass wir sagen, in diesem Raum zu dieser Zeit,
Klasse 3b,
Herr Meier,
macht Sport
Und jetzt ist die ganze Kunst zu sagen,
wer ist für Constraints, müssen wir haben,
was die zulässigen Wertebelegungen für Montagfrüh um 8 Uhr definiert.
Ihr könnt gleich vorwegnehmen, das ist nicht die einzige Variante,
wir können es genauso gut machen,
dass wir die Lehrer als Ressource bezeichnen oder betrachten.
Indem wir sagen, die Schule hat 30 Lehrer zur Verfügung,
die bestimmte zu bestimmten Zeiten zur Verfügung stehen.
Dann wäre das eben eine Lehrer-Mahlzeit-Matrix. Wir können immer verschiedene
Kombinationen hier wählen, alle sind im Prinzip möglich,
aber es muss eine Kombination aus diesen Informationen sein.
Billiger geht es nicht
Ist, sonst kriege ich das Problem nicht in die Form.
So, also wir nehmen mal an,
wir nehmen Räume und Zeiten, als die Variablen,
also immer das Kreuzprodukt aus Raum und Zeit.
Und jetzt müssen wir Konstraints formulieren. Was wären mögliche Konstraints? Ja,
ganz neu in zwei Spaltenzeiten, also eines der Zeiten.
Ja, er kann nicht in zwei, genau,
er kann nicht in zwei Räumen zur gleichen Zeit auftauchen.
Also zu jedem Zeitpunkt kann er nur in einem Raum
sein und ja,
das ist eigentlich
die Beschränkung
Gilt das nur für die Lehrer? Das gilt für die
Klassen genauso. Also auch die Klassen können nur zu einem
Zeitpunkt in einem Fach, in einem Raum unterrichtet werden.
Anders geht es nicht. Also das wären mögliche Konstrukts.
Was haben wir noch? Ja, wir sind jetzt nicht
frei. Beliebt schon durch Antrag. Ja,
wenn es sowas gibt, aber man sollte eigentlich annehmen,
dass die Schulräume oder die Klassenräume dafür da sind,
dass man dort Unterricht drin macht.
Könnte natürlich irgendwie was Exotisches sein, dass die
schon jemand mit dem Schlag belegt hat.
Aber ich glaube, das ist eher
der Ausnahmefall
Wir können aber trotzdem nichts freiklassen, um gleich eine Klassenkorb
zu machen. Ja genau, das hatten wir eben.
Also sowohl für Lehrer als auch für Klassen gilt das.
Zwei zur gleichen Zeit an unterschiedlichen Plätzen, das funktioniert nicht.
Oder auch zwei Klassen, also sie haben recht,
den Fall hat man noch nicht.
Zwei Klassen in einem Raum geht natürlich genauso wenig.
Genauso wie zwei unterschiedliche Fächer in einem Raum nicht gehen oder
zwei unterschiedliche Lehrer in einem Raum soll eigentlich auch nicht gut gehen.
Das sind auch Dinge, die man ausschließen muss.
Was haben wir noch? Ja, nicht alle Lehrer können
alle Fächer arbeiten
Na klar, ja, die haben spezielle Richtungen, ja,
was sie machen können und was sie auf gar keinen Fall machen können.
Ja, wir haben noch mehr. Nicht jeder,
nicht jedes Fach kann nicht im Raum unterrechnet werden. Klar,
spezielle Räume für Chemie, für Sport, für,
was weiß ich was, Kunsterziehung, Musik oder sowas,
da gibt es Spezialräume, der Unterricht müsste eigentlich immer dort stattfinden,
aber möglicherweise ist es auch nur eine Präferenz.
Zur Not geht es vielleicht auch anders, ja.
Ich lasse da jedes Fach und jedes Ja,
das ist ja auch immer, wahrscheinlich auch fast die Male oder zwei.
Ja, die Vorgaben des Lehrplans sozusagen, oder des Fächerkanons,
ja, wie viele Deutschstunden brauche ich,
wie viele Mathematikstunden brauche ich, wie viele Physikstunden brauche ich.
Das ist ja irgendwo festgehalten. Und auch da ist es dann wieder so,
dass ich eben ein globales Konstrent, also nicht global ist,
aber ein relativ großes Konstrent habe, dass ich eben sicherstelle,
dass in diesem Plan für die Klasse 5C tatsächlich drei Deutschstunden über die Woche verteilt sind.
Das muss ich irgendwie hinbekommen, ja. Drei,
drei Stunden, ja, am besten noch beim gleichen Lehrer.
Ja, natürlich, ja, richtig, ja.
Das wäre natürlich auch noch spannend, wenn der Lehrer von
Stunde zu Stunde wechselt.
Das sorgt für viel Abwechslung
Gut, das sind also mehr oder weniger
alles harte Bedingungen, die man hackt, erfüllen sollte.
Dann kann man natürlich diskutieren, das gibt es Präferenzen.
Ich hatte schon angesprochen, natürlich sollte der Musikunterricht im Musikraum sein,
aber wenn es überhaupt nicht geht,
dann kann er eben auch nur woanders stattfinden.
Mit Sport ist er schon weniger gut möglich. Das heißt,
es gibt Bedingungen, die eher erfüllt sein sollten als andere.
Da kann ich dann noch ab, Speicherung machen,
das sind dann diese Weichenkonstruenz, die möglichst erfüllt sein sollten,
aber nicht unbedingt,
was hätten wir an weichen Constraints,
die in so
einen Stundenplan eingehen
Ich die letzte und neue Stunde erst, spätestens eines spätestens von 18 Monaten.
Ja, na klar, die erste Stunde nach 11 Uhr
und die letzte möglichst vor 10 Uhr, ja,
das ist der ideale Stundenplan, ja klar, ja.
Das ist halt zwischendurch eine Klasse, keine Freistunde.
Freistunden sollte man vermeiden, ja. Haben wir noch irgendwas von der,
ich meine, das ist natürlich völlig recht,
was Sie sagen, ja, also bestimmte nullte Stunde beispielsweise,
sollte nach Möglichkeit nicht benutzt werden, nur im Notfalle,
ja, ja, das wäre sowas,
was ich mir alle vollstunden anlassen muss, so umstellt der Abstimmung,
die Leute machen ja auch.
Ja, ja, natürlich, das macht keinen Sinn,
also maximal zwei Stunden hintereinander von der gleichen Art,
Das würde ich fast zum harten konstruent machen. Es hängt
auch ein bisschen ab, einige Fächer haben es gerne,
wenn man eine Doppelstunde zur Verfügung stellt.
Andere haben es nicht gerne. Das ist weder noch von zusätzlichen Randbedingungen abhängig.
Hat noch jemand irgendwelche weichen Bedingungen, die erfüllt sein sollten?
Ja. Alle Tage ungefähr gleich zustoppt glauben. Ja,
natürlich, Ausgeglichenheit, nicht,
dass er einen Tag von früh bis spät belegt ist und
einem anderen ist es nur ein oder zwei Stunden Ausgeglichenheit über die Woche.
Ja, und dann alle möglichen Präferenzen irgendwelcher Art von Frau Meier
weiß sie, dass sie freitags ungern in die Schule kommt
Kann man versuchen, ihr da keine Stunden zuzuordnen? Ob es klappt,
muss man sehen, aber wenigstens versuchen kann man es. Gut,
und diese ganzen, das können wir jetzt tatsächlich formal aufschreiben,
wir können das alles in dieses Constraint-Sities-Fection-Problem reinwerfen und können jetzt anfangen,
Lösungsvarianten wegzustreichen, die also irgendwelchen Rahmenbedingungen widersprechen.
Das Problem ist eben nur, dass wir solche schönen Dinge,
wo wir sofort auf den ersten Blick etwas rausstreichen können,
diese unären Konstruenz, die haben wir so gut wie gar nicht.
Also wir können an keiner Stelle sagen, Montagfrüh um 8
muss irgendeine Klasse, irgendein bestimmtes Fach bei irgendeinem bestimmten Lehrer haben.
Das ist alles Alles fließend. Ja, wir haben sozusagen
kaum irgendwelche Ankerpunkte, wo wir hart weggestreichen können.
Es ist ein guter Kandidat dafür, dass ich erstmal gar nichts erledigen kann.
Dass ich durch Wegstreichen überhaupt nicht zu irgendwelchen Einschränkungen des U-Raums komme.
Ja, gut, also das ist ein typisches Schedulink-Problem.
Wir wollten ja nochmal uns umgucken,
was gibt es noch so für Dinge,
die wir als Constraint-Sertaction-Problem verstehen können
Das ist das kanonische, schönste Beispiel, ja,
wo man doch überrascht ist, wie schwach man konstraints machen kann,
sodass also tatsächlich Lösungswege nur durch eine einzige vaiablen Belegung führen.
Aber das ist ein klassisches Constraint-Certisfaction-Problem. Wie würden Sie
es formalisieren? Also was sind die Variablen?
Was sind die Werte? Ja, und die Konstruenz,
einem Vier-Lektor von
so einem Fang
Dreimal drei. Ja. Das war doppelt vorkommen.
Genau, ja. Das ist auch schon wieder interessant,
weil das eine Bedingung ist, die neuen Variablen immer umfasst.
Also meine Leitlinie, die ich vorher gesagt habe,
möglichst kleine konstruent zu machen, funktioniert ja nicht.
Das macht die Schwierigkeit von Sudoku aus, sonst wäre es uninteressant.
Wenn ich alles lokal überprüfen könnte, dann macht es sich.
Aber wir haben so etwas zur Verfügung hier. Gerade umgekehrt,
dem Beispiel gibt es ja nicht,
wir können also sagen, fällt sowieso,
muss eine Vier sein, denn das sind die Zahlen,
die schon drinstehen von Anfang an
Und dann sieht man auch, je mehr solche
eindeutigen Festlegungen existieren, umso einfacher wird das Sudoku.
Je weniger Zahlen vorgegeben sind, umso schwieriger wird es,
das zu lösen. Und es gibt tatsächlich Beweise,
wie viele Zahlen man minimal haben muss,
damit man überhaupt zu einer eindeutigen Lösung kommen kann.
Also wenn man zu wenig Zahlen vorgibt,
dann bleibt das ganze Problem unterbestimmt und dann endet man mit einer Vielzahl von Lösungen,
dann macht Sudoku auch keinen Spaß mehr.
Es ist schon schlimm genug, wenn es noch zwei Lösungen zum Schluss gibt.
Da ist der Sudoku-Löser schon sehr ungehalten darüber. Aber wenn es,
was weiß ich, noch tausende oder Millionen von Lösungen gibt,
dann ist es natürlich ganz, ganz schlecht.
Dann kann man eben sofort ein leeres Udoku-Feld vor die Asis
setzen und sagen, ja, fügen mal ein paar Zahlen ein.
Mach dir einen schönen Tag da. Gut, also Sudoku
ist so ein Beispiel. Dafür gibt es weiche Konstruenz im Dudoku.
Also das Erste würde ich sagen, Der Suchraum ist gegeben
die Beschränkung, die ich habe.
Wenn ich das wirklich als Suche realisiere,
hier geht es uns ja darum, wie können wir die Suche vermeiden?
Können wir sie möglicherweise ganz vermeiden? Aber die Bedingungen sind
immer hart. Also dass die Zahlen alle unterschiedlich sein müssen,
dass es eine harte Bedingung,
dass die vorgegebenen Ziffern eingehalten werden müssen,
ist eine harte Bedingung
Da können wir eigentlich nicht dran drehen. Das sind alles
harte Konstruenz. Und das unterscheidet eben auch solche künstlichen Probleme,
wie so Doku ja eins ist, von eher Realweltproblemen wie der Schul-Stundenplan,
wo es dann doch eine ganze Reihe von Rahmenbedingungen gibt,
die eher präferenziellen Charakter haben.
Also, wenn wir bei Scheduling bleiben, ein Problem,
was mir immer noch, was wir auch mal benutzt haben,
um Eignungstest für das Informatikstudium daraus zu generieren,
ist,
das Tischplatzierungsproblem
Ja, ich habe eine Geburtstagsparty zu bestreiten und ich muss
bestimmte Gäste einladen und am Tisch platzieren.
Und es gibt in der Verwandtschaft bestimmte Personenkonstellationen, die gut zusammenpassen als Nachbarn,
weil sie sich vermutlich die ganze Zeit über köstlich amüsieren werden.
Und es gibt Kombinationen, die man auf gar keinen Fall als Nachbarn platzieren sollte.
Da gibt es bestimmte Bedingungen. Der Opa,
der sich immer, der mit seinen Kriegsabenteuern immer kommt,
der ist völlig unverträglich mit Tante Anna,
die das überhaupt nicht leiden kann und so weiter und so
Das ist auch ein typisches Konzept, Satisfaction-Problem. Ich habe,
die Variablen sind die Stühle, die ich zu besetzen habe.
Die Werte sind die Personen, die ich auf die Stühle raufsetze.
Die Lösung ist eine Zuordnung, jeweils einer Person zu einem Stuhl.
Und es müssen alle Verträglichkeitsbedingungen irgendwie erfüllt sein, die natürlich auch präferenziellen Charakter haben.
Also bestimmte Dinge, kann man nur sagen,
das sollte erfüllt sein, aber wenn es nicht geht,
dann Herrgott, dann muss es eben auch so funktionieren.
Ich hatte das damals gemacht,
dass wir böshafterweise einen Konstrent aufgenommen hatten, was sagte,
es sollen immer keine Personen gleichen Geschlechts nebeneinander sitzen,
sondern immer Männlein, Weiblein,
Männlein oder Beiblein,
aber wir hatten eine ungerade Anzahl von Teilnehmern
Das ist ein typisches Konstruenz, das ist natürlich das technische Problem,
was überbestimmt ist, wo ich eine Lösung, die diese Bedingung erfüllt,
überhaupt nicht geben, wo es sie nicht geben kann.
Das ist ähnlich wie das Schachbrett, was wir vorhin gesehen haben.
Aber dann kommt es eben darauf an,
eine optimale Lösung zu finden, die an irgendeiner Stelle dieses Konsträt verletzt,
dass also dann zwei Herren oder zwei Damen nebeneinander sitzen,
obwohl sie das eigentlich nicht dürfen.
Und wo diese dieses, diese Konstränverletzung dadurch kompensiert wird,
dass eine besonders gute Passfähigkeit auf der anderen Ebene existiert.
Das würde dann eine optimale Lösung definieren
Gut, also es gibt da eine ganze Reihe von Beispielen in der Literatur
ist immer das Problem der Radiofrequenzvergabe als ein Anwendungsbeispiel genannt.
Also wenn sie UKW-Rundfunk haben, dann haben sie
eine bestimmte Anzahl von Kanälen, die zur Verfügung stehen.
Und ein Kanal sollte nicht von zwei dicht beieinander liegenden Rundfunkstationen benutzt werden,
weil die sich insbesondere bei Hochdruckwetterlagen dann gegenseitig beeinflussen und den Empfang stören.
Deshalb muss also immer eine bestimmte Mindestdistanz,
die natürlich auch vom Geografenprogramm viel abhängig ist,
wenn Berge dazwischen sind, dann verschwindet das Problem,
wenn es Flachland ist, dann ist das Problem ziemlich stark.
Also wenn ein und derselbe Kanal belegt wird,
dann muss eine bestimmte Mindestdistanz gewahrt bleiben.
Und da habe ich jetzt eben auch die Variablen,
das sind eigentlich das Kreuzprodukt aus Variablen und Standorten.
Und also Senderstandorten, das Kreuzprodukt aus Kanälen,
Frequenzkanälen und Senderstandorten. Und ich muss jetzt also festlegen,
wie ich die Kanäle vergebe, sodass die gegenseitige Beeinflussung minimal wird.
Das ist auch ein typisches Konstant-Settisfaction-Problem, ein Schönes Constant-Settifiction-Problem,
was jeder von uns kennt, ist, die Benutzungsoberfläche eines Betriebssystems.
Sie wissen ja alle seit 30, 30 Jahren,
arbeiten alle Leute mit Fensterbetriebssystem.
Und auch dort kann man konstruierens formulieren, in dem Augenblick,
wo ich ein neues Fenster aufmache, wo sollte es platziert werden?
Was wären, wäre eine gute Lösung,
was wäre eine schlechte Lösung? Das ist eine schlechte Lösung,
wenn es immer hinter dem aktuellen Fenster ist
Das ist eine ganz, ganz schlechte, ja,
wenn man es überhaupt nicht zu sehen bekommt,
weil es sich irgendwo dahinter versteckt, ja,
dass es, seid ihr dringend vermieden werden,
aber das kriege ich durch eine einfache Heuristik,
natürlich sehr leicht in den Griff.
Die einfache Heuristik heißt, neue Fenster immer obendrauf, ja,
dann sehe ich es ja, wenigstens erstmal, ja.
Ja, wegen zwingend kriegst du weiter rechts und weiter.
Das ist ein Overlap gibt,
sodass das andere Fenster wenigstens noch vorguckt, damit ich,
sagen wir mal, an die Händler da rankomme und es vergrößert,
verschieben kann und so weiter.
Was wäre die bessere Lösung noch
Ja. Naja, zuallererst will man ja schauen,
ob vielleicht auf dem Bildschirm noch Platz ist.
Klar, ja, vorher. Ja,
vorher kann man das ja erstmal da einstellen.
Und ich muss es sagen, über die letzten 20,
30 Jahre hinweg sind Fenstersysteme systematisch schlechter geworden. Das Beste,
was ich kenne, ist von der Firma HP gewesen,
das lief auf den Burgstations, ringt irgendwann Anfang der 90er Jahre.
Das war wirklich perfekt, wenn man da ein neues Fenster
aufgemacht hat, die wurden immer intelligent platziert.
Seitdem ist das eine Katastrophe. Also wenn ich Obuntu sehe,
wo der meine Fenster hinsetzt, das ist unter aller Sau.
Also sorry, aber soll nur als Beispiel
die ein Konstruenz-Centifiction-Probleme sind überall
Also wir können sehr, sehr viele Dinge mitgewissen nachdenken.
Das haben wir bei dem Schulstundenplan gesehen. So umformulieren,
dass wir sie als Construence Sideas Faction-Problem behandeln können.
Und das ist noch der Überblick,
was wir also in den nächsten Veranstaltungen machen werden.
Wir werden also als einfachstes einen Generate- und Testverfahren einsetzen.
Das ist ein Brut-Fonds-Ansatz, der praktisch auf Versuch und Irrtum
basiert und werden dann suchen als Lösungsverfahren angucken.
Und dann kommt tatsächlich die Verfahren, die darauf beruhen,
dass sich die Versuche,
die Suche zu vermeiden
Indem ich eben lokale Konsistenz herstelle, dadurch vajablen Belegungen eliminiere,
das ist der Ansatz hier und da
wird der Suchraum kleiner oder im letzten Fall,
dass ich ganze vajablen aus den Problemen eliminiere und dadurch wird die Suche einfacher.
Es gibt zwei Wege, den Suchraum kleiner zu machen.
Gut, und das machen wir in den nächsten drei Veranstaltungen
oder sowas.
Schönen Dank für heute und tschüss