Ich spiele mit der .NET BigInteger herum und frage mich im Grunde, welche Zahl - eine geschätzte Antwort wäre in Ordnung - der Punkt der Abweichung der Kurve von (der Graph von (für Operationen erforderliche Zeitzunahme ) vs (Wert von BigInteger))?
oder sind sie so konstruiert, dass sie eine glatte Kurve haben, wenn wir den Anstieg der für Operationen benötigten Zeit gegen den Wert von BigInteger von 1 bis unendlich zeichnen?
Angenommen, Arrays sind für die Verarbeitung von 50 Elementen ausgelegt. Dies bedeutet, dass, wenn ich 1 Element habe, Operationen f (1) Zeit sind. und wenn ich 2 Einzelteile habe, sind Operationen f (2) Zeit. Wenn ich 50 Elemente habe, sind Operationen f (50) Zeit. Da es jedoch nur für die Verarbeitung von 50 Elementen ausgelegt ist, sind die Operationen, die ausgeführt werden, wenn 51 Elemente vorliegen, g (51), wobei g (51)> f (51).
Bei richtiger Implementierung sollte die Komplexität der BigInteger-Arithmetik eine glatte Kurve sein. Zum Beispiel sollte die zeitliche Komplexität der Multiplikation O (NM) sein, wobei N die Anzahl der Stellen im ersten Multiplikanden und M die Anzahl der Stellen im zweiten Multiplikanden ist. Natürlich gibt es praktische Grenzen, in denen Sie N und M so groß wählen können, dass die Zahlen nicht in Ihre Maschine passen.
Gibt es / kennt jemand Dokumente, die behaupten, dass sie als solche implementiert sind?