Badanie pierwszości liczby, klasa NP i test Rabina Mateusz Chynowski 11 stycznia 2009 Liczby pierwsze są bardzo istotne zarówno w matematyce, jak i informatyce. W tej drugiej nauce istnieje dość poważny problem niepewnych wyników. Najczęstszymi zagadnieniami dotyczącymi liczb pierwszych są: problem pierwszości odpowiadający na pytanie: Czy dana liczba jest pierwsza? problem złożoności odpowiadający na pytanie: Czy dana liczba jest złożona? W algorytmach zwykłych oba rodzaje problemów nie różnią za bardzo. Rozwiązując jedeno z zagadnień rozwiązujemy tym samym drugie. Inaczej jest z algorytmami niedeterministycznymi, czyli takimi, których działania nie możemy przewidzieć. Zawiera ona najczęściej instrukcję choise. Algorytmy losowe należą do algorytmów niedeterministycznych. Zwykłe algorytmy badające pierwszość są wykładnicze. Najłatwiej przekonać się o tym badając pierwszość z definicjii Definicja 1 Liczba pierwsza liczba naturalna większa od 1, która ma dokładnie dwa dzielniki naturalne: 1 oraz samą siebie. Sprawdzamy zatem, czy dana liczba n nie jest podzielna przez żadną z liczb z przedziału [2;n 1].Dlaliczbyzłożonejzkcyfrton 10 k 1.Badaniewymagałoby10 k 1 2 działań. Jak widzimy liczba dzieleń wzrasta wykładniczo do wzrostu długości liczby n. Warto wspomnieć, że sito Eratostenesa jest jeszcze gorsze. Wykonuje on wykładniczą liczbę operacji, wykorzystuje on także pamięć wykładniczo. Rysunek 1: Vaughan Robert Pratt W 1975 roku Vaughan Robert Pratt stwierdził, że problem pierwszości należy do klasy NP. Klasę NP tłumaczy się efektywniej przez wprowadzenie definicji klasy P. 1
Definicja 2 Klasa P rodzina problemów, których rozwiązanie wyliczamy w czasie wielomianowym. Tym samym Definicja 3 Klasa NP rodzina problemów, których rozwiązanie wyliczane jest algorytmem o czasie wykładniczym, zaś sprawdzenie poprawności wyniku w czasie wielomianowym. Formalna deficicja klasy NP: Jeżeli problem A należy do klasy NP oraz istnieje wielomian ω i wielomianowy problem B takie, że: m A k r(k) ω(r(m)) <m,k> Bgdzier(m) rozmiarliczbym.problemy bardziej skomplikowane nie należą do klasy NP to znaczy te problemy, których rozwiązanie jest bardziej szczegółowe od tak lub nie (np. znalezienie dzielników). Informatycy badają czy klasa problemów P jest równoważna klasie NP. Wystarczyłobywskazaćjedynie,żekażdyproblemzklasyNPdasięrozwikłaćalgorytmemzklasyP. Mimostarańwiększościnformatykówjestzdania,żeP NP. Do dalszych rozważań potrzebować będziemy potrzebowali definicji pierwiastka pierwotnego: Definicja4Pierwiastekpierwotnymodulon liczbazprzedziału<1,n 1>,której potęgimodulondająwszystkieliczbyz<1,n 1>. Przykład 1 Podnieśmy 2 do kolejnych potęg modulo 5: 2 1 (mod5)=2 2 2 (mod5)=4 2 3 (mod5)=3 2 4 (mod5)=1 Liczba 2 jest pierwiastkiem pierwotnym modulo 5. Zaś: Przykład 2 Sprawdźmy czy 2 jest pierwiastkiem pierwotnym modulo 7: 2 1 (mod7)=2 2 2 (mod7)=4 2 3 (mod7)=1 2 4 (mod7)=2 2 5 (mod7)=4 2 6 (mod7)=1... Jak widzimy 2 nie jest już pierwiastekiem pierwotnym modulo 7. 2
Zachodzi Twierdzenie1Liczbanaturalnam>1jestpierwszawtedyitylkowtedy,gdywZ m istnieje pierwiastek pierwotny modulo m. Zatem możemy dość sprawnie decydować czy dana liczba jest pierwsza czy złożona sprawdzając tylko czy istnieje pierwiastek pierwotny. Badaniem czy a jest pierwiastkiem pierwotnym modulo m zajmuje się test Lucasa, który sprawdza: czya m 1 1 (modm)oraz czy q (m 1) q P a m 1 q 1 (modm) Definicja 5 Certyfikatem pierwszości liczby n nazywamy ciąg danych świadczących o pierwszości liczby n. Test Lucassa pokazuje, że certyfikatem liczby n może być ciąg danych złożony z pierwiastka pierwotnego modulo n oraz wszystkich dzielników liczby n 1. Nie jest to jednak najlepszy certyfikat, gdyż powinien on obejmować test pierwszości dzielników. Pratt zauważył, że jeżeli niepełny certyfikat Lucasa uzupełnimy o niepełne certyfikaty pierwszości wymionionych w nim liczb pierwszych, a także o niepełne certyfikaty liczb pierwszych w dołączonych certyfikatach itd., to cerrtyfikat pierwszości stanie się pełny. Rysunek 2: Leonard Adleman Przykład 3 Certyfikatem pierwszości liczby 23 jest: (5,2,11(2,2,5(3,2))),gdyż5jestpierwiastkiempierwotnymmodulo23,22=2 11.2jest liczbąpierwszązdefinicji.2jestpierwiastkiempierwotnymmodulo11oraz10=2 5. Analogicznie3jestpierwiastkiempierwotnymmodulo5,a4=2 2. Inne algorytmy badające pierwszość: 1976 rok Gary Miller przedstawił test pierwszości w oparciu o hipotezę Riemanna, który został odrzucony 1983 rok Adleman, Pomerance, Rumeley 2002 rok Manindra Agraval wraz zuczniami podali I deterministyczny test pierwszości, który nie jest wykładniczy, ale nie jest też jeszcze wielomianowy podali deterministyczny, wielomianowy test pierwszości 3
Rysunek 3: Manindra Aragraval Twierdzenie 2(M. Agravala) Przyjmijmy, że liczby naturalne m i a są względnie pierwsze.liczbamjestpierwszawtedyitylkowtedy,gdywielomian(x a) m owspółczynikachzpierścieniaresztmodulomjestrównywielomianowix m a. Autorom testu kłopty sprawiło wykazanie wielomianowości algorytmu. Ostatecznie pokazali,żedlaliczborozmiarzenalgorytmwykonujeconajwyżejc n 12 operacjidlapewnego c = const. Ciężko jest znaleźć jednak zastosowanie praktyczne wyniku prac Agravala. Wykorzystanie algorytmów probabilistycznych wymaga zupełnie innego sposobu myślenia otrzymujemy odpowiedź nie lub najprawdopodobniej tak. Taka rodzina algorytmów jest bardzo szybka, jednak za cenę możliwliwości popełnienia błędu. Michael Rabin w 1980 roku podał jeden z najbardziej znanych losowych testów pierwości. Rysunek 4: Michael O. Rabin 4
MichealOserRabinurodziłsięw1931rokuwBreslauwNiemczech (dzisiejszy Wrocław). Przed ukończeniem ósmego roku życia przeniósł się do Palestyny. W 1953 roku ukończył studia matematyczne na Uniwersytecie Hebrajskim w Jerozolie. Rabin brał udział w kreowaniu teorii złożoności obliczeniowej. KształtowałpojęcieklasyNP.W1976rokuzostałzatouhonorowanywrazz Dana Scott nagrodą Turinga. Osiągnięcia ma również w kryptografii. Michael Rabin otrzymał tytuł doktor honoris causa na wielu uniwersytetach, także na Uniwersytecie Wrocławskim. Uroczyste nadanie tytułu odbyłosię13lipca2007roku. Rozważmy test Fermata(dla danej liczby m): wylosujmya<misprawdźmyczya m 1 1 (modm) jeśli tak m prawdopodobnie jest liczbą pierwszą, jeślinie mjestliczbązłożoną Algorytm ten jest algorytmem Monte Carlo. Przy wielokrotnym powtarzaniu algorytmu M-C prawdopodobieństwo błędu dąży do 0. Twierdzenie 3 Liczba Carmichaela Liczba naturalna n jest liczbą Carmichaela wtedy i tylko wtedy, gdy: 1. n jest liczbą złożoną, 2. a N 1<a<n a n, liczba(a n 1 1)jestpodzielnaprzezn. Definicja 6 Algorytmy Monte Carlo rodzina algorytów probabilistycznych, których prawdopodobieństwobłędujestmniejszeodc=const,takiejżec<1. RozważmyliczbęCarmichaelam=p q r.istnieje(p 1) (q 1) (r 1)liczbwzględniepierwszychzm,zatemprawdopodobieństwobłęduP (p 1) (q 1) (r 1). Ze wzrostem p q r 1 liczbp,qorazrp 1,zatemtestFermataniejestalgorytmMonteCarlo. Twierdzenie Fermata musimy uzupełnić o informacje o liczbach pierwszych. Gary Miller w algorytmie skorzystł z: Twierdzenie 4 Jeżeli m jest liczbą pierwszą, to każda liczba x, której kwadrat przystaje do1,przystajemodulomdo 1,albodo1. Każdyznatotwierdzeniezrozwiązaniarównaniax 2 =1 x= 1 x=1. W dalszych rozważaniach potrzebne nam będzie: Twierdzenie 5 Jeżeli a 0<a<m a m a m 1 1 (modm),oraz x 2 1 (modm)tylkodlax 1 (modm) x 1 (modm), 5
to m jest liczbą pierwszą. Połączmy to twierdzenie z poprzednim oraz z twierdzeniem Fermata. Liczba a świadczy o pierwszości m, jeżeli: a n 1 (modm),lub a 2i n 1 (modm),i N,i<k. Pojęcie świadczenia o pierwszości pozwala na wprowadzenie twierdzenia: Twierdzenie 6 Liczba m jest pierwsza wtedy i tylko wtedy, gdy każda dodatnia liczba a<mświadczyopierwszościm. Michael Rabin zaproponował na bazie powyższego twierdzenia test pierwszości m: wylosuja N 0<a<misprawdź,czyświadczyopierwszościm, jeżeli świadczy, to przekaż, że m jest prawdopodobnie liczbą pierwszą, w przeciwnym razie przekaż, że m jest liczbą złożoną. AlgorytmRabinapopełniabłądnajwyżejzprawdopodobieństwem 1 2,zatemjesttoalgorytmMonteCarlo.Jeżelimjestliczbązłożonątonajwyżej 1 4 liczbświadczyopierwszości m(oczywiście mniejszych od m). Zatem prawdopodobieństwo błędu spada dwukrotnie. Po t-krotnym powtarzaniu testu Rabina otrzymamy prawdopodobieństwo błędu nie przekroczy 1 4 t. 6