In Übereinstimmung mit KW Regans Artikel "Connect the Stars" erwähnt er am Ende, dass es immer noch ein offenes Problem ist, eine Darstellung von ganzen Zahlen zu finden, so dass die Additions-, Multiplikations- und Vergleichsoperationen in linearer Zeit berechenbar sind:
Gibt es eine Darstellung von ganzen Zahlen, so dass Addition, Multiplikation und Vergleich in linearer Zeit möglich sind? Gibt es grundsätzlich einen linearen zeitdiskret geordneten Ring?
(1) Wie nahe können wir der linearen Zeitmultiplikation und -addition ohne Vergleiche kommen? Hier gehe ich davon aus, dass die Problemgrößen variieren können, sodass wir möglicherweise eine Datenstruktur / einen Datenalgorithmus benötigen, mit dem sich ganzzahlige Größen ändern lassen.
(2) Für das vollständige Problem können wir davon ausgehen, dass wir ein optimales Schema zum Multiplizieren, Addieren und Vergleichen der ganzen Zahlen finden. Wie nahe können wir der linearen Zeit die langsamste dieser drei Operationen (im schlimmsten Fall) kommen? Und in diesem Sinne, wie schnell wären die anderen Operationen?
FORMALE PROBLEMERKLÄRUNG
Wie Emil Jeřábek erwähnt, möchten wir Trivialfälle ausschließen und uns bei dieser Frage auf das Worst-Case-Verhalten konzentrieren.
Wir fragen also nach nicht negativen ganzen Zahlen und ∀ y, wobei 0 ≤ x < n und 0 ≤ y < n ist. Können wir eine Datenstruktur / einen Datenalgorithmus finden, die / der Addition, Multiplikation und Vergleich mit \ zwischen x und y durchführen kann ? in O ( n log ( n ) ) Zeit und O ( log 2 ( n ) ) Raum?
quelle
Antworten:
Wahrscheinlich nicht die beste Antwort, aber vielleicht ist dies ein nützlicher Ausgangspunkt. Wenn wir eine nicht negative ganze Zahl darstellen möchten, können wir sie als eine Reihe von Modulo-Sequential-Primzahlen mit Resten ab 2 speichern. In dieser Form ist der Vergleich möglicherweise schwierig, aber die Multiplikation und Addition kann ziemlich schnell durchgeführt werden. Das Produkt der ersten Primzahlen wird durch p n # = exp ( ( 1 + o ( 1 ) ) n log n ) approximiert . Um also eine ganze Zahl N darzustellen , benötigen Sie Reste modulo der ersten n Primzahlen, wobein
quelle