Was ist der effizienteste Algorithmus (in Bezug auf die zeitliche Komplexität), der heutzutage für das Divisibitätsentscheidungsproblem bekannt ist: Wenn zwei ganze Zahlen und , ist Division von ? Es sei klargestellt, dass das, wonach ich bitte, kein (notwendiger) Algorithmus für die Restberechnung ist. Ich möchte nur wissen, ob b teilt oder nicht. Als spezifischere, ist meine Frage , ob einige der jüngsten Algorithmus für Teilbarkeit mit Zeitkomplexität besser als existiert oder nicht O ( m log m log log m ) , wobei m die Anzahl der Bits ist. Ist die untere Grenze dieses Problems?
Danke und Grüße, und tut mir leid, wenn dies eine so naive Frage ist.
time-complexity
lower-bounds
nt.number-theory
primes
Leandro Zatesko
quelle
quelle
Antworten:
Meine Kommentare zu einer Antwort zusammenfassen: Da die Teilbarkeit (trivial) auf die Teilung und die Teilung (nichttrivial) auf die Multiplikation über Ansätze wie Newtons Methode reduziert werden kann, sollte Ihr Problem dieselbe zeitliche Komplexität haben wie die ganzzahlige Multiplikation. AFAIK, es gibt keine bekannteren Untergrenzen für die Multiplikation als die triviale lineare, daher sollte das Gleiche für Ihr Problem gelten - und insbesondere, da bekannt ist, dass die Multiplikation (im Wesentlichen) Algorithmen, Ihre Hoffnungen auf eine Untergrenze sind mit ziemlicher Sicherheit vergebens.O ( n logn log∗n ) n logn logLogn
Der Grund, warum sich die Komplexität der Division genau auf die Multiplikation reduziert - so wie ich es verstehe -, ist, dass Newtons Methode eine Folge von Multiplikationen mit unterschiedlichen eskalierenden Größen ausführt; Dies bedeutet, dass, wenn es einen Algorithmus zur Multiplikation mit der Komplexität die Komplexität eines Divisionsalgorithmus, der diesen Multiplikationsalgorithmus als Zwischenschritt verwendet, entlang der Linien von - und für alle diskutierten Komplexitätsklassen ist dies nur .Θ ( f( n ) ) Θ ( ∑lgnk = 0f( n2k) ) Θ ( f( n ) )
quelle
Ich denke, es gibt vedische Arten von Hacks für einige Zahlen, die mit 3,7 enden. Oder Basis 2 ^ n Divisoren ...
Aber im Allgemeinen scheint der schnellste Teilungsalgorithmus die Norm zu sein.
Das beste, das ich kenne, ohne es zu studieren, ist Algorithmus D von Knuths seminarischen Methoden. Es läuft in mehr oder weniger O (mn-n ^ 2), wobei m und n die Dividende und der Divisor sind ... ohne Berücksichtigung der Multiplikationskomplexität ...
Eine Untergrenze könnte jedoch überraschend niedrig sein, da sich Ihre Frage nur mit dem Entscheidungsproblem befasst.
quelle