Der Physiker Lev Landau spielte ein mentales Spiel mit sowjetischen Zahlen [
1 ]. Die Tafeln bestanden aus zwei Zahlen, einem Bindestrich, zwei weiteren Zahlen und einigen Buchstaben.
Spielregel
Sein Spiel bestand darin, mathematische Operatoren auf Zahlen auf beiden Seiten des Strichs anzuwenden, damit der Strich durch ein Gleichheitszeichen ersetzt werden konnte. Wenn Sie beispielsweise das Nummernschild 44-74 nehmen, ist eine der Lösungen
4! + 4 = 7 * 4Bitte beachten Sie, dass wir Operatoren wie
! ,
+ und
* , aber ohne Zahlen hinzuzufĂŒgen.
Gibt es fĂŒr jedes mögliche Nummernschild eine Lösung? Dies hĂ€ngt davon ab, welche Operatoren Sie verwenden dĂŒrfen.
Sie können das Spiel trivialisieren, indem Sie die Bruchteiloperation {x} auf beide Seiten anwenden, da der Bruchteil einer Ganzzahl Null ist. Sie können den Bruchteilbetreiber mit der BegrĂŒndung verbieten, dass dies eindeutig keine mathematische Operation der High School ist, oder sie einfach verbieten, weil dies das Spiel uninteressant macht.
Die Ăbersetzung wurde von EDISON Software unterstĂŒtzt , die in vielversprechende Startups investiert und verschiedene Cloud-Services entwickelt .
One-Stop-Lösung
Es stellt sich heraus, dass es eine universelle Lösung gibt, beginnend mit der Beobachtung, dass
â (n + 1) = sec arctan â n.
Wenn eine Seite gröĂer als die andere ist, ergibt die obige Formel eine sofortige Lösung. Zum Beispiel wird eine Lösung fĂŒr ein Kennzeichen 89-88 sein
â89 = sec arctanâ88.
Wenn der Unterschied gröĂer ist, kann die Formel wiederholt angewendet werden. Zum Beispiel könnten wir die Formel zweimal anwenden, um zu erhalten
â (n + 2) = sec arctanâ (n + 1) = sec arctan sec arctanâ n
und daher ist eine mögliche Lösung fĂŒr 35-37
sec arctan sec arctan â35 = â37.
Kolmogorov KomplexitÀt
Da eine Lösung immer möglich ist, können wir das Spiel interessanter machen, indem wir die einfachste Lösung finden. Wir haben ein intuitives VerstĂ€ndnis dafĂŒr, was dies bedeutet. Mit unserem Beispiel 44-74 die erste Lösung
4! + 4 = 7 * 4
einfacher als universelle Lösung
sec arctan sec arctan ... â44 = â74
Dies wĂŒrde den 30-fachen Einsatz von Sekanten und Arkustangens erfordern.
Die Kolmogorov-KomplexitĂ€t eines Objekts ist die LĂ€nge des kĂŒrzesten Computerprogramms zum Erstellen eines Objekts. Wir könnten die Kolmogorov-KomplexitĂ€t der Funktionen berechnen, die auf die Zahlen auf jeder Seite angewendet werden, um zu messen, wie komplex die Lösung ist.
Um dies herauszufinden, mĂŒssen wir angeben, welche Programmiersprache wir haben, und es ist nicht so einfach, wie es scheint. Wenn wir die mathematische Notation als Programmiersprache betrachten, wollen wir zĂ€hlen! wie ein Charakter und arctan wie 6 Zeichen? Das scheint nicht richtig zu sein. Wenn wir "arctan" als "atn" schreiben wĂŒrden, wĂŒrden wir weniger Zeichen verwenden, ohne eine andere Lösung zu erstellen.
KomplexitÀt des Python-Codes
Um die Dinge objektiver zu gestalten, könnten wir die LĂ€nge realer Computerprogramme berĂŒcksichtigen, anstatt die mathematische Notation als Programmiersprache darzustellen. Nehmen wir an, wir haben Python gewĂ€hlt. Dann sind hier einige Funktionen, die unsere beiden Kennzeichenlösungen 44-74 berechnen.
from math import sqrt, cos, atan def f(): sec = lambda x: 1/cos(x) y = sqrt(44) for _ in range(30): y = sec(atan(y)) return y def g(): return sqrt(77)
Wir könnten die KomplexitÀt unserer Funktionen f und g messen, indem wir die Anzahl der Zeichen in jedem zÀhlen. Aber es gibt immer noch Schwierigkeiten.
Was ist mit Importen? Seine LĂ€nge muss mit f rechnen, da alle importierten Anweisungen verwendet werden, g jedoch eine kĂŒrzere Anweisung verwendet, die nur sqrt importiert. TĂ€uschen wir im Grunde genommen sogar den Import einer Bibliothek?
DarĂŒber hinaus liefern die beiden oben genannten Funktionen aufgrund der begrenzten Genauigkeit nicht genau das gleiche Ergebnis. Wir können uns vorstellen, dass unsere importierten Funktionen unendlich genau sind, aber dann verwenden wir nicht Python, sondern eine idealisierte Version von Python.
Was ist mit der Schleife? Dies fĂŒhrte neue Zahlen, 3 und 0, ein und verstöĂt daher gegen die Regeln des Landau-Spiels. Sollen wir uns also abrollen, bevor wir die KomplexitĂ€t berechnen?
Gedankenexperiment
Kolmogorovs KomplexitĂ€t ist ein sehr nĂŒtzliches Konzept, aber es ist eher ein mentales Experiment als das, was Sie in der Praxis berechnen können. Wir können uns das kĂŒrzeste Programm vorstellen, um etwas zu berechnen, aber wir wissen selten, dass wir wirklich ein solches Programm gefunden haben. In der Praxis können wir nur die Obergrenzen kennen.
Theoretisch können Sie alle Turing-Maschinen einer bestimmten LĂ€nge oder alle Python-Programme einer bestimmten LĂ€nge auflisten und die kĂŒrzeste finden, die diese Aufgabe ausfĂŒhrt. Die Liste wĂ€chst jedoch exponentiell mit zunehmender LĂ€nge.
Es ist jedoch möglich, die Dauer bestimmter Programme zu berechnen, wenn wir uns mit einigen der oben genannten Schwierigkeiten befassen. Wir könnten Landau zu einem Spiel fĂŒr zwei machen, indem wir sehen, wer in einer festgelegten Zeit eine einfachere Lösung anbieten kann.
ZurĂŒck nach Landau
Wenn wir Sinus und Grad in unserer Gruppe von Operatoren zulassen, dann ist B.S. Gorobets ist eine universelle Lösung. FĂŒr n â„ 6 ist n! ein Vielfaches von 360 und so
sin (n!) ° = 0.
Und wenn n kleiner als 6 ist, beginnt seine zweistellige Darstellung bei Null, sodass wir die Zahlen multiplizieren können, um Null zu erhalten.
Wenn wir transzendentale Funktionen verbieten, blockieren wir den Gorobets-Trick und haben Funktionen, deren LÀnge wir objektiv in einer Programmiersprache messen können.