Fachliche Schwerpunkte

By Wolfgang Keller
Originally written 2018-10-11
Last modified 2018-11-12

Mathematische Tätigkeit

Der Schwerpunkt meiner mathematischen Tätigkeit der letzten Jahre liegt in den Bereichen polyedrische Kombinatorik, kombinatorische Optimierung und (gemischt-)ganzzahlige lineare Optimierung (hier insbesondere Theorie von Cutting-Plane-Algorithmen). Für diese Themenbereiche ist auch der Oberbegriff „diskrete Optimierung“ gebräuchlich. Zu Cutting-Plane-Algorithmen folgende Anmerkung: Hybride Algorithmen, welche ein Branch&Bound-Framework mit Cutting-Plane-Algorithmen verbinden (Branch&Cut-Algorithmen) stellen die aktuell leistungsstärkste Algorithmenklasse zum Lösen von (gemischt-)ganzzahligen linearen Programmen ((M)ILPs) dar.

In den Themengebieten polyedrische Kombinatorik und kombinatorische Optimierung entwickelte ich in meiner Diplomarbeit in Mathematik zwei neue erweiterte Formulierungen des Spannbaum-Polytops, welche bis heute „Weltrekordhalter“ im Sinne der kleinsten bekannten asymptotischen Erweiterungskomplexität (d.h. Anzahl benötigter Ungleichungen) einer symmetrischen bzw. asymmetrischen erweiterten Formulierung des Spannbaum-Polytops sind. Ich denke, dies dürfte mein umfangreiches Wissen in Bezug auf Modellierung mittels (gemischt-)ganzzahliger linearen Programme ((M)ILPs) aufzeigen.

Meine vor kurzem abgegebene Dissertation hat folgende Fragestellung zur Grundlage: Einer Klasse von Schnittebenen (cutting planes), welche in Cutting-Plane-Algorithmen zum Lösen gemischt-ganzzahliger linearer Programme (MILPs) verwendet werden, kann man auf natürliche Weise einen Cutting-Plane-Operator zuordnen. Leider gibt es eine sehr hohe Anzahl an Klassen von Schnittebenen und selbst wenn man sich in der Betrachtung auf die Cutting-Plane-Operatoren beschränkt, ist die Anzahl noch sehr groß.

Um Übersicht in dieses Sammelsurium zu bekommen, definiere ich zwei Hierarchien von Cutting-Plane-Operatoren auf Basis von Linealitätsräumen. Diese beiden Hierarchien sind wie Puzzlesteine ineinander verzahnt und können daher zu einer gemeinsamen Hierarchie vereinigt werden. Für diese „Doppel-Hierarchie“ zeige ich, dass zahlreiche in der Literatur betrachtete Cutting-Plane-Operatoren in dieser Hierarchie liegen (z.B. Chvátal-Gomory-Abschluss, Split Closure, Crooked Cross Closure) oder durch Operatoren in dieser abgeschätzt werden können (z.B. t-Branch Split Closure).

Programmierung

In Bezug auf Programmierung habe ich wohl schon mit den meisten verbreiteten „General Purpose“-Programmiersprachen gearbeitet (z.B. C, C++, C#, Erlang, Java, JavaScript, MATLAB/Scilab, PHP, Python, R, …), jedoch habe ich in den letzten Jahren einen damit begonnen, einen gewissen Fokus auf C und C++ zu legen. Vor einiger Zeit begann ich damit, mich in meiner Freizeit in „Modern C++“ (also aktuell C++17; wie dem Leser sicher bekannt ist, kann man seit C++11 bezüglich C++ fast schon von einer vollkommen neuen Programmiersprache reden, was gerne unter dem Schlagwort „Modern C++“ zusammengefasst wird) eigenständig weiterzubilden.

Ich bin der Überzeugung, dass es wertlos ist von „x Jahren Erfahrung in Programmiersprache y“ zu sprechen/schreiben, da dies nichts über die Art der Aufgaben, die Geschwindigkeit des Durchwanderns der Lernkurve etc. aussagt. Auch denke ich, dass eine Programmiersprache wirklich umfassend zu verstehen (inklusive ihr umfassendes Ökosystem, subtile Details ihrer Community etc.) quasi eine Lebensaufgabe darstellt. Der zentrale Grund, warum dies so wenig auffällt, liegt meines Erachtens wohl darin, dass in der Praxis häufig nur eine oberflächliche Auswahl an Features eingesetzt werden, die moderne General-Purpose-Programmiersprachen und ihre Ökosysteme bieten.

Selbstverständlich kenne ich mich auch mit Technologien aus, die man im Programmierumfeld findet, wie beispielsweise Versionskontrollsysteme (ich setze für meine eigenen Projekte Git ein, habe aber auch schon mit Subversion und Mercurial gearbeitet).

Mein Interesse für Programmier-Themen möge auch bezeugen, dass ich vor vielleicht einem halben Jahr privat (abends nach meiner „eigentlichen Arbeit“ an der Universität) damit begonnen habe, in meiner Freizeit Texte für ein alternatives Curriculum für Informatik zu schreiben (dies alles befindet sich jedoch noch in einem frühen Zustand). Unter anderem arbeite ich hier am Entwurf einer neuen Assembler-Sprache insbesondere für x86-Prozessoren mit dem Ziel, dieses (in meinen Augen zu Unrecht) als unelegant und konfus verschriene Instruction Set auf elegante Grundmuster zurückzuführen.