Bản dịch tự động sơ bộ, chất lượng thấp: có thể còn lỗi và câu chữ chưa tự nhiên. Bản này sẽ được thay bằng bản dịch tốt hơn. Bản gốc →
44
Thuật toán nổi tiếng nhất
Các bài viết trước trong phần này đã cung cấp các ví dụ mở rộng về thuật toán và nói về các nguyên tắc chung để viết chúng bằng ngôn ngữ thuật toán. Ở đây tác giả đã trình bày chi tiết về một thuật toán duy nhất - đây là một trong những thuật toán toán học cổ xưa nhất và có lẽ là nổi tiếng nhất.
Tiến sĩ Vật lý và Toán học
S. A. ABRAMOV
Trong Euclid’s Elements, một thuật toán được đưa ra để tìm ước số lớn nhất (GCD) của các số nguyên không âm, dựa trên các tính chất sau của đại lượng này. Đặt và đồng thời là các số nguyên không âm khác 0 và đặt . Sau đó, nếu thì gcd và nếu thì đối với các số và , trong đó là phần dư của phép chia cho , đẳng thức gcd đúng: với mọi số nguyên các số và có cùng ước chung với các số và phần còn lại là một số có dạng .
Áp dụng thuật toán Euclidean cho các số và bao gồm việc thực hiện một loạt các bước lần lượt từng bước, mỗi bước bắt đầu bằng việc kiểm tra xem số thứ hai có bằng 0 hay không. Nếu không bằng nhau thì phần dư của phép chia số thứ nhất cho số thứ hai được tính, sau đó số thứ nhất được thay thế bằng số thứ hai và số thứ hai bằng phần dư được tính toán và quá trình chuyển sang bước tiếp theo sẽ diễn ra. Nếu số thứ hai bằng 0 thì mọi phép tính sẽ dừng lại và số đầu tiên được khai báo là giá trị GCD.
Vì vậy, khi tính GCD (39,15), nó chuyển từ cặp số này sang cặp số khác theo trình tự sau: (39,15), (15,9), (9,6), (6,3), (3,0). Chúng tôi nhận được GCD (39,15) = 3.
Số dư luôn nhỏ hơn số chia và dãy số nguyên không âm giảm dần không thể là vô hạn. Do đó, việc áp dụng thuật toán Euclide sẽ kết thúc ở một số bước do số dư tiếp theo sẽ bằng 0.
Bài tập 1. Tìm GCD (21042, 18921).
Nhiệm vụ 2. Hủy bỏ hoàn toàn phân số được viết là và giá trị được viết là .
Hầu hết các thuật toán cổ xưa theo thời gian đã bị loại bỏ khỏi máy tính.
45
thực hành thực tế các thuật toán mới hơn. Thuật toán Euclid tránh được phần này chủ yếu do tính phân tích của nó. Giá trị của GCD(f,g) có thể được tính theo nhiều cách, chẳng hạn như sử dụng thuật toán tầm thường sau: nếu , thì lấy giá trị làm GCD(f,g), nếu không thì chọn từ các số của số đầu tiên, khi chia cho ngắn hơn và cho số dư bằng 0. Tuy nhiên, giống như các thuật toán tương tự khác, thuật toán cuối cùng quá lãng phí. Ví dụ: trong trường hợp nguyên tố cùng nhau và , nó yêu cầu phép chia . Bây giờ chúng ta hãy kiểm tra số phép chia mà thuật toán Euclide yêu cầu và chỉ ra rằng đối với các giá trị lớn thì nó tồn tại nhỏ hơn . Chúng ta sẽ xem xét trình tự của tất cả các số dư được tính toán trong quá trình thực hiện thuật toán Euclide. Sẽ rất hữu ích khi biểu thị các số ban đầu không phải bằng mà bằng (chúng tôi giả định rằng ). Chúng tôi biểu thị số dư khác 0 thu được bằng và thương số khi chia cho cho cho cho :
ở đây GCD()=. Số dư luôn nhỏ hơn số chia nên . Kết quả là mỗi thương số lớn hơn hoặc bằng một.
Bổ đề 1. Với bất đẳng thức đúng.
Bằng chứng. .
Bổ đề 2. Cho là một số tự nhiên sao cho việc áp dụng thuật toán Euclide cho không kết thúc sau phép chia (tức là ). Sau đó .
Bằng chứng. Sử dụng Bổ đề 1, chúng ta có được
Định lý. Số phép chia mà thuật toán Euclide yêu cầu không vượt quá .
Bằng chứng. Theo Bổ đề 2, nếu là một số tự nhiên thỏa mãn thì số đó
Vì vậy, đối với lời giải bài toán (2) cần áp dụng thuật toán Euclide cho và , xét ở mỗi bước áp dụng, ngoài hai số đã xét trước còn có thừa số và tương ứng với các số này. Ở bước đầu tiên, với tư cách là số nhân, đồng
46
tương ứng với số ban đầu và thì lấy 1,0 và 0,1. Để thực hiện phép chia và nhận được phần và một phần dư, nếu phần dư không bằng 0, trước khi chuyển sang bước tiếp theo, hãy tính bằng các công thức , các thừa số tương ứng để lấy phần dư. Phần dư cuối cùng khác 0 và các thừa số tương ứng của nó và sẽ thỏa mãn (2).
Trong quá trình áp dụng thuật toán này cho , số dư 9 được tính tuần tự; 6; 3; 0 và các số nhân tương ứng 1, -2; -1,3; 2, -5. Vì vậy, .
Bây giờ hãy lưu ý rằng thuật toán có thể được thay đổi để số lượng thao tác mà nó yêu cầu giảm gần một lần rưỡi: trong hai số và , chỉ cần tính cùng với , sau đó xác định bằng công thức . Đối với , chúng ta có thể đặt .
Bài 4. Chứng minh rằng nếu các số , cho phương trình lời giải (3) thì tất cả lời giải đều được mô tả bởi công thức , , trong đó , , , , .
Bài toán 5. Sử dụng các công thức được viết trong bài toán 4, hãy mô tả một thuật toán cho phép bạn kiểm tra xem phương trình (3) có lời giải là số nguyên không âm hay không và nếu có, thì nó cho phép bạn xây dựng một lời giải như vậy.
Các phép chia liên tiếp có phần dư, tương ứng với sơ đồ (1), cũng tạo thành cơ sở của thuật toán phân số nguyên, cho phép người ta thu được các giá trị gần đúng rất thú vị của số . Một phân số tiếp tục (hữu hạn) là một biểu thức có dạng
trong đó là số tự nhiên. Phân số tiếp theo (5) được viết ngắn gọn là . Vì , chúng ta có
Tiếp theo, chúng ta biến đổi theo cách tương tự, v.v. Cuối cùng, chúng ta nhận được . Ngoài ra, chúng ta sẽ xem xét các phân số nguyên , các giá trị của chúng được gọi là phân số gật đầu của số . Chúng ta hãy biểu thị dạng tối giản của các phân số thích hợp bằng . Chúng tôi trình bày các tính chất gần đúng sau của số bằng các phân số phù hợp mà không cần chứng minh:
a)
b) Nếu đối với một số phân số và phân số phù hợp , ,
thì .
Dễ dàng nhận thấy các phân số thích hợp cho số 15/39 (dạng tối giản của nó là 5/13) là 1/2, 1/3, 2/5. Hiệu giữa số tối giản và phân số này lần lượt bằng -3/26, 2/39, -1/65.
Thuộc tính a), b) được sử dụng trong lời giải nhiều loại bài toán thực tế khác nhau, yêu cầu lựa chọn một số không nguyên cho trước của một xấp xỉ tốt ở dạng phân số có giá trị tương đối nhỏ. Một ví dụ là bài toán tính toán một bộ truyền bánh răng gồm hai bánh răng. Số truyền phải gần với giá trị được chỉ định và số răng của mỗi bánh răng không được vượt quá giới hạn quy định nhất định.
Bài 6. Một năm Trái Đất có 365,242199 ngày. Tìm các phân số thích hợp của số . Phân số nào sau đây xác định quy luật luân phiên giữa năm đơn giản và năm hiệu quả cao trong lịch hiện đại?
Bài 7. Viết các thuật toán sau dưới dạng chương trình bằng ngôn ngữ thuật toán trong SGK (xem thêm bài của A. P. Ershov ở số trước):
a) thuật toán tầm thường để tính GCD;
b) Thuật toán Euclide tính GCD;
c) thuật toán lời giải cho phương trình số nguyên có dạng ;
d) thuật toán biểu diễn tỷ lệ dưới dạng phân số liên tục.
Thuật toán Euclid cũng cho phép các khái quát hóa khác, đặc biệt, được sử dụng trong phép tính gần đúng các số vô tỷ và trong tính toán gcd của đa thức. Vì vậy, trong thực tiễn tính toán hiện đại, dựa trên việc sử dụng máy tính điện tử, đã có một ứng dụng của thuật toán này đã có từ 2300 năm trước.