Für Galileo Galilei war Mathematik das Alphabet, mit dem der Schöpfer das Universum beschrieben hat. Diese Beobachtung hat sich seit dem 17ten Jahrhundert nicht verändert: Die Relativitätstheorie ist ohne Mathematik nicht denkbar, und die mächtigen Künstlichen Neuronalen Netze (KI) basieren auf Mathematik, genauer: dem Teilgebiet Statistik.

Der Diplom-Mathematiker Werner Mienhardt setzt mit seinem Büro für mathematische Dienstleistungen (Webseite, You-Tube Kanal ) komplexe Projekte der Digitalisierung um: Dies reicht von der Optimierung der Bewegungsabläufe in der Robotik bis hin zur Entwicklung von Algorithmen bei der Datenauswertung.

Mit Herrn Mienhardt spreche ich über Einsatzbereiche von Mathematik bei der Softwareentwicklung. Über die Bedeutung mathematischer Methodik beim Problemlösen. Über die Schönheit von Algorithmen und mehr …

Sebastian Zang: Lieber Herr Mienhardt, wie würden Sie ganz generell die mathematische Herangehensweise bei der Problemlösung beschreiben?
Werner Mienhardt: Das erste was ich mache, ist Folgendes: Ich schaue die Problemstellung an und nehme alles weg, was für die Lösung nicht relevant ist. Das ist ein Abstraktionsprozess. Am Ende bleibt von der Fragestellung nur noch das Gerüst übrig, und das ist immer viel klarer und übersichtlicher als das anfängliche Problem mit seinem Praxisbezug. So tritt der Kern des Problems klar zutage. Manchmal springt einem dann die Lösung schon ins Auge – manchmal sehe ich dann die Schwierigkeiten, aber eben auch die Schwierigkeiten sind dann sehr klar.

Diese Abstraktionsfähigkeit auszubilden ist im Übrigen etwas, was für Mathematiker sehr wichtig und typisch ist.

Nun beginnt der Problemlösungsprozess. Das ist Kopfarbeit. Bewusst und unbewusst. Es reift eine Idee heran, die mir erfolgversprechend erscheint. Nicht zwingend, wenn ich am Schreibtisch sitze. Beispielsweise morgens beim Aufwachen, beim Joggen oder beim Staubsaugen. Mit dieser Idee setze ich mich dann wieder an den Schreibtisch und überprüfe, ob die Idee gut war und dann geht’s an die konkrete Umsetzung. Wenn die Idee nicht gut war, lasse ich das Problem weiter im Kopf arbeiten.

Bei der Umsetzung einer Idee tauchen oft weitere Hindernisse auf, dann brauche ich Ideenreichtum, Kreativität und Fantasie – also Eigenschaften, die man einem Mathematiker vielleicht gar nicht so zuschreibt. Und dann sind Mathematiker meist Menschen, die sehr hartnäckig sind. Ein fehlgeschlagener Lösungsversuch ist immer Startpunkt für den nächsten Anlauf das Problem zu lösen.

Sebastian Zang: Wie gehen Sie ganz praktisch in einem Projekt vor, wo Sie – sagen wir – gefertigte Bauteile einer Qualitätskontrolle unterziehen müssen. Sie haben etwa ein Projekt durchgeführt, wo mit Laser-Triangulation komplexe Berechnungen durchgeführt werden. Wie gehen Sie da vor: Sie holen sich vermutlich erstmal alle Daten, und dann? Oder: Sie gehen vielleicht einen Schritt zurück und definieren, welche Daten überhaupt erfasst werden müssen?
Werner Mienhardt: Erstmal muss und will ich die Fragestellung sehr genau verstehen. Dazu gehört ein persönliches Treffen. Ich schaue mir dann auch die Maschine oder Messvorrichtung vor Ort an. Es gab aber auch schon erfolgreich abgeschlossene Aufträge, während deren Verlauf es kein persönliches Treffen gab – wie gesagt, wir Mathematiker sind gut im abstrakten Denken (lacht). Wichtig für eine zielorientierte Lösungsentwicklung ist dabei, dass mir ein kompetenter Ansprechpartner zur Verfügung steht. Es müssen immer wieder detaillierte Fragen geklärt werden.

Interessant ist auch, dass mir manchmal ein Problem präsentiert wird und der Kunde noch gar nicht richtig weiß, was er damit anfangen soll. Der Kunde weiß also noch nicht einmal, in welche Richtung die Lösung liegen könnte. Hier ist es dann meine Aufgabe, Lösungspfade vorzuschlagen, zu präzisieren und Entscheidungsprozess zu moderieren.

Zuhause führe ich erstmal „Proberechnungen“ durch, und das heißt: Ich sammle ein paar Formeln und mathematische Zusammenhänge, die mit der Sache zu tun haben. Sukzessive entwickelte ich ein Gespür dafür, wie schwierig die Sache werden könnte, wie hoch der Aufwand sein könnte. Damit schätze ich den Aufwand und schreibe ein Angebot. In diesem Angebot steht sehr präzise, was ich liefere und ein Fixpreis. Ja, das ist die Regel. Ich habe da mittlerweile viel Vertrauen in meine Schätzungen und liege da eigentlich immer ziemlich gut – und für meine Kunden ist die Kostenklarheit ebenfalls ein Vorteil.

Und wenn dann die Bestellung kommt, dann geht’s richtig los – dann eben erstmal mit dieser Abstraktion, die ich schon beschrieben habe. Und dann sind alle meine Projekte sehr unterschiedlich – manchmal muss ich mir auch erst noch Literatur beschaffen und was ganz Neues lernen und verstehen. Das war mal der Fall, als ich etwas zu Verschleiß an Bauteilen berechnen sollte oder elastische Kräfte ermitteln sollte, die durch elastische Verformungen eines Körpers verursacht werden. Ich lerne dann, was dazu in der physikalischen Fachliteratur steht und führe dann auf dieser Basis weitergehende Berechnungen durch, die wahrscheinlich in der Form noch nie gemacht wurden. Das fasziniert mich dann besonders.

Sebastian Zang: Wie lässt sich erkennen, ob Mathematik für ein Problem eine Lösung liefern könnte oder nicht? Ich formuliere es einmal banal: Immer dann, wenn es um Zahlen geht?
Werner Mienhardt: Ja klar, wenn es um Zahlen geht, dann ist das auf jeden Fall ein sehr gutes Indiz. Ein anderes Indiz ist, wenn es um Logik geht, also um die derzeit so oft zitierten Algorithmen.

Ja, und dann gibt es noch den Punkt zu beachten, dass ein Problem eventuell so kompliziert sein könnte, dass ich scheitern könnte. Hmmm …, ich überlege …, ich glaube das ist mir aber noch nie passiert. Wenn ich ein Angebot abgebe, bin ich mir immer ziemlich sicher, dass das klappt. Selbst wenn ich auf eine sehr komplizierte Gleichung komme, die ich nicht lösen kann, dann gibt es immer eine numerische Näherungslösung, die für alle praktischen Fälle sehr gut geeignet ist.

Sebastian Zang: Wie könnte Mathematik die Softwareentwicklung verbessern?
Werner Mienhardt: Ich sehe da schon das Problem, dass bei der Softwareentwicklung immer sehr darauf geschaut wird, welche Technologien kommen zum Einsatz, welche Programmiersprachen, welche Software-Tools werden genutzt. Und dann denkt man, wenn man nur gute Programmierer hat, die diese Tools gut beherrschen, dann ist alles in Ordnung.

Das funktioniert gut bei Software, die nichts wirklich Kompliziertes macht. Wenn Software allerdings wirkliche Berechnungen durchführen soll oder wenn es um richtige logische, also algorithmische Probleme geht, dann braucht man eine logische Struktur, die mit der angewandten Technologie noch gar nichts zu tun hat. Bei der logischen Struktur habe ich immer zwei Kriterien: Genial und einfach. Ob’s genial ist, das ist schwer zu sehen. Einfachheit ist da besser zu erkennen.

Wenn während der Softwareentwicklung immer weitere Spezialfälle auftauchen, wenn man immer mehr Ausnahmen und Sonderfälle behandeln muss, immer mehr Kennzeichen und Flags benötigt werden, dann ist das ein Hinweis darauf, dass Logik und Struktur für die Software nicht gut durchdacht waren. Dann hätte man mehr Zeit in den Abstraktionsprozess investieren sollen, von dem ich vorher gesprochen habe. Und zwar so lange, bis eine klare Struktur zutage tritt, die alle Fälle abdeckt und dennoch einfach ist. Das ist dann meist auch genial.

Ein sehr gutes Beispiel für eine klare, einfache und dadurch geniale Struktur ist das Konzept des neuronalen Netzes: Ein paar Punkte, ein paar Linien dazwischen und variable Gewichtungen und dann die Idee, das zu trainieren – das ist das zugrundliegende logische Konzept. Und was kann man damit alles machen, das ist fantastisch! Und dabei kommt es eben nicht darauf an, ob die Realisierung nun mit Python oder was auch immer gemacht wird. Natürlich müssen die Tools beherrscht werden, aber das Entscheidende ist die Idee des neuronalen Netzes. Ohne die einfache, geniale Idee sind alle noch so guten Tools nutzlos.

Sebastian Zang: Spielen etwa auch Supercomputer eine Rolle in der Mathematik, wenn es darum geht, mathematische Probleme zu lösen oder Beweise zu führen?
Werner Mienhardt: Ja, das gibt es. Beispielsweise wenn man große Primzahlen finden will, kann man mit einem Supercomputer in akzeptabler Zeit nachrechnen, dass es sich um eine Primzahl handelt. Letztendlich verschiebt sich dadurch aber das Problem auf noch größere Primzahlen, für deren Überprüfung auch der Supercomputer zu lange brauchen würde. Mich haben solche Fragestellungen in der Mathematik ehrlicherweise nie interessiert.

Ein anderes sehr populäres und interessantes Beispiel ist das Traveling Salesman Problem. Im Grunde gibt es natürlich einen Lösungs-Algorithmus: Alles durchprobieren und der kürzeste Weg ist die Lösung. Die Anzahl der Wege steigt aber mit der Anzahl der Städte und zwar schneller als exponentiell und das ist dann gigantisch schnell.

Also in der Mathematik kann man mit Supercomputer tatsächlich etwas anfangen, aber es wäre sicherlich so, dass man dann innermathematisch sofort neue Fragen hätte, für die auch ein Supercomputer zu lange brauchen würde. Um davon mal eine Vorstellung zu geben, es gibt sicher mathematische Fragen, für die auch ein Supercomputer 10.000 Jahre brauchen würde – man sieht, da kann man nicht einfach sagen: Na, dann warte ich eben etwas länger.

Sebastian Zang: Können Sie einmal beispielhaft ein Problem beschreiben, das zum heutigen Stand der Forschung in der Mathematik noch ungelöst ist?
Werner Mienhardt: Hmmm …, soweit ich weiß ist die sogenannte Riemannsche Vermutung noch nicht bewiesen. Es geht dabei um komplexe Nullstellen der Zeta-Funktion und deren Verbindung zu Primzahlen. Die Vermutung wurde Mitte des 19-ten Jahrhunderts aufgestellt.

Sebastian Zang: Lieber Herr Mienhardt, was das Reimann’sche Problem ist, das muss ich nochmal nachlesen. Das mache ich auch gleich. Erstmal herzlichen Dank für Ihre Zeit und für dieses Gespräch!

Zum Weiterlesen

Erfolgsrezept für die Entwicklung Sicherer Software

Executive Summary: Die wichtigsten Programmiersprachen, Frameworks

Author

Der Autor ist Manager in der Softwareindustrie mit internationaler Expertise: Prokurist bei einem der großen Beratungshäuser - Verantwortung für den Aufbau eines IT Entwicklungszentrums am Offshore-Standort Bangalore - Director M&A bei einem Softwarehaus in Berlin.