Punkte sind erforderlich, um ein Polynom des Grades eindeutig zu bestimmen; Beispielsweise bestimmen zwei Punkte in einer Ebene genau eine Linie.
Wie viele Punkte sind erforderlich, um eine berechenbare Funktion eindeutig zu bestimmen , angesichts der Länge eines Programms, das in einer festen Sprache berechnet ? (dh eine Schranke für die Kolmogorov-Komplexität von ).
Die Idee ist, dass man zumindest theoretisch die Korrektheit eines Programms beweisen kann, indem man genügend Tests durchführt.
Wenn man ein Programm der Länge , das berechnet , gibt es eine Grenze für die Anzahl von Funktionen, die mit einer Quelllänge von höchstens berechnet werden könnenL f L .
Deshalb müsste man "nur" beweisen, dass:
- kann mit einer Quellenlänge ≤ L berechnet werden
- berechnet keine andere in L Bytes oder wenigerberechenbare Funktion(durch Testen)
Diese Idee hat wahrscheinlich keine praktischen Konsequenzen (die Grenzen sind sicherlich exponentiell).
Antworten:
(Dies war als Kommentar gedacht, ging aber lange). Sehr interessante Frage. Wenn Sie bereit sind, über andere Komplexitätsmaßnahmen als die von Kolmogorov nachzudenken, gibt es in der Lerntheorie einige Antworten, die Sie zufriedenstellen könnten. Ich überlasse es den Experten auf dem Gebiet.
Wenn ich mich nicht irre, hat Valiant in "Eine Theorie des Lernbaren" bewiesen, dass eine Boolesche Funktion mit einer Polynomzahl von "positiven Punkten" auf der Größe ihrer k-CNF-Formel (für jedes feste k) rekonstruiert werden kann , und ich meine mit "positiven Punkten" diejenigen der Form(x1,…,xn,1) ).
In Knuths TAOCP 7.2.1.6 wird auf verblüffende Weise gezeigt (anhand des Weihnachtsbaummusters), dass Sie für die Rekonstruktion einer monote-booleschen Funktion (dh, die in jeder Variablen nicht abnimmt) genau ( n ) benötigen(n+1⌊n/2⌋+1) Punkte.
quelle
In Anlehnung an Deigos Antwort besagen die Standardwerte für die Komplexität der Stichproben aus der Lerntheorie, dass Sie, wenn Sie mit der Suche nach einem "ungefähr korrekten" Programm zufrieden sind, nicht viele Punkte ausprobieren müssen. Nehmen wir an, wir kodieren Programme in Binärform, so dass es nur Programme der Länge d gibt. Nehmen wir auch an, dass es eine gewisse Verteilung über Eingabebeispiele D gibt . Vielleicht ist es Ihr Ziel, ein Programm zu finden, von dem Sie sich ziemlich sicher sind, dass es fast richtig ist ("wahrscheinlich ungefähr korrekt", dh wie im Valiants PAC-Lernmodell). Das heißt, Sie möchten einen Algorithmus ausführen, der eine kleine Anzahl von Abtastwerten x ∼ D zusammen mit f ( x ) aufnimmt.2d D x∼D f(x) und wird mit einer Wahrscheinlichkeit von mindestens ein Programm P ausgeben, das mit f in mindestens einem ( 1 - ϵ ) Bruchteil der aus D gezogenen Eingaben übereinstimmt . (1−δ) P f (1−ϵ) D
Wir werden einfach Beispiele x ∼ D zeichnen und jedes Programm P mit einer Länge ≤ d ausgeben, das in allen Beispielen mit f übereinstimmt . (Eine ist garantiert vorhanden, da wir annehmen, dass f höchstens d Kolmogorov-Komplexität hat ) ...m x∼D P ≤d f f d
Wie groß ist die Wahrscheinlichkeit, dass ein bestimmtes Programm , das bei mehr als einem Viertel der Beispiele mit f nicht übereinstimmt, mit den von uns ausgewählten m Beispielen übereinstimmt ? Es ist höchstens ( 1 - ϵ ) m . Wir möchten diese Wahrscheinlichkeit nehmen höchstens sein δ / 2 d , so dass wir eine Vereinigung über alle gebundenes nehmen 2 d Programme und sagen , dass mit einer Wahrscheinlichkeit von mindestens 1 - δ , kein „schlechtes“ Programm steht im Einklang mit unseren gezogen Beispielen . Beim Lösen sehen wir, dass es ausreicht, nur m ≥ 1 zu nehmenP f ϵ m (1−ϵ)m δ/2d 2d 1−δ
Beispiele. (dh nur linear viele in der Kolmogorov-Komplexität vonf
Übrigens, Argumente wie dieses können verwendet werden, um "Occam's Razor" zu rechtfertigen: Angesichts einer festgelegten Anzahl von Beobachtungen unter allen Theorien, die sie erklären, sollten Sie diejenige mit der geringsten Kolmogorov-Komplexität wählen, da die geringste Wahrscheinlichkeit einer Überanpassung besteht.
Natürlich, wenn Sie nur ein einziges festes Programm auf diese Weise überprüfen wollen, brauchen Sie nur Beispiele ...O(log(1/δ)/ϵ)
quelle
quelle
Sie können das Programm beliebig lang machen. Sie können also bei jedem Programm entscheiden, ob seine Sprache der Sprache dieses Programms entspricht. Das kann man nach dem Satz von Rice nicht tun.
quelle