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 384 0
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

Đ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

1 Chương 5. TÍNH NGẪU NHIÊN TRONG TÍNH TOÁN NỘI DUNG 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. 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ử a 1 , …, a n . 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 = a i , 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). 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 bày. 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ị: 00 01 10 11 B0 B1  q 0 q 1 00RS q 3 01SR q 2 10RS q 3 11SR q 1 q 1 00RS q 4 B0SS q 2 q 2 10RS q 4 B0SS q 3 q 3 00RR q 3 11RR q 4 B0SS q 4 B1SS *q 4 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. 5 Xác suất để w được thừa nhận: - Nếu w đồng nhất, chẳng hạn w = 0 i 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. 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. 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 (x q 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 x i = (x i-1 2 mod p) = ( i x 2 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’ i s. 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ó x p-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) !  x p-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 (x 2 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 đó x 2 – 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 = q2 k , với q lẻ. Xét x 0 = (x q mod p), x i = (x i-1 2 mod p)=( i q x 2 mod p), i  k. Tính T(x, p) = như sau: - Nếu x 0 = 1, hoặc một trong các x i = -1 thì T(x m , p) = 1 với m > i. 9 - Nếu x k  1 thì phép thử Fermat không sử dụng được và xét z = x i  1sao cho (z 2 mod p) = x i+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 = a j , 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  x i (mod a). 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 K A (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: K A (x/y) = min{(p): A(p, y) = x }. Xét U là thuật toán phổ dụng sao cho K U (x) < K A (x) + O(1) với mỗi A. Nếu y rỗng thì coi K U (x/y) như là K A (x/y) hay K A (x). Ví dụ : Xét A : x  x có K A (x) = x. Do đó K(x) < K A (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) < K f (x) + O(1) và K f (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ó 2 n xâu x độ dài n. Nếu d(x) > i thì K(x/x) < n – i. - Có < 2 n-i chương trình với độ dài như vậy sinh ra < 2 n-i xâu. - Xác suất của mỗi xâu < 2 n-i /2 n = 2 -i . d(x) gọi là số khuyết của tính ngẫu nhiên. [...]... 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... 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... 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  ni  Tích XZ là ma trận cấp nxi có phân phối không chuẩn xấp xỉ O  k  2  11 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... (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. .. đó, 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) 12 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à... 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 13 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... 96721242362562561842935706935245733897805971123563958705058989907514 7599290026879543541 • Tính Y ≡ X9007 (Mod P*Q) Vào năm 1994, khi giải mã được thì P = 3490529510847650949147849619903898133417764638493387843990820577 14 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 . Chương 5. TÍNH NGẪU NHIÊN TRONG TÍNH TOÁN NỘI DUNG 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. 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 F n (x) với bit lõi-cứng B p (x) có thể tính dễ dàng từ x, p. - Lấy ngẫu nhiên các hạt giống x 0 , p,. (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,

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

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan