TẠP CHÍ KHOA HỌC ĐẠI HỌC SÀI GÒN
Số 10 (35) - Tháng 12/2015
g
A randomized algorithm solving the problem of deciding a prime
TS. Nguyễn Hòa
Trường Đại học Sài Gòn
Ph.D. Nguyen Hoa
Sai Gon University
Tóm tắt
n
n
g
n
n
n
ư
r
ạ
ng
g
n
g n
g
ư
n
ạ
n
ng
ng
r n
n
n
n
g
n
n
ng
ng
ng n
n n
ng
g
ạ
ng n ư
ng
n r n ng
n
n n ng n
Fermat
n
ng
n n ng
ng
n ư
ư ng r n
ng
n n
n
n n ng n
g
ng n n
ờ
…
:
Abstract
This paper introduces a randomized algorithm for solving the problem that decides whether a
natural number is a prime or not. The algorithm is designed on the b
f Fer ’
e e re w
a set of random tests that is quite small and a optimized procedure to compute the power of a natural
number by applying two strategy of the divide and conquer and the dynamic programming. We also
implement a program for testing and comparing the performance of the randomized algorithm supposed
and the classical algorithm when deciding whether a natural number is a prime or not. The result of
analyzing the complexity of the algorithm as well as making real experiments have proven the
randomized algoritm is better than the classical algorithm on the same input data set.
Keywords: probability, randomized algorithm, natural number, prime…
ng
ng
1. Giới thiệu
N ư
ng
ổđể
(classical algorithm)
ng
ng n
nn
ng
n
n n r ng ([1], [2] [4]) T n
n
n
n
r n
g
ạ n n
ng
g
n
ng
ng
r ng
n
ng n
58
ĩn
ạn
n
g
ư
ng
năng
n
n
g
ng n
,
ng ư
ỉ
g
òn
ẽ,
ng
ng ồn ạ
n
n
n ư
T e
ặ r
n
ễn
n
,
n
g
n
n [4] ư
r n
ng ng n ư
a để rị (divideand-conquer), b ế đổ để rị (transformand-conquer), q
oạ
độ
( n
r gr
ng),
n
g
ạ
ờ g n
n ng
n
n
g
n
ỉ ng ư
r n
ng
ờ g g n ng
n
ng
g
ạ
ng
ạn
n
rn
n ng n
n
r ng ồ
rọng
ỉ
ư
g
ng
(a r
n g r
)
ỉn
ồ
n
Mặc dù gi i thu t x p xỉ là m t công
c t
ờ g g n ng
toán
ng
g
ờ g n
, n ưng
ng
ng
ư ng
ti n
c i thi n
ph c tạ
ờ
g ( ng)
n
g i thu t
c nh m nâng cao hi u qu t ng th
c a các ng d ng th c t Đ kh c ph c
hạn ch c a các gi i thu t c
n nói
chung và gi i thu t x p xỉ nói riêng, các
gi i thu t ng u nhiên (randomized
algorithm)
ư c nghiên c u và phát
tri n ([2], [5], [6]), nh m gi
ph c tạp
v thời gian gi
n, n ư
t gi i pháp
thay th .
Gi i thu t ng u nhiên là gi i thu
ng
p d li u ng u nhiên trong
ti n trình th c thi các dòng l nh c a nó ([2].
H qu là trong các gi i thu t ng u nhiên,
các l nh có th ư c chọn ng n n
th c hi n, d n n tính k ô
đơ định
(nondeterministic) c a gi i thu
làm gi
ph c tạp c n Tr ng
n ,
ng
g
ng n n g
n
n
nn
n
ng
n n
m
ng
O(mlog2 n),
rư
n ,
n[ ]
n
ng n n ư
ng
ư
n 1
n
Input
Input
1
59
ng
ạ
ọn
ư
n
g
ạ
ặ O(n).
ặ rưng
g
rn
r ng
n 2,
ạ
n
rn
r ng
n
ng
n
r n
g
ng n n
n
ư ng ng n
r ng
n
ư
n 4 rn
ờ g n ạ
n
n
ư ng
. Gi i thu t
u
G
algorithm)
n ư
ng
R n nă 19
ặ
g n n
n n ([ ], [6])
n r ng
ọ
g
ng
g
ng
2.1.
ng n ư g
ỗ ư
n ư
n, r ng g
ư
ư
g
n
hi
(randomized
ng n
6
g
n
ạ
n
ễn
ư
ng n n
n
r
n
n
ng,
ng n n, ỗ
ọn ng n n
n ng n n
ng
g
g
ng
n
Classical Algorithm
Randomized Algorithm
Random
mput
g
n
Output
Output
Đị h
hĩa .1.1. G
nhiên
g
r ng
ư
n ư
ọn
n ng n n
r n
ư
n ng n n
Ví dụ .1.1.
r n
ng A,
B
C
n r n
ng n n ư
[ ]
n
r
r nC
r n uông A B hay không.
MatrixEqualityTest(A, B, C, k)
1 for i1 to k do
2 Choose r← (r1,...,rn)T at random with
ri {0,1}, i = 1,…, n
3 Compute C · r and A · (B · r)
4 if C · r ≠ A · (B · r)
5 then return false
6 return true
k
n n ư
ọn
rư
ng ư
n. R r ng g
ờ g n ạ (kn2).
nn ,g
r
g r
ng
k
( r e)
n 1-(1/2) T
n A.B C thì D = A.B-C 0
ng
n
ng
, g
d11 0
ặ
,
Pr(A.B.r = C.r) = Pr((A.B-C).r = 0) =
Pr(D.r = 0) N D.r = 0
n
n
D.r ng 0 Ng ĩ
j=1, n d1jrj =
0. Vì d11 0 nên ta có
r
Veg
n ư
ư
n
ng ĩ n ư
([2])
Đị h
hĩa . .1.
g
ne r
g
ng n n
ờ g n ạ
n
n
n n ưng
n
ng
n n r ng V
211
g
ne
r
ờ g n ạ
n
(kn2)
n
n
(1/2)k.
Đị h hĩa . . .
g
Veg
g
ng n n
n
ư r
ng, n ưng ờ g n ạ
g r ng n n
ỗ n
n
n
Ví dụ . .2
ng
n n
Randomized-Quicksort(A, p, r)
A[p], …, A[r] ăng n
g
Veg
Randomized-Quicksort(A, p, r)
1 if p
2 q Randomized-Partition(A,p,r)
3 Randomized-Quicksort(A,p,q-1)
4 Randomized-Quicksort(A,q+1,r)
Tr ng
R ndomized-Partition(A,p,r)
g
ng n n
n ạ
A[p], …, A[r]
n
n
ỗ
n
ư ng ng
ng n
n ặ
ng A[q]
n n A[q] n ư
Randomized-Partition(A,p,r)
1 i←R n
(p,r)
2 Exchange A[r] with A[i]
3 return Partition(A,p,r)
, i
ng n ư
ọn
ng n n r ng
ng [p, r]
ng
R n
(p,r)
Partition(A,p,r)
g
n
n
n ạ
ọn ư i.
Partition(A,p,r)
1 x A[r]
2 i p-1
N
n
rj r r1 ,
ng
r n
n
n
ọn
r1{0, 1} V
, r(A.B.r = C.r) 1/2.
Vòng ặ
n k n N C = A.B thì
g
n
n ng N C A.B,
g
r
g r
ng
k
n
1-(1/2) .
2.2. Phâ loạ á
ng n
ạ ư ng ng gọ
n ư
g
n
ne
60
3 for j p to r - 1
4
do if A[j] = x
5
then i i+1
6 Exchange A[i] with A[j]
7 Exchange A[i+1] with A[r]
8 return i+1
ư
r ng, g
R n
e Quicksort(A,p,r)
ỉ
g
Quicksort(A,p,r)
n [1]
ọn ng n n
n n i [p, r]
A[i] cho A[r]
n
ng ĩ
ạ
năng
rư
n n ờ g n
ạ
n
(n2),
n = r-p 1
n
V
, g
Randomized-Quicksort(A,p,r)
n
n
ạ
ng Ng
r , n ư
n
r ng [1], ờ g n
ạ
g
Randomized-Quicksort(A,p,r)
n
r ng ỗ n
n ưng r ng
n
(nlog2n) N ư
,g
ng
nhiên Randomized-Quicksort(A,p,r)
g
Veg
. Gi i thu t
u hi
ị h
u
t
n
g
n
n
n nn
ng n
ng
r n
r n có chia
2 n hay không
[7]. Tr ng
nn ,
ng
ng
g
ng n n
n g
n Trư
ng
g
n
n Fer
r ng [ ] n ư
g
ng n n n .
Đị h lý .1. N n
ng n
k ng ồn ạ i, j n, (i ≠ j) sao cho ia mod
n = ja mod n.
n ngư
ạ
ij
mod n
i =j T
r X = {1,
2,…, n-1}
a.2a...(n-1)a [1.2...(nn-1
1)] mod n. Hay a 1 mod n.
V ư
r ng an-1 mod n = 1 an
mod n = a,
ng
g
ng n n ng
ọn ng n n k
n n a {2, 3,.., n-1}
m tra e
n
n
n
Fermat hay không. N
a
n
ng
a mod n = a
n
ng
ng n , ngư
ạ g
r
g
r
ng ( r e)
e n
ng n
1 k n-1.
n ư
.
PrimeNumberTest(n, k)
1 if n mod 2 = 0
2 then return false
3 for i1 to k do
4
a Random(2,n-1)
5
q Power(a,n) mod n
6
if qa
7
then return false
8 return true
Tr ng , g
Power(a,n) n an.
Ví dụ .1. Khi n = 9, ọn k =3, g
n
r
n
ọn ng n n a =
n
9
7,
a mod n = 7 mod 9 = 8 a, g
r
f e, 9
n =13,
ọn k =3, g
n
r
n
n
ọn ng n n a = 9,
a mod n = 913
mod 13 = 9 = a.
n
ọn ng
n
13
nhiên a = 10,
a mod n = 10 mod 13 =
10 = a.
n
r
ọn ng
n
13
nhiên a = 8, th a mod n = 8 mod 13 = 8
=a
n
r g
ng
r
f e,
,g
r
true, 1
ng n
n
ng
n
ng n
n
ọ
a
,
an-1 1 (mod n),
ọ a Z n* =
{1, 2, . . . , n - l}.
h
mi h
X = {a mod n,
2a mod n, … , (n-1)a mod n} R r ng
k ng
n
n
X ng 0
a
ng n
ng n
n
n n ,
61
{2, ,…, n−1}, an−1 ≡ 1 (mod n). Trong
rường
n
Carmichael (
n
n n
n Fer )
n
n
n
ng
n−1
luôn có
ọ
a {2, ,…, n−1}, a
≡ 1 (mod n).
ng, g
(
r ng n
ng n )
khi n
n
n
k
ng (1/2) V
,
ng
g
n n
ng 1-(1/2)k
ng
n
ng
r ng
khi n
n, ọn k = 10
(g
ạ
ng
ng n
10
n 1-(1/2) 0.99902 khi n
và
n
ng
r
e)
T ờ g n ạ
g
n ,
n
ờ g n ạ
g
Power(a, n) n
n
n n a. Đ g
ng
n ư
r
ạ
ng
n
n
na n ư
Power(a,n)
1 if n = 0
2
then return 1;
3 u Power(a, n/2);
4 if n mod 2 = 1
5
then return u * u * a;
6
else return u * u;
ọ T(n)
ạ
Power(a,n)
g
r .
ng
ư
r ng,
n
Power(a, n/2)
ư
n ạ u
òng
r n
ờ gọ
r ng
òng 4 ặ
r
q
ạ
ng N
ng
ng òng
gọ r
ờ gọ
òng
ặ 6
ạ
Power(a,
n/2)
(n)
ng
( g2n) .
á
n n , rn
ư ng r n
ư
ng
n
nhiên n
ng n
ng
r n g
ng n n
rn
r n
ng
ng n
g
n
ạ
r
n
ng n
ng
ng
ờ
g n ạ
g
ng n n
r n ng
n
ồ
Tr ng g
ng n n
rn
r n,
n
r
r
n(
n n),
r ng
ng n ng
ng
n
ư
V
ng
lớ
lớ (BigInteger class, [8]),
n
ng
gIn eger
ng
n
n , -, *, /, %,
>>, <<, ==, !=, >, <, >=, <=, &, |, ^, ++, -~ r n ng n n
O(1), n 0
T (n / 2) O(1), n 0
T(n) =
ng n
T(n) = O(log2n) T
g
r
n
ng
(k log2n) R
k ư
ọn rư
10, ờ g n
ạ
n nn
nn
ờ
g
n
ne
4.1.
er r ng [ ]
ờ g n ạ
ng n
r ng,
n n,
n
ng
g
ng
g n ạ
n
ạ
n
ư ng r n n ư n
ng
ẽ n
ạ Input number (1), sau
n Classical (2) (
n
ng n
e
ư ng
n) ặ
Fermat ( ) (
n
ng n
e
g
ng n n) N
r
e
g
ng n n, ư ng r n ẽ
4.1 Đ
n n
62
n
ng
r )
T
ng
n
e ,
r
n
n
k (k
ư ng r n ẽ
n
(n
r (4);
h 4.1: Gia diệ
4.2.
N ư
rn
g
ng n
n Fermat
n
là O(k.log2n), r
ạ
g
n n là
.
ng 4 2
ễn
r n
ng
ng n n
ng n
ờ g n ạ
n n nn
n
a h
n
n
T ờ g n ạ
r ( )
ẽ ồ
n
ồ
ẽ ạ ồ
Clear all (7).
t
h
n
n, ặ
ị h
ạ
r n
n ng
ng
n
g
ờ g n
n
ng
n
n ư
r n
g
ường
ng
ờ g n
e
ễn
nhiên
ng
ạ
g
n R r ng e
g
g
ng
63
n
n
r
n
e
u
r e n –
r (6)
ng
ờ g n ạ
n
t
n n
ng 4.2
ng, ư ng r n ẽ ư
ồ
4.2 Tr ng n n , ường
ường
ễn ờ g n ạ
n, ường
ư là
ễn ờ g n ạ
g
ên.
nn , ễ
r ng
ạ (
ễn
r
ng)
n
n n(
n )
g
ng
n
n g
n
B
4.2:
h thời ia
hạ
c i i thu t
ị h
u
t
S n
K t qu khi th c hi n b ng gi i
thu t c
n
K t qu khi th c hi n b ng gi i
thu t ng u nhiên
68718952447
11613
5878
274876858367
23080
2436
4398042316799
92118
3716
h . Đ thị
h thời ia
5. t lu
Tr ng
n ,
ng
g
ng n n
r
n n
ng n
ng
Monte Carlo.
ư ng r n
ng
n
ng ng
g
n T
n g
ạ
ng n ư
ng
, g
n n
n n
n
Tr ng
ư
e ,
ng
n
n ư ng
hạ
a
i i thu t
ọn
g
g
ng
ư
g
r
ng
g
ị h
u
t
n
k
n
ng n
g
ng n n ạ Las Vegas
g
ng n n
Ng
r ,
ng
ng ẽ
ng
g
ng n n
n
n ư
n n ,
ặ
g nn
n
TÀI LIỆU T AM
ẢO
1. Cormen, T.H., Leiserson, C.E., Rivest, R.D.,
Stein, C. (2009), Introduction to Algorithms,
McGraw-Hill Book Company.
ẽ
64
2. Karp, R.M. (1991), An introduction to
randomized algorithm, Discrete Applied
Mathematics, 34, 165-201.
3. Lee, R.C.T., Tseng, S.S., Chang, R.C., Tsai,
Y.T. (2005), Introduction to The design and
Analysis of Algorithms: A Strategic Approach,
McGraw-Hill Education.
4. Levitin, A. (2014), Introduction to The design
and Analysis of Algorithms, Addison-Wesley.
5. Mitzenmacher, M., Upfal, E. (2005),
Ng
n n
: 12/10/2015
n
Probability and Computing Randomized
Algorithms and Probabilistic Analysis,
Cambridge university press.
6. Motwani, R., Prabhakar, R.P. (1995),
Randomized
algorithms,
Cambridge
university press.
7. Rosen, K.H. (2014), Discrete Mathematics
and Its Applications, Prentice Hall Inc.,.
8. 20/7/2015.
ng: 15/12/2015
65
ăng: 20/12/2015