Was ist eine allgemeine Erklärung für die universelle Suche?

13

Ich lese ein Buch über ein Informatik-Thema, aber es fehlt mir ein Teil des erforderlichen Hintergrunds. Wenn ich auf Begriffe stoße, die ich nicht verstehe, schaue ich einfach nach, aber für die universelle Suche konnte ich einfach keine Erklärung finden, die für einen Leser ohne Hintergrund in Statistik / Informatik geeignet wäre.

Ich habe diesen Artikel über die universelle Suche von Scholarpedia gelesen , der das Thema zu behandeln scheint. Ich würde mich über eine Erklärung freuen, was Universal Search (oder Levin Search ) bedeutet.

quant
quelle

Antworten:

15

Stellen Sie es sich so vor. Sie haben ein Problem mit Eingabe x und wissen, wie Sie eine Lösung überprüfen können, wenn Sie jemals eine gefunden haben (wie die Umkehrung einer Matrix oder was auch immer Sie sich vorstellen möchten).

Nehmen Sie jetzt Ihre bevorzugte Programmiersprache (z. B. Python) und erstellen Sie jedes einzelne Python-Programm, das aus höchstens 10 Zeichen besteht! Anschließend führen Sie alle diese Programme mit Ihrer Eingabe für jeweils 10 Sekunden aus, jeweils auf Eingabe . Wenn Sie keine Antwort erhalten, fahren Sie mit Schritt 11 fort. Führen Sie jedes Programm mit höchstens 11 Zeichen (einschließlich derjenigen, die Sie natürlich bereits ausprobiert haben) für jeweils 11 Sekunden bei Eingabe x aus . Wenn Ihnen keiner die richtige Antwort gibt, fahren Sie mit 12 fort und so weiter.xx

Genauer gesagt, führen Sie in Iteration alle Programme mit einer Länge von höchstens i (endlich viele, aber natürlich exponentiell in i ) jeweils für i Sekunden (oder Schritte) aus.iiii

Es gibt ein Programm, sagen , die die korrekte Ausgabe in gibt s Sekunden. Wenn Sie zur Iteration gekommen sind, ist i = max { | P | , s } , wird dieses Programm mindestens s Sekunden lang ausgeführt, und Sie geben sowohl P als auch die Lösung aus.Psi=max{|P|,s}sP

Pål GD
quelle
3

Denken Sie daran, dass Sie alle Programme mit einer Länge von oder weniger ausführen und sie höchstens i Sekunden lang ausführen lassen , um die Aussage von Pål GD zu ergänzen . Es kann also sein, dass es ein Programm gibt, das die richtige Antwort mit 100 Zeichen erhält, die Ausführung jedoch 120 Sekunden dauert. Rufen Sie das Programm P . Auf i = 100 überprüfen Sie dieses Programm, aber die Ausführung dauert zu lange, sodass Sie es verwerfen. Nachdem Sie alle Programme der Länge 100 überprüft haben, finden Sie keine, die die richtige Antwort liefert. Probieren Sie also Programme der Länge 101 und alle Programme aus, die Sie zuvor versucht haben . Also versuchst du es nochmal PiiPi=100101 P, das Programm, das (wir wissen) Ihnen die richtige Antwort gibt, aber es dauert immer noch zu lange, so dass Sie es verwerfen. Wir machen so lange weiter, bis wir zu . Dann versuchen wir alle Programme mit einer Länge von 120 , und wenn wir zu P kommen , lassen wir es lange genug laufen, damit es die richtige Antwort gibt. Dann hören wir auf - wir haben den gewünschten Algorithmus gefunden. Die Iteration, auf der wir uns befinden, ist i = 120 , denn obwohl die Länge des Programms P geringer ist (wir würden | P | = 100 schreiben ), mussten wir warten, bis die dafür benötigte Zeit 120 Sekunden betrug ( s = 120)i=120120Pi=120P|P|=100s=120). Also bedeutet einfach das Maximum der Länge des Programms P und der Zeit, die zum Ausführen von s benötigt wurde .i=max{|P|,s}Ps

Eine andere Sichtweise ist, dass für ein Programm , das s Sekunden benötigt, um die richtige Antwort zu erhalten, mindestens | überprüft werden muss P | Iterationen und mindestens s Iterationen, bevor wir es finden, denn wenn i < | P | wir haben dann überprüft das Programm nicht noch nicht, und wenn i < s dann haben wir das Programm nicht laufen lange genug lassen.Ps |P| si<|P|i<s

Beachten Sie, dass diese Suchmethode nur dann eine Antwort liefert, wenn es eine gibt. Es kann nicht garantiert werden, dass die kürzeste oder schnellste Antwort gefunden wird. Der Grund dafür sollte offensichtlich sein, wenn Sie der Ansicht sind, dass der Prozess beendet wird, sobald ein Programm gefunden wird, das die richtige Antwort gibt.

Tom Potts
quelle