Bawię się z .NET BigInteger i zasadniczo zastanawiam się, jaka liczba - szacunkowa odpowiedź byłaby dobra - jest punktem odchylenia krzywej (wykres (wzrost czasu wymaganego do operacji) w porównaniu do (wartość BigInteger))?
czy są zaprojektowane bez takich odchyleń, że jeśli wykreślimy wzrost czasu wymaganego do operacji względem wartości BigInteger od 1 do nieskończoności, będziemy mieli gładką krzywą do końca?
na przykład przy założeniu, że tablice są zaprojektowane z możliwością obsługi 50 elementów. oznacza to, że jeśli mam 1 element, operacje są wykonywane w czasie f (1). a kiedy mam 2 elementy, operacje trwają f (2). jeśli mam 50 pozycji, operacjami są czas f (50). ale ponieważ jest przeznaczony do obsługi tylko 50 elementów, operacje wykonane, gdy będziemy mieli 51 elementów, będą miały wartość g (51), gdzie g (51)> f (51).
Przy prawidłowym zastosowaniu złożoność arytmetyki BigInteger powinna być gładką krzywą. Na przykład złożoność czasowa mnożenia powinna wynosić O (NM), gdzie N jest liczbą cyfr w pierwszym mnożniku, a M jest liczbą cyfr w drugim mnożniku. Oczywiście istnieją praktyczne ograniczenia, w których możesz wybrać N i M tak duże, że liczby nie zmieściłyby się w twoim komputerze.
Czy jest jakiś / czy ktoś wie o jakichkolwiek dokumentach twierdzących, że jest on zaimplementowany jako taki?