Thuật toán nguyên tố và đa thức
Thuật toán xác định số nguyên tố với thời gian đa thức - Một sự kiện lớn trong lịch toán tin của nhân loạiVũ Đình HoáXác định số nguyên tố là một bài toán cơ bản của toán học và ý nghĩa của bài toán này càng được tăng lên trong thời đại máy tính điện tử. Từ những năm 1801, ông vua số học Gauss đã tiên đoán được điều này khi viết ″Vấn đề phân biệt số nguyên tố với hợp số và phân tích hợp số thành tích các số nguyên tố được biết là một trong những bài toán quan trọng và có ích nhất của số học…″. Điều nằy đặc biệt đúng khi số nguyên tố chính là cơ sở của mật mã khóa công khai, cơ sở toán của lý thuyết bảo mật thông tin trên mạng và thương mại điện tử…của thời đại hiện nay. Từ những năm trước công nguyên, các nhà toán học đã cố gắng tìm cách xác định số nguyên tố. Quãng 240 năm trước Công nguyên, loài người đã biết đến sàng Eratosthene để xác định số nguyên tố. Nhưng sàng này làm việc không hiệu quả. Việc xác định một số nguyên tố lớn rất khó khăn và mất nhiều thời gian. Chính vì vậy, các nhà toán học vẫn theo đuổi mục tiêu tìm cách xác định số nguyên tố một cách nhanh chóng và có hiệu quả. Sau nhiều năm tìm kiếm không hiệu quả, năm 1976, nhà toán học Miller đã đưa ra một thuật toán thỏa mãn được những yêu cầu nói trên của nhân loại. Nhưng điều khó chấp nhận trong thuật toán Miller là ông ta không chứng minh được tính đứng đắn của thuật toán mình đưa ra, mặc dù thuật toán chạy rất tốt và luôn xác định đúng số nguyên tố. Nếu giả thuyết còn chưa chứng minh được của nhà toán học Riman người Đức (1826-1866) rằng tất cả các zero ảo của hàm dzêta có một phần ảo là 1/2 (đây là một trong các bài toán lớn chưa giải được của nhân loại) là đúng, thì người ta chứng minh được sự đúng đắn của thuật toán của Miller là nó luôn cho ta các số nguyên tố. Như vậy, việc chứng tỏ sự đúng đắn của thuật toán Miller là chưa có thể trong thời đại hiện nay.Các năm tiếp theo, Adlerman, Pomerance và Rumely (1983) đưa ra một thuật toán xác định xem một số tự nhiên n cho trước có phải là số nguyên tố hay không và với một lượng thời gian chạy máy là (ở đây ta ký hiệu logn là và quy ước là ta viết g(x)=O(f(x)) khi tồn tại một số thực a để luôn có cho mọi x>0). Rõ ràng thời gian xác định xem liệu n có phải số nguyên tố hay không của thuật toán này là một hàm số bậc cao hơn hàm đa thức đối với biến log n là (là độ dài biểu diễn số n trong máy tính). Với thuật toán này, vẫn còn phải mất nhiều thời gian chạy máy mới xác định được một số tự nhiên cho trước có phải là số nguyên tố hay không. Một hướng đi khác nhằm giải quyết nhu cầu cấp bách xác định số nguyên tố là các thuật toán dựa trên cơ sở lý thuyết xác suất. Một loạt các nhà toán học như Rabin 1980, Goldwasser & Kilian 1986 và Adlermann & Huang 1992…đưa ra các thuật toán mà kết luận luôn đúng khi khẳng định một số là hợp số, và với một độ bảo đảm được tính trước, thuật toán có thể khẳng định liệu một số tự nhiên n có phải là số nguyên tố hay không. Như vậy, với các thuật toán này, máy tính vẫn có thể nhầm lẫn khi khẳng định số 16 là số nguyên tố với độ bảo đảm là 99%. Tháng 8 năm 2002, lịch sử chứng kiến một thành công bất ngờ khi nhà tin học Manindra Agrawal (Viện công nghệ Kanpur ấn độ) cùng với hai sinh viên của mình là Neeja Kayal và Nitin Saxena đã tìm ra một thuật toán chỉ dài có 13 dòng cho phép xác định chắc chắn tính nguyên tố của những số rất lớn (có tới hàng trăm chữ số). Việc làm của các nhà tin học ấn độ là phi thường, vì họ đã thành công khi không biết bao nhiêu người đã cố gắng mà vẫn thất bại. Chỉ trong một thời gian ngắn, và sau choáng váng ban đầu, các nhà toán học trên thế giới đã lao vào xem xét kiểm tra sự chính xác của thuật toán và cho tới nay, vẫn chưa ai phát hiện được sai lầm nào. Tất cả đều thốt lên″Thật là thần diệu, mà sao không có ai tìm ra được thuật toán này sớm hơn!″ Thuật toán của các nhà tin học ấn độ bắt nguồn từ định lý nhỏ của Fecma mà gần như tất cả chúng ta đều biết từ nhà trường phổ thông, rằng nếu p là số nguyên tố thì cho mọi số tự nhiên a. Định lý này của Fecma được các nhà tin học ấn độ mở rộng cho các đa thức thành một điều kiện cần và đủ để một số là số nguyên tố mà các bạn sẽ được thấy sau đây trong thuật toán cụ thể của họ. Chúc các bạn thành công trong việc chuyển thuật toán này thành chương trình cụ thể và vận dụng vào trong các chương trình của mình The Algorithm Input: interger n>1 1. if (n is of the form , b>1) output COMPOSITE;2. r=2;3. while (r<N){4. if (gcd(n,r) 1) output COMPOSITE;5. if (r is prime)6. let q be the largest prime factor of r-1;7. if ( )and ( )8. break;9. }11. for a=1 to 12. if output COMPOSITE;13. output PRIME; . Thuật toán xác định số nguyên tố với thời gian đa thức - Một sự kiện lớn trong lịch toán tin của nhân loạiVũ Đình HoáXác định số nguyên tố là một bài toán. trong thuật toán Miller là ông ta không chứng minh được tính đứng đắn của thuật toán mình đưa ra, mặc dù thuật toán chạy rất tốt và luôn xác định đúng số nguyên