Zeugen für mathematische Software

11

Ich bin, wie viele Menschen, ein begeisterter Benutzer von mathematischer Software wie Mathematica und Maple. Ich bin jedoch zunehmend frustriert über die vielen Fälle, in denen eine solche Software Ihnen ohne Vorwarnung einfach die falsche Antwort gibt. Dies kann auftreten, wenn unter vielen anderen Beispielen alle Arten von Operationen ausgeführt werden, von einfachen Summen bis zur Optimierung .

Ich habe mich gefragt, was gegen dieses ernste Problem getan werden könnte. Was benötigt wird, ist eine Möglichkeit, dem Benutzer zu ermöglichen, die Richtigkeit einer Antwort zu überprüfen, damit er ein gewisses Vertrauen in das hat, was ihm gesagt wird. Wenn Sie eine Lösung von einem Mathematikkollegen erhalten, kann er / sie sich einfach hinsetzen und Ihnen ihre Arbeit zeigen. Dies ist jedoch in den meisten Fällen für einen Computer nicht möglich. Könnte der Computer Ihnen stattdessen ein einfaches und leicht überprüfbares Zeugnis für die Richtigkeit ihrer Antwort geben? Die Überprüfung muss möglicherweise vom Computer durchgeführt werden, aber hoffentlich ist die Überprüfung des Überprüfungsalgorithmus viel einfacher als die Überprüfung des Algorithmus, um den Zeugen überhaupt erst zu erstellen. Wann wäre dies machbar und wie genau könnte dies formalisiert werden?

Zusammenfassend ist meine Frage die folgende.

Könnte es zumindest theoretisch möglich sein, dass mathematische Software einen kurzen überprüfbaren Beweis zusammen mit der von Ihnen angeforderten Antwort liefert?

Ein trivialer Fall, in dem wir dies sofort tun können, ist natürlich die Faktorisierung von ganzen Zahlen oder vieler der klassischen NP-vollständigen Probleme (z. B. Hamilton-Schaltung usw.).

Gemeinschaft
quelle
Können Sie ein Beispiel geben, bei dem die erzeugte Antwort falsch ist? Es ist natürlich möglich, einen überprüfbaren Beweis für die Richtigkeit von Berechnungen zu erstellen, aber ein solcher Beweis muss nicht einfach von Hand zu überprüfen sein, einfach weil die Software in der Regel höchst nicht triviale Algorithmen verwendet, die effizienter sind als die intuitivsten.
MCH
Ich habe in der Frage zwei Beispiele angegeben, aber die Linkfarben sind möglicherweise nicht leicht zu erkennen. Klicken Sie auf "Summen" oder "Optimierung".
1
Was haben Manuel Blum und Sampath Kannan in dl.acm.org/citation.cfm?id=200880 getan ?
Andrej Bauer
Vielleicht möchten Sie einen Blick auf Zertifizierungsalgorithmen werfen .
Pratik Deoghare
Ja, zu viele symbolische Softwaresysteme werden als "Black Boxes" behandelt. Dies ist auch eine Unternehmensstrategie zum Schutz von Geschäftsgeheimnissen. (1) Open-Source-Alternativen ausprobieren (2) Software-Engineering als "Best Practice" für "Unit-Tests" betrachten. Kurz gesagt wäre die Idee, "Sanity Checks" der Ergebnisse zu erstellen, z. B. indem er gut konstruierte Tests durch bekannte Werte, andere Manipulationen, Inversen usw. ersetzt. Es ist unwahrscheinlich, dass sowohl die Formel als auch der Test auf eine Weise fehlschlagen, die dies ergibt ein "falsch positives".
vzn

Antworten:

5
  1. Das Konzept der "Zeugen" oder "überprüfbaren Beweise" ist nicht ganz neu: Wie in den Kommentaren erwähnt, suchen Sie nach dem Konzept des "Zertifikats". Drei Beispiele kamen in den Sinn, es gibt mehr (in den Kommentaren und anderswo):

    • Kurt Mehlhorn beschrieb 1999 ein ähnliches Problem bei Algorithmen für die rechnergestützte Geometrie (z. B. können kleinere Fehler in Koordinaten zu großen Fehlern bei den Ergebnissen einiger Algorithmen führen), das auf ähnliche Weise in der Bibliothek Leda gelöst wurde , indem er darauf bestand, dass jeder Algorithmus ein "Zertifikat" erzeugt. seiner Antwort zusätzlich zur Antwort selbst.

    • Demaine, Lopez-Ortiz und Munro verwendeten im Jahr 2000 die Konzepte von Zertifikaten (sie nennen sie "Beweise"), um adaptive Untergrenzen für die Berechnung der Vereinigung und des Schnittpunkts (und der Differenz, aber diese ist trivial) sortierter Mengen aufzuzeigen. Schließen Sie ihre Arbeit nicht aus, da sie keine Zertifikate zum Schutz vor Rechenfehlern verwendet haben: Sie haben gezeigt, dass das Zertifikat zwar im schlimmsten Fall linear in der Größe der Instanz sein kann, jedoch häufig kürzer ist und daher überprüft werden kann "in sublinearer Zeit (bei wahlfreiem Zugriff auf die Eingabe als sortiertes Array oder B-Tree) und insbesondere in weniger Zeit als erforderlich, um ein solches Zertifikat zu berechnen.

    • Ich habe das Konzept von Zertifikaten für verschiedene andere Probleme verwendet, seit Ian Munro ihre Implementierung auf der Alenex 2001 vorgestellt hat , insbesondere für Permutationen (Entschuldigung für den schamlosen Stecker, eine weitere kommt), bei denen das Zertifikat im besten Fall kürzer ist als im schlimmsten oder durchschnittlichen Fall, was eine komprimierte Datenstruktur für Permutationen ergibt. Auch hier dauert die Überprüfung des Zertifikats (dh der Bestellung) höchstens linear, weniger als die Berechnung (dh die Sortierung).

  2. Das Konzept ist nicht immer nützlich für die Fehlerprüfung: Es gibt Probleme, bei denen die Prüfung des Zertifikats genauso lange dauert wie die Erstellung (oder einfach die Erstellung des Ergebnisses). Zwei Beispiele kommen in den Sinn, eines trivial und eines kompliziert, Blum und Kannan (in den Kommentaren erwähnt) geben andere.

    • nn
    • Das Zertifikat für die konvexe Hülle in zwei und drei Dimensionen benötigt, wenn die Punkte in zufälliger Reihenfolge angegeben werden, so viele Bits zum Codieren wie Vergleiche zum Berechnen von [FOCS 2009] (anderer schamloser Stecker).

Die Bibliothek Leda ist die allgemeinste (mir bekannte) Anstrengung, deterministische Algorithmen zur Erstellung von Zertifikaten in der Praxis zur Norm zu machen. Das Papier von Blum und Kannan ist die beste Anstrengung, die ich gesehen habe, um es theoretisch zur Norm zu machen, aber sie zeigen die Grenzen dieses Ansatzes.

Ich hoffe es hilft...

Jeremy
quelle
Danke das ist sehr interessant. In Bezug auf Ihren Punkt 2. Ich denke, ich spreche über etwas anderes. Das Problem sind nicht Fehler im Code, sondern Algorithmen, von denen wir wissen, dass sie möglicherweise die falsche Antwort geben. Außerdem weiß ich auf weltlicher Ebene nicht einmal, wie ein nützliches Zertifikat für viele mathematische Funktionen aussehen würde. Zum Beispiel für eine unendliche Summe oder beispielsweise die Minimierung einer Funktion.
Um etwas klarer zu sein. Es scheint sehr schwierig zu sein, nachweislich korrekte Algorithmen für viele mathematische Probleme zu entwickeln. Wir leben jedoch mit Algorithmen, die aus praktischen Gründen Fehler machen können, ohne uns zu warnen (und tatsächlich nachweislich falsch sind). Die Hoffnung, dass es nicht (so) schwer ist, nachweislich korrekte Korrektheitsprüfer für die gleichen Probleme zu entwickeln.
Ich bin weit von meinem Fachwissen entfernt, aber ich dachte, dass die Berechnungsfehler im Allgemeinen durch Rundungsfehler mit Zwischenergebnissen (dies war eindeutig in den Beispielen, die Leda motivieren) bei grundlegenden Operationen (Multiplikationen, Divisionen usw.) und nicht durch Fehler verursacht wurden in den Algorithmen. Ich hätte gedacht, dass algebraische Systeme wie Ahorn und Matlab diese vermeiden :(
Jeremy
Es ist eine interessante Frage, und vielleicht weiß jemand hier sicher, dass viele der falschen Antworten, über die ich spreche, nicht für numerische Berechnungen bestimmt sind. Dies impliziert zumindest auf den ersten Blick, dass die Probleme mehr sind, als Sie beschreiben. Ich kenne die Komplexität von Rechengrenzen / unendlichen Summen usw. nicht, aber ich gehe davon aus, dass sie im schlimmsten Fall im Allgemeinen unlösbar sind und daher Heuristiken benötigt / nützlich sind, die manchmal die falsche Antwort geben. mathematica.stackexchange.com/questions/tagged/bugs ist nicht uninformativ, um ein Gefühl für die Dinge zu bekommen, die schief gehen.
Theoretische CS hat das Konzept des Selbsttests, das für viele Probleme in der linearen Algebra gilt. Eine der Grundideen ist, dass für viele Probleme die Lösung (möglicherweise mit ein wenig zusätzlichen Informationen) einfacher überprüft werden kann als berechnet werden kann. Siehe z . B. https://doi.org/10.1016/0022-0000(93)90044-W .
Neal Young