1. Trang chủ
  2. » Công Nghệ Thông Tin

bài giảng môn lý thuyết tính toán - ch5 tính ngẫu nhiên trong thuật toán

15 387 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 460,04 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

- Quét lại danh sách con trên băng 1, chép các phần tử < trục quay vào băng 4.. - Chép băng 4, rồi băng 5 vào vị trí của danh sách con trên băng 1 và đặt một dấu ngăn cách giữa các dãy c

Trang 1

Chương 5 TÍNH NGẪU NHIÊN TRONG TÍNH TOÁN

5.1 Máy Turing ngẫu nhiên và các vấn đề liên quan

5.2 Thuật toán thử Monte-Carlo

5.3 Tính ngẫu nhiên và độ phức tạp

5.4 Tính giả ngẫu nhiên

5.5 Mật mã

T ÀI LIỆU THAM KHẢO

1 Bài giảng về cơ sở tính toán tại địa chỉ http://www.cs.bu.edu/~lnd/toc/

2 Dexter C Kozen Theory of Computation Springer, 2006

3 Michael Sipser , Introduction to the Theory of Computation, 2nd edition,

Couse technology 2005

4 John E Hopcroft, Rajeev Motwani, Jeffrey D Ullman, Introduction to Automata

Theory, Languages, and Computation (2nd Edition), Addison Wesley, 2000

Trang 2

5.1 Máy Turing ngẫu nhiên và các vấn đề liên quan

5.1.1 QuickSort: Một ví dụ về thuật toán ngẫu nhiên

Đặt bài toán: Cho một danh sách (a) gồm n phần tử a1, …, an Cần sắp xếp (a) theo thứ tự không giảm

Nội dung QuickSort:

- Chọn ngẫu nhiên một phần tử x = ai, gọi là trục quay (Privot)

- Chia (a) thành 3 danh sách con: (1) gồm các phần tử < x, (2) gồm các phần

tử = x, (3) gồm các phần tử > x

- Sắp xếp không giảm từng dãy con

Độ phức tạp tính toán theo thời gian là O(nlogn)

5.1.2 Mô hình máy Turing có dùng tính ngẫu nhiên

Máy Turing ngẫu nhiên RM (randomized Turing Machine) gồm:

- Một bộ phận điều khiển hữu hạn và đa băng

- Băng 1 giữ Input

- Băng 2 (Băng ngẫu nhiên-Random Tape) gồm số 0 hoặc 1 tại mỗi ô theo xác suất 1/2

- Băng 3 (và một số băng khác) là băng chung

Độ phức tạp tính toán theo thời gian là O(nlogn)

Trang 3

Hình 1: Mô máy Turing ngẫu nhiên

Hoạt động của RM: thông qua cài đặt thuật toán QuickSort

- Xét danh sách con độ dài m Chọn khoảng O(logm) bit trên băng 2 tương ứng danh sách con để chọn ngẫu nhiên phần tử làm trục quay

- Đặt trục quay trên băng 3

- Quét lại danh sách con trên băng 1, chép các phần tử < trục quay vào băng 4

- Quét lại danh sách con trên băng 1, chép các phần tử > trục quay vào băng 5

- Chép băng 4, rồi băng 5 vào vị trí của danh sách con trên băng 1 và đặt một dấu ngăn cách giữa các dãy con này

- Nếu có một dãy con mới có > 1 phần tử thì sắp đệ qui theo thuật toán vừa trình

Trang 4

5.1.3 Ngôn ngữ của máy Turing ngẫu nhiên

Xét RM chỉ có 1 băng input và băng ngẫu nhiên, không thay đổi các ký hiệu trên băng mà chỉ di chuyển đầu đọc-ghi sang phải (R) hoặc đứng yên (S) Mỗi ký hiệu trên băng (XY), trong đó X là ký hiệu trên băng input, Y là ký hiệu trên băng ngẫu nhiên Mỗi hướng di chuyển (DE), trong đó D trên băng input, E trên băng ngẫu nhiên

Bảng hàm chuyển vị:

 q0 q100RS q301SR q210RS q311SR

q3 q300RR q311RR q4B0SS q4B1SS

*q4

Hoạt động: Xét input w

- Nếu bit ngẫu nhiên là 0, M kiểm tra xem w chỉ chứa 1 loại ký hiệu (0 hoặc 1)? Nếu đúng thì w được thừa nhận

- Nếu bit ngẫu nhiên là 1, M so w với các bit ngẫu nhiên tiếp theo và thừa nhận nếu chúng giống nhau

- Nếu đến được ô trắng trên băng input, M thừa nhận w

Trang 5

Xác suất để w được thừa nhận:

- Nếu w đồng nhất, chẳng hạn w = 0i thì tổng xác suất thừa nhận w là

i

 2 2

1 2

1

= 2-1 + 2-(i+1)

- Nếu w không đồng nhất và bit ngẫu nhiên thứ nhất là 0 thì w không được thừa nhận, tức là tổng xác suất thừa nhận w bằng 0

- Nếu w không đồng nhất và bit ngẫu nhiên thứ nhất là 1 thì w được thừa nhận và

có tổng xác suất thừa nhận w bằng 2-(i+1)

5.1.4 Lớp RP

Định nghĩa: L là ngôn ngữ thuộc lớp RP (Random Polynomial) khi và chỉ khi L

được thừa nhận bởi một máy RM thỏa mãn

- w  L  xác suất RM thừa nhận w bằng 0

- w  L  xác suất RM thừa nhận w  1/2

- Tồn tại đa thức p(n) để độ phức tạp tính toán T(n)  p(n)

Máy RM là Monte-Carlo  nếu RM thừa nhận mọi w với xác suất 0 hoặc xác suất

 1/2

Ví dụ ở trên không phải là Monte-carlo

Trang 6

5.1.5 Lớp ZPP

Định nghĩa: L là ngôn ngữ thuộc lớp ZPP (Zero-error Probabilistic Polynomial) khi

và chỉ khi L được thừa nhận bởi một máy RM luôn dừng thỏa mãn

- w  L  xác suất RM thừa nhận w bằng 0

- w  L  xác suất RM thừa nhận w > 0

- Tồn tại đa thức p(n) để độ phức tạp tính toán T(n)  p(n)

Máy RM là Las-Vegas  nếu RM thừa nhận mọi w với xác suất nào đó

Định lý: ZPP = ZP  co-RP, trong đó co-RP là lớp các ngôn ngữ thỏa mãn: L thuộc vào co-RP  phần bù của L thuộc vào lớp RP

Trang 7

5.2 Thuật toán thử Monte-Carlo

5.2.1 Số học thặng dư

Các ký hiệu:

- px  p là ước của x ; x  y (mod p)  p(x-y)

- y = (x mod p)  y  [0, p-1], p(x-y)

- Có thể cộng, trừ và nhân các thặng dư nhưng phải đưa kết quả vào [0, p-1] bằng cách thêm vào số lượng thích hợp bội của p Chẳng hạn, -x  p-x (mod p)

-  x có nghĩa là bằng x hoặc –x

- Nếu r và p không có ước chung > 1 thì phép chia (x/r mod p) là cấp nhận, do x 

(r*x mod p ) là 1-1 trong [0, p-1] Các phép toán +, -, *, / là các phép toán số học thông thường

- gcd(x, y) = ước chung lớn nhất của x và y và có thể tìm được bằng thuật toán Euclid : gcd(x, 0) = x, gcd(x, y) = gcd(y, x mod y) nếu y > 0

- gcd(x, y) = A*x – B*y, trong đó A = (g/x mod y) và B = (g/y mod y)

Cần tính (xq mod p) trong thời gian đa thức Không thể nhân với xq thời gian do q >

2q bước Để thay thế, tính xi = (xi-12 mod p) = (

i

x2 mod p), i < q Sau đó biểu diễn q dưới dạng nhị phân , tức là tổng của các lũy thừa của 2 và nhân mod p cần x’is

Trang 8

5.2.2 Phép thử Fermat

Định lý nhỏ Fermat : Với mỗi x  [1, p-1] và số nguyên tố p có xp-1  1 (mod p)

Chứng minh : Thật vậy, dãy (xi mod p) là một hoán vị của 1, 2, …, p-1 Do đó, 1

i<p(xi)/(p-1) !  xp-1 (mod p)

- Định lý trên chỉ đúng với số p nguyên tố Với hợp số p cần dùng cách thử khác

5.2.3 Phép thử căn bậc hai

Bổ đề : Đối với mỗi số y và số nguyên tố p, phương trình (x2 mod p) = y có ít nhất một cặp nghiệm x

Chứng minh : Giả sử x, x’ là nghiệm của phương trình : y  x  x’ (mod p) Do đó

x2 – x’2 = (x – x’)(x + x’)  0 (mod p)  (x – x’)  0 (mod p) hoặc x +x’  0 (mod p)

Do đó, y có ít nhất một cặp nghiệm là  căn bậc hai của một số nào đó

5.2.4 Phép thử Rabin-Miller

Giả sử p-1 = q2k, với q lẻ Xét x0 = (xq mod p), xi = (xi-12 mod p)=(

i

q

x 2 mod p), i

 k Tính T(x, p) = như sau:

- Nếu x0 = 1, hoặc một trong các xi = -1 thì T(xm, p) = 1 với m > i

Trang 9

- Nếu xk  1 thì phép thử Fermat không sử dụng được và xét z = xi  1sao cho (z2 mod p) = xi+1 = 1 Tiếp theo áp dụng phép thử căn bậc hai các nhân tử của p

Giả sử p là hợp số lẻ Xét p = aj, j > 1, với a là số nguyên tố và x = 1 + p/a Có (1 + p/a)p-1 = 1 + (p/a)(p-1) + …  1 – p/a  1 (mod p) Khi đó có thể sử dụng phép thử Fermat

Giả sử x = a*b, với gcd(a, b) = 1 Xét x’ = 1 + b*(1/b mod a)*(x-1) Khi đó x’  1 

x’i (mod b) khi x’i  xi (mod a)

Trang 10

5.3 Tính ngẫu nhiên và độ phức tạp

5.3.1 Độ phức tạp Kolmogorov

Ký hiệu KA(x/y) là độ dài ngắn nhất của chương trình cho phép p bởi thuật toán A giải bài toán chuyển y thành x:

KA(x/y) = min{(p): A(p, y) = x }

Xét U là thuật toán phổ dụng sao cho KU(x) < KA(x) + O(1) với mỗi A Nếu y rỗng thì coi KU(x/y) như là KA(x/y) hay KA(x)

Ví dụ : Xét A : x  x có KA(x) = x Do đó K(x) < KA(x) + O(1) < x + O(1) Giả sử L(x)  O(1) tính cận dưới của K(x) Sử dụng hàm f(n) tìm x với n < L(x) < K(x) Do K(x) < Kf(x) + O(1) và Kf(f(n))  n nên n < K(f(n)) < n + O(1) = log O(n) < n nên K không có cận dưới Vì vậy K(x) là không tính được

5.3.2 Số khuyết của tính ngẫu nhiên

Với mỗi xâu x được sinh ngẫu nhiên, d(x) = x – K(x/x) (d(x) > -O(1))

Tính xác suất của biến cố: {d(x) > i: x = n}

- Có 2n xâu x độ dài n Nếu d(x) > i thì K(x/x) < n – i

- Có < 2n-i chương trình với độ dài như vậy sinh ra < 2n-i xâu

- Xác suất của mỗi xâu < 2n-i/2n = 2-i

d(x) gọi là số khuyết của tính ngẫu nhiên

Trang 11

5.3.3 Điều chỉnh các phân phối xác suất

Giả sử có một dãy ngẫu nhiên từng khúc với phân phối xác suất chưa biết Cho biết xác suất cho toàn bộ các bit trước i là 1/2k+i

Bao X bởi ma trận nxm Cho m, i, k nhỏ; n = o(2k/i)

Xét mxi ma trận Z độc lập với X và ngẫu nhiên không chuẩn: Za+1,b+1 = Za,b

Tích XZ là ma trận cấp nxi có phân phối không chuẩn xấp xỉ 

k

ni O

2

Trang 12

5.4 Tính giả ngẫu nhiên

5.4.1 Xâu giả ngẫu nhiên

Xâu giả ngẫu nhiên :

- Lấy một hoán vị một chiều Fn(x) với bit lõi-cứng Bp(x) có thể tính dễ dàng từ x,

p

- Lấy ngẫu nhiên các hạt giống x0, p, n  {0, 1}k và lặp : (Si  Bp(xi) ; xi+1 

Fn(xi) ; i  i + 1)

Theo chuẩn Kolmogorov, xâu giả ngẫu nhiên không phải là xâu ngẫu nhiên

Định lý : Cho G(S) = S  {0, 1}k chạy với thời gian tG Giả sử thuật toán ngẫu nhiên

A chạy với thời gian kỳ vọng tA thừa nhận G(s) và xâu ngãu nhiên với sự sai khác xác suất d Khi đó, với mỗi i ngẫu nhiên có thể sử dụng A để ước đoán Si từ Si+1,

Si+2, … với thời gian tA + tG và độ chính xác d/O(n)

5.4.2 Lõi cứng (Hard core)

Cho Bp(x) = (x.p) = (ixipi mod 2) Có thể chuyển một phương pháp g ước đoán

Bp(x) từ p, n, F(x) với độ chính xác  thành thuật toán tìm x, tức là tìm hàm ngược F(chậm 2

thời gian hơn g)

Trang 13

5.5 Mật mã

Hàm một hướng Rabin : Chọn một cách ngãu nhiên p và q là hai số nguyên tố có p =

qvới hai bit cuối cùng là 11 Do đó số (p -1)(q-1)/4 là số lẻ Số n = p*q gọi là số Blum Cho Q(n) là tập các thặng dư bậc hai, tức là Q(n) gồm các số dạng (x2 mod n)

Bổ đề 1: Nếu n = p*q là số Blum thì hàm F: x  (x2

mod n) là một hoán vị của Q(n)

Bổ đề 2: Bài toán tìm hàm ngược của F với x ngẫu nhiên tương đương với bài toán tìm nhân

tử của n

Khóa mã công khai: Một cách mã hóa một thông báo m là cộng mod 2 vào m một bit của

xâu ngẫu nhiên S có độ dài k Kết quả mã hóa m S có phân phối xác suất không chuẩn Có hai khóa mã:

- Một khóa mã hóa có thể công khai

- Một khóa giải mã giữ bí mật

- Một mã hóa thực hiện bằng việc thay thế S bởi giả ngẫu nhiên Si = (si.x); si+1 = (si2 mod n), trong đó n = p*q được phép công khai, còn p, q là giữ bí mật

- Mã hóa bằng cách chọn x, s0 một cách ngẫu nhiên và gửi x, sk và m S

- Giải mã bằng cách biết p, q và tính u, t và v = (uk-1 mod t) Tiếp theo tính s1= (svk mod n)

và S, m

- Một cách khác là sử dụng tính khó của phân tích nhân tử đối với các tín hiệu số Xâu x có thể tách ra thành các phần cho phép y = (x2 mod n) Bất cứ ai cũng có thể xác thực x, nhưng không thể giả mạo x do chỉ có người sử dụng hợp pháp biết được các nhân tử của n

và có thể tính căn bậc hai

Trang 14

Một ví dụ về khóa mã công khai:

Bài toán các chữ số RSA

Vào năm 1978, ba nhà toán học Anh (Rivest, Shamir và Adleman) đã công bố sẽ trao giải thưởng tượng trưng 100$ cho người đầu tiên giải mã được dãy các chữ số sau:

Y = 9686961375462206147714092225435588290575999112457 43198746951209308

16298225145708356931476622883989628013391990551829945157815154

Các chữ số của Y nhận được bằng cách sau:

• Trước hết mã hóa các chữ cái tiếng Anh (từ a đến z là 01 đến 26 và dấu cách là 00) viết liền nhau được số X có 78 chữ số

• Chọn một số nguyên tố P có 64 chữ số và số nguyên tố Q có 65 chữ số

• Cho biết P*Q = 143816257578888676693257799761466120102182

96721242362562561842935706935245733897805971123563958705058989907514

7599290026879543541

• Tính Y ≡ X 9007

(Mod P*Q)

Vào năm 1994, khi giải mã được thì

P = 3490529510847650949147849619903898133417764638493387843990820577

Trang 15

Q = 32769132993266709549961988190834461413177642967992942539798288533

Để giải mã được phải chi phí:

• 220 ngày chuẩn bị phương án tính toán

• 600 nguời tình nguyện cùng 4 người chủ trì

• Sử dụng tài nguyên của 1600 máy tính

Kết quả giải mã: The magic words are squeamish ossifrage

Ngày đăng: 17/10/2014, 07:30

HÌNH ẢNH LIÊN QUAN

Hình 1: Mô máy Turing ngẫu nhiên - bài giảng môn lý thuyết tính toán - ch5 tính ngẫu nhiên trong thuật toán
Hình 1 Mô máy Turing ngẫu nhiên (Trang 3)
Bảng hàm chuyển vị: - bài giảng môn lý thuyết tính toán - ch5 tính ngẫu nhiên trong thuật toán
Bảng h àm chuyển vị: (Trang 4)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm