Tải bản đầy đủ (.pdf) (8 trang)

Một giải thuật ngẫu nhiên giải bài toán xác định số nguyên tố

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (629.57 KB, 8 trang )

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),

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 i1 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

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 p2 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

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ư

ij
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 i1 to k do
4
a Random(2,n-1)
5
q Power(a,n) mod n
6
if qa
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

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



×