Algorytmiczne wymagania dotyczące środowiska wykonawczego dla typowych procedur matematycznych
Poniższe tabele przedstawiają złożoność obliczeniową różnych algorytmów typowych operacji matematycznych .
Tutaj złożoność odnosi się do złożoności czasowej wykonywania obliczeń na wielotaśmowej maszynie Turinga . Zobacz notację dużego O , aby uzyskać wyjaśnienie zastosowanej notacji.
Uwaga: Ze względu na różnorodność algorytmów mnożenia,
poniżej
algorytmu mnożenia .
oznacza
złożoność wybranego
Funkcje arytmetyczne
Ta tabela zawiera listę złożoności operacji matematycznych na liczbach całkowitych.
Operacja
Wejście
Wyjście
Algorytm
Złożoność
Dodatek
Dwie liczby -cyfrowe,
N
i
N
{\ Displaystyle N}
{
\
Displaystyle N}
Jedna cyfra
n + 1
{\ displaystyle n + 1}
Dodatek do podręcznika szkolnego z możliwością przenoszenia
Θ ( n ) , Θ ( log ( N ) )
{\ Displaystyle \ Theta (n), \ Theta (\ log (N))}
Odejmowanie
Dwie liczby -cyfrowe,
N
i
N
{\ Displaystyle N}
{
\
Displaystyle N}
Jedna cyfra
n + 1
{\ displaystyle n + 1}
Odejmowanie podręcznika szkolnego z pożyczką
Θ ( n ) , Θ ( log ( N ) )
{\ Displaystyle \ Theta (n), \ Theta (\ log (N))}
Mnożenie
Dwie
liczby
-cyfrowe
_
Jedna cyfra
2 n
{\ displaystyle 2n}
Podręcznik długiego mnożenia
O
(
n
2
)
{\ Displaystyle O {\ mathord {\ lewo (n ^ {2} \ prawo)}}}
Algorytm Karatsuby
O
(
n
1,585
)
{\ Displaystyle O {\ mathord {\ lewo (n ^ {1,585} \ prawej)}}}
Trójdrożne mnożenie Toom-Cook
O
(
n
1,465
)
{\ Displaystyle O {\ mathord {\ lewo (n ^ {1,465} \ prawej)}}}
k
{\ displaystyle k}
-sposób mnożenia Tooma – Cooka
O
(
n
log ( 2 k - 1 )
log k
)
{\ Displaystyle O {\ mathord {\ lewo (n ^ {\ Frac {\ log (2k-1)} {\ log k}} \ prawej)} }}
Mieszany poziom Toom-Cook (Knuth 4.3.3-T)
O
(
n
2
2 log n
log n
)
{\ Displaystyle O {\ mathord {\ lewo (n \ 2 ^ {\ sqrt {2 \ log n}} \, \ log n \ prawej)}}}
Algorytm Schönhage-Strassena
O
(
n log n log log n
)
{\ Displaystyle O {\ mathord {\ lewo (n \ log n \ log \ log n \ prawo)}}}
Algorytm Harveya-Hoevena
O ( n log n )
{\ Displaystyle O (n \ log n)}
Dział
Dwie
liczby
-cyfrowe
_
Jeden
-cyfrowy
_
numer
Podręcznik długi podział
O
(
n
2
)
{\ Displaystyle O {\ mathord {\ lewo (n ^ {2} \ prawo)}}}
Burnikel – Ziegler Dywizja „dziel i rządź”.
O ( M ( n ) log n )
{\ Displaystyle O (M (n) \ log n)}
Podział Newtona-Raphsona
O ( M ( n ) )
{\ Displaystyle O (M (n))}
Pierwiastek kwadratowy
Jeden
-cyfrowy
_
numer
Jeden
-cyfrowy
_
numer
Metoda Newtona
O ( M ( n ) )
{\ Displaystyle O (M (n))}
Modułowe potęgowanie
Dwie -cyfrowe liczby
{
całkowite
i -bitowy wykładnik za
k
\ displaystyle k}
Jedna
-cyfrowa
liczba
całkowita
Wielokrotne mnożenie i zmniejszanie
O
(
M ( n )
2
k
)
{\ Displaystyle O {\ mathord {\ lewo (M (n) \, 2 ^ {k} \ prawej)}}}
Potęgowanie przez podniesienie do kwadratu
O ( M ( n ) k )
{\ Displaystyle O (M (n) \, k)}
Potęgowanie z redukcją Montgomery'ego
O ( M ( n ) k )
{\ Displaystyle O (M (n) \, k)}
Funkcje algebraiczne
Operacja
Wejście
Wyjście
Algorytm
Złożoność
Ocena wielomianowa
Jeden wielomian stopnia
ze
rozmiarze
współczynnikami o stałym
Jeden numer o stałym rozmiarze
Ocena bezpośrednia
Θ ( n )
{\ Displaystyle \ Theta (n)}
Metoda Hornera
Θ ( n )
{\ Displaystyle \ Theta (n)}
Wielomian gcd (ponad lub
Z
[ x ]
{\ Displaystyle \ mathbb {Z} [x]}
lub
fa [ x ]
{\ Displaystyle F [x]}
)
Dwa wielomiany stopnia ze współczynnikami całkowitymi
o
rozmiarze
stałym
Co najwyżej jeden wielomian stopnia
n
{\ displaystyle n}
Algorytm euklidesowy
O
(
n
2
)
{\ Displaystyle O {\ mathord {\ lewo (n ^ {2} \ prawo)}}}
Szybki algorytm euklidesowy (Lehmer)
O ( M ( n ) log n )
{\ Displaystyle O (M (n) \ log n)}
Funkcje specjalne
Wiele metod w tej sekcji podano w Borwein & Borwein.
Funkcje elementarne
Funkcje elementarne są konstruowane przez komponowanie operacji arytmetycznych, funkcji wykładniczej ( ), logarytmu naturalnego (
log
{\ Displaystyle \
funkcji
log}
), trygonometrycznych (
sin , sałata
{\ Displaystyle \ sin, \ cos }
) i ich odwrotności. Złożoność funkcji elementarnej jest równoważna złożoności jej odwrotności, ponieważ wszystkie funkcje elementarne są analityczne , a zatem odwracalne za pomocą metody Newtona. W szczególności, jeśli albo w domenie złożonej można obliczyć z pewną złożonością, to ta złożoność jest osiągalna dla wszystkich
.
innych
funkcji
elementarnych
Poniżej rozmiar odnosi się do liczby cyfr precyzji, z jaką funkcja ma być
oceniana
.
Algorytm
Stosowalność
Złożoność
szereg Taylora ; wielokrotna redukcja argumentów (np.
exp ( 2 x ) = [ exp ( x )
]
2
{\ Displaystyle \ exp (2x) = [\ exp (x)] ^ {2}}
) i bezpośrednie sumowanie
exp , log , grzech , sałata , arctan
{\ Displaystyle \ exp, \ log, \ sin, \ cos, \ arctan}
O
(
M ( n )
n
1
/
2
)
{\ Displaystyle O {\ mathord {\ lewo (M (n) n ^ {1/2} \ prawej)}}}
szereg Taylora; Przyspieszenie oparte na FFT
exp , log , grzech , sałata , arctan
{\ Displaystyle \ exp, \ log, \ sin, \ cos, \ arctan}
O
(
M ( n )
n
1
/
3
( log n
)
2
)
{\ Displaystyle O {\ mathord {\ lewo (M (n) n ^ {1/3} (\ log n) ^ {2} \ prawo )}}}
szereg Taylora; podział binarny + algorytm bit-burst
exp , log , grzech , sałata , arctan
{\ Displaystyle \ exp, \ log, \ sin, \ cos, \ arctan}
O
(
M ( n ) ( log n
)
2
)
{\ Displaystyle O {\ mathord {\ lewo (M (n) (\ log n) ^ {2} \ prawej)}}}
Iteracja średniej arytmetyczno-geometrycznej
exp , log , grzech , sałata , arctan
{\ Displaystyle \ exp, \ log, \ sin, \ cos, \ arctan}
O ( M ( n ) log n )
{\ Displaystyle O (M (n) \ log n)}
Nie
dla funkcji elementarnych .
wiadomo , czy jest to optymalna
_
złożoność Najbardziej znaną dolną granicą jest trywialna granica
Ω
{\ Displaystyle \ Omega}
( M ( n ) }
{\ Displaystyle (M (n))}
.
Funkcje nieelementarne
Funkcjonować
Wejście
Algorytm
Złożoność
Funkcja gamma
n
{\ displaystyle n}
-cyfrowy numer
Szeregowe przybliżenie niepełnej funkcji gamma
O
(
M ( n )
n
1
/
2
( log n
)
2
)
{\ Displaystyle O {\ mathord {\ lewo (M (n) n ^ {1/2} (\ log n) ^ {2} \ prawo )}}}
Stała liczba wymierna
Szeregi hipergeometryczne
O
(
M ( n ) ( log n
)
2
)
{\ Displaystyle O {\ mathord {\ lewo (M (n) (\ log n) ^ {2} \ prawej)}}}
m
/
24
{\ Displaystyle m/24}
, dla
m
{\ Displaystyle m}
liczby całkowitej.
Iteracja średniej arytmetyczno-geometrycznej
O ( M ( n ) log n )
{\ Displaystyle O (M (n) \ log n)}
funkcja hipergeometryczna
p
fa
q
{\ Displaystyle {} _ {p} \! F_ {q}}
n
{\ displaystyle n}
-cyfrowy numer
(Jak opisano w Borwein & Borwein)
O
(
M ( n )
n
1
/
2
( log n
)
2
)
{\ Displaystyle O {\ mathord {\ lewo (M (n) n ^ {1/2} (\ log n) ^ {2} \ prawo )}}}
Stała liczba wymierna
Szeregi hipergeometryczne
O
(
M ( n ) ( log n
)
2
)
{\ Displaystyle O {\ mathord {\ lewo (M (n) (\ log n) ^ {2} \ prawej)}}}
Stałe matematyczne
poprawnych
tabela
przedstawia złożoność przybliżeń obliczeniowych podanych stałych do cyfr.
Stały
Algorytm
Złożoność
złoty podział ,
ϕ
{\ Displaystyle \ phi}
Metoda Newtona
O ( M ( n ) )
{\ Displaystyle O (M (n))}
pierwiastek kwadratowy z 2 ,
2
{\ Displaystyle {\ sqrt {2}}}
Metoda Newtona
O ( M ( n ) )
{\ Displaystyle O (M (n))}
liczba Eulera ,
mi
{\ displaystyle e}
Binarny podział szeregu Taylora dla funkcji wykładniczej
O ( M ( n ) log n )
{\ Displaystyle O (M (n) \ log n)}
Inwersja Newtona logarytmu naturalnego
O ( M ( n ) log n )
{\ Displaystyle O (M (n) \ log n)}
pi ,
π
{\ Displaystyle \ pi}
Binarny podział szeregu arctan we wzorze Machin'a
O
(
M ( n ) ( log n
)
2
)
{\ Displaystyle O {\ mathord {\ lewo (M (n) (\ log n) ^ {2} \ prawej)}}}
Algorytm Gaussa-Legendre'a
O ( M ( n ) log n )
{\ Displaystyle O (M (n) \ log n)}
stała Eulera ,
γ
{\ Displaystyle \ gamma}
Metoda Sweeneya (przybliżenie całki wykładniczej )
O
(
M ( n ) ( log n
)
2
)
{\ Displaystyle O {\ mathord {\ lewo (M (n) (\ log n) ^ {2} \ prawej)}}}
Teoria liczb
Algorytmy obliczeń teoretycznych liczb są badane w obliczeniowej teorii liczb .
Operacja
Wejście
Wyjście
Algorytm
Złożoność
Największy wspólny dzielnik
Dwie
-cyfrowe
całkowite
liczby
Jedna liczba całkowita z co
najwyżej
cyframi
Algorytm euklidesowy
O
(
n
2
)
{\ Displaystyle O {\ mathord {\ lewo (n ^ {2} \ prawo)}}}
Binarny algorytm GCD
O
(
n
2
)
{\ Displaystyle O {\ mathord {\ lewo (n ^ {2} \ prawo)}}}
Lewo/prawo k -ary binarny algorytm GCD
O
(
n
2
log n
)
{\ Displaystyle O {\ mathord {\ lewo ({\ Frac {n ^ {2}} {\ log n}} \ prawej)}}}
Algorytm Stehlégo-Zimmermanna
O ( M ( n ) log n )
{\ Displaystyle O (M (n) \ log n)}
Algorytm pochodzenia euklidesowego kontrolowany przez Schönhage'a
O ( M ( n ) log n )
{\ Displaystyle O (M (n) \ log n)}
Symbol Jacobiego
Dwie
-cyfrowe
całkowite
liczby
0
{\ Displaystyle 0}
,
- 1
{\ Displaystyle -1}
lub
1
{\ Displaystyle 1}
Algorytm pochodzenia euklidesowego kontrolowany przez Schönhage'a
O ( M ( n ) log n )
{\ Displaystyle O (M (n) \ log n)}
Algorytm Stehlégo-Zimmermanna
O ( M ( n ) log n )
{\ Displaystyle O (M (n) \ log n)}
Silnia
Dodatnia liczba całkowita mniejsza niż
m
{\ displaystyle m}
O
-cyfrowa
( m log m )
{\ Displaystyle O (m \ log m)}
liczba całkowita
Mnożenie od dołu do góry
O
(
M
(
m
2
)
log m
)
{\ Displaystyle O {\ mathord {\ lewo (M \ lewo (m ^ {2} \ prawo) \ log m \ prawo)}}}
Podział binarny
O ( M ( m log m ) log m )
{\ Displaystyle O (M (m \ log m) \ log m)}
Potęgowanie czynników pierwszych
m
{\ displaystyle m}
O ( M ( m log m ) log log m )
{\ Displaystyle O (M (m \ log m) \ log \ log m)}
,
O ( M ( m log m ) )
{\ Displaystyle O ( M(m\log m))}
Test pierwszości
ZA
n
{\ displaystyle n}
-cyfrowa liczba całkowita
Prawda czy fałsz
Test pierwszości AKS
O
(
n
6 + o ( 1 )
)
{\ Displaystyle O {\ mathord {\ lewo (n ^ {6 + o (1)} \ prawo)}}}
O (
n
3
)
{\ Displaystyle O (n ^ { 3})}
, zakładając hipotezę Agrawala
Dowód pierwszości krzywej eliptycznej
O
(
n
4 + ε
)
{\ Displaystyle O {\ mathord {\ lewo (n ^ {4 + \ varepsilon} \ prawej)}}}
heurystycznie
Test pierwszości Baillie-PSW
O
(
n
2 + ε
)
{\ Displaystyle O {\ mathord {\ lewo (n ^ {2 + \ varepsilon} \ prawej)}}}
Test pierwszości Millera-Rabina
O
(
k
n
2 + ε
)
{\ Displaystyle O {\ mathord {\ lewo (kn ^ {2 + \ varepsilon} \ prawej)}}}
Test pierwszości Solovaya-Strassena
O
(
k
n
2 + ε
)
{\ Displaystyle O {\ mathord {\ lewo (kn ^ {2 + \ varepsilon} \ prawej)}}}
Faktoryzacja liczb całkowitych
ZA
b
{\ displaystyle b}
-bitowa liczba całkowita wejściowa
Zestaw czynników
Ogólne sito pola liczbowego
O
(
( 1 + ε
)
b
)
{\ Displaystyle O {\ mathord {\ lewo ((1 + \ varepsilon) ^ {b} \ prawej)}}}
Algorytm Shora
O ( M ( b ) b )
{\ Displaystyle O (M (b) b)}
na komputerze kwantowym
Algebra macierzowa
Poniższe liczby złożoności zakładają, że arytmetyka z pojedynczymi elementami ma złożoność O (1), tak jak ma to miejsce w przypadku arytmetyki zmiennoprzecinkowej o stałej precyzji lub operacji na polu skończonym .
Operacja
Wejście
Wyjście
Algorytm
Złożoność
Mnożenie macierzy
Dwie macierze
n × n
{\ displaystyle n \ razy n}
Jedna macierz
n × n
{\ displaystyle n \ razy n}
Podręcznik mnożenia macierzy
O (
n
3
)
{\ Displaystyle O (n ^ {3})}
Algorytm Strassena
O
(
n
2,807
)
{\ Displaystyle O {\ mathord {\ lewo (n ^ {2,807} \ prawej)}}}
Algorytm Coppersmitha-Winograda ( algorytm galaktyczny )
O
(
n
2,376
)
{\ Displaystyle O {\ mathord {\ lewo (n ^ {2,376} \ prawej)}}}
Zoptymalizowane algorytmy podobne do CW ( algorytmy galaktyczne )
O
(
n
2,3728596
)
{\ Displaystyle O {\ mathord {\ lewo (n ^ {2,3728596} \ prawej)}}}
Mnożenie macierzy
Jedna
macierz
{ \ Displaystyle m
m
i jedna macierz
× p
\
razy p}
Jedna macierz
n × p
{\ displaystyle n \ razy p}
Podręcznik mnożenia macierzy
O ( n m p )
{\ Displaystyle O (nmp)}
Mnożenie macierzy
Jedna
macierz n ×
⌈
n
k
⌉
{\ Displaystyle n \ razy \ lewo \ lceil n ^ {k} \ prawo \ rceil}
i jedna macierz
⌈
n
k
⌉
× n
{\ Displaystyle \ lewo \ lceil n ^ {k} \ prawa \ rceil \ razy n}
macierz, dla niektórych
k ≥
0
{\ Displaystyle k \ geq 0}
Jedna macierz
n × n
{\ displaystyle n \ razy n}
Algorytmy podane w
O (
n
ω ( k ) + ϵ
)
{\ Displaystyle O (n ^ {\ omega (k) + \ epsilon})} , gdzie
podane są górne granice
ω ( k )
{\ Displaystyle \ omega (k)}
Inwersja macierzy
Jedna macierz
n × n
{\ displaystyle n \ razy n}
Jedna macierz
n × n
{\ displaystyle n \ razy n}
Eliminacja Gaussa-Jordana
O
(
n
3
)
{\ Displaystyle O {\ mathord {\ lewo (n ^ {3} \ prawo)}}}
Algorytm Strassena
O
(
n
2,807
)
{\ Displaystyle O {\ mathord {\ lewo (n ^ {2,807} \ prawej)}}}
Algorytm Coppersmitha-Winograda
O
(
n
2,376
)
{\ Displaystyle O {\ mathord {\ lewo (n ^ {2,376} \ prawej)}}}
Zoptymalizowane algorytmy podobne do CW
O
(
n
2,373
)
{\ Displaystyle O {\ mathord {\ lewo (n ^ {2,373} \ prawej)}}}
Rozkład według wartości osobliwych
Jedna
macierz _ _
_
_
Jedna macierz
m × m
{\ Displaystyle m \ razy m}
n
i
,
jedna
macierz jedna macierz n
× n { \ displaystyle
\ razy n}
Dwudiagonalizacja i algorytm QR
O
(
m
2
n
)
{\ Displaystyle O {\ mathord {\ lewo (m ^ {2} n \ prawej)}}}
(
m ≥ n
{\ Displaystyle m \ geq n}
)
Jedna
macierz
{ \ Displaystyle
macierz
, jedna macierz
n \
n
,
razy
jedna macierz i jedna
n × n
}
Dwudiagonalizacja i algorytm QR
O
(
m
n
2
)
{\ Displaystyle O {\ mathord {\ lewo (mn ^ {2} \ prawej)}}}
(
m ≤ n
{\ Displaystyle m \ równoważnik n}
)
Wyznacznik
Jedna macierz
n × n
{\ displaystyle n \ razy n}
Jeden numer
Rozwinięcie Laplace'a
O ( n ! )
{\ Displaystyle O (n!)}
Algorytm bez dzielenia
O
(
n
4
)
{\ Displaystyle O {\ mathord {\ lewo (n ^ {4} \ prawo)}}}
rozkład LU
O (
n
3
)
{\ Displaystyle O (n ^ {3})}
Algorytm Bareissa
O
(
n
3
)
{\ Displaystyle O {\ mathord {\ lewo (n ^ {3} \ prawo)}}}
Szybkie mnożenie macierzy
O
(
n
2,373
)
{\ Displaystyle O {\ mathord {\ lewo (n ^ {2,373} \ prawej)}}}
Zmiana z powrotem
Macierz trójkątna
rozwiązania
n
{\ displaystyle n}
Zmiana z powrotem
O
(
n
2
)
{\ Displaystyle O {\ mathord {\ lewo (n ^ {2} \ prawo)}}}
W 2005 roku Henry Cohn , Robert Kleinberg , Balázs Szegedy i Chris Umans wykazali, że każda z dwóch różnych hipotez sugerowałaby, że wykładnik mnożenia macierzy wynosi 2.
Transformuje
Algorytmy obliczania przekształceń funkcji (zwłaszcza przekształceń całkowych ) są szeroko stosowane we wszystkich dziedzinach matematyki, aw szczególności w analizie i przetwarzaniu sygnałów .
Notatki
Dalsza lektura