Bài toán Hàn Tín Điểm Binh

Giới thiệu

Nhân hôm nay rảnh rổi, mình xin luận chuyện số học một chút.

han
Hoài Âm Hầu Hàn Tín

Hoài Âm Hầu Hàn Tín là danh tướng trong lịch sử nhà Hán. Thời Hán Sở tranh hùng, Hàn Tín được Hán vương Lưu Bang phong làm Đại Nguyên Soái, thống lĩnh toàn bộ binh mã vượt Tam Tần, công phá quân Sở. Nói Hán vương thu được giang sơn lập nên nhà Hán thì có tới nửa là công chinh chiến của Hàn Tín.

Nắm vạn binh mã trong tay, cái khó không phải chỉ là làm sao bày mưu đánh trận, công thành phá địch, mà trước hết phải biết quản lý nhân mã, đảm bảo hậu cần, tổ chức, biên chế đội ngũ rồi mới nói tới chuyện đánh giặc. 

 

army
Doanh trại hôm nay có bao nhiêu quân lính ?

 

 

 

Thời đó chưa có bộ phận thống kê, xử lý số liệu như bây giờ, thế nên việc hỏi « chúng ta có bao nhiêu quân mã », tưởng dễ mà lại không biết đếm ra làm sao. Vậy nên Hàn Tính mới nghĩ ra một thuật toán đơn giản như sau :

 

Quân lính các đội , các phiên khi đi vào cửa doanh thì đi hàng ba người. Sau khi đi hết lượt thì ghi lại số người bị lẻ (c1) ra

Quân lính các đội, băt đi ra ngoài hết, theo từng đội 5 người. Sau khi đi hết lượt thì ghi lại số người bị lẻ(c2)  ra

Sau đó những người lính này bắt đi vào lại theo đội 7 người. Hết lượt thì ghi lại số dư lẻ (c3) ra

Sau đó, công thức tính tổng số quân là :

70*c1+21*c2+15*c3 +k*105

Trong đó k là một số nguyên, tùy theo ước lượng của cả đội mà chọn lấy

 

Ví dụ : Lần đầu đếm lẻ 1 người . Lần tiếp đếm được  3 người, lần cuối đếm được lẻ 5 người

Vậy tổng số quân trong doanh là

 

70*1+21*3+15*5 +k*105

 

Ước chừng cả doanh trại có gần 1000 người, vậy chọn k =7, có được tổng số quân là 943 người. Kiểm lại : 943 chia 3 dư 1, chia 5 dư 3 và chia 7 dư 5 (nghiệm đúng)

 

Có bài vè lại rằng:

 

Tam nhân đồng hành thất thập hi

Ngũ thụ mai hoa trấp nhất chi

Thất tử đoàn viên chính bán nguyện

Trừ bánh linh ngũ tiện đắc tri

 

Dịch ra là

 

Ba người cùng đi ít bảy chục.

Năm cỗi mai hoa hăm mốt cành.

Bảy gã xum vầy vừa giữa tháng.

Trừ trăm linh năm biết số thành.

 

Thực ra bài vè này giống bài vè trừ quỷ hơn là thuật toán, nhưng quả thực nó chẳng có ý nghĩa gì đặc biệt ngoài việc giúp người ta ghi nhớ mấy con số quan trọng: 3, 70, 5, 21, 7, 15 105.

 

Không có giải thích gì nhiều hơn, chúng ta thấy những số này cũng quỷ mị giống như bài vè đề trên. Vậy tại sao thuật toán trên lại sinh ra được những số như vậy?

Đề bài: Lý thuyết đồng dư Trung Hoa

Tạm thời quên đi câu truyện về Hoài Âm Hầu Hàn Tín, ta hãy tiếp cận vấn đề với số học hiện đại.

gausse
Johann Carl Friedrich Gauss . Nhà toán học và vật lý thiên tài người Đức thế kỉ 18

Trong cuốn sách“Disquisitiones Arithmeticae” của nhà toán học Carl Fredrick Gauss, ông có đề câp tới lý thuyết gọi là “lý thuyết đồng dư Trung Hoa”. Trong đó, đề bài được đưa ra là :

Bài toán tổng quát (I):

 

Với n1, n2, n3…nr là các số nguyên tố cùng nhau, nếu số x thỏa mãn hệ phương trình đồng dư với các số dư lần lượt là c1, c2….cr

debai_1
Lời giải tổng quát: Lý thuyết đồng dư Trung Hoa

Gauss , với tài năng thiên bẩm của mình, đưa ra lời giải tổng quát như sau (Lời giải và cách chứng minh thì đều có rồi, có điều chứng minh thì dài quá, mà mình không có hứng thú lắm nên tạm thời bỏ qua vậy)

 

loigiaieuler_1

Như lời giải Gauss đề ra, thì x sẽ là hệ nghiệm của phương trình

x = k*N + (c1N1d1+c2N2d2+…+crNrdr) với k là số nguyên bất kỳ

Áp dụng lại vào bài toán “Hàn Tín Điểm Binh”

 

Quay lại bài toán Hàn Tín điểm binh, ta có thể viết lại đề bài như sau:

Biết rằng tổng số quân sĩ trong doanh là một số nguyên (tất nhiên là nguyên dương, không ai lại đếm ra âm chín trăm lẻ bảy binh sĩ cả, có ai đó chỉ huy một đoàn Âm Binh Âm Tướng mà thôi ), nằm trong khoảng từ 1 tới 1000 (hay bao nhiêu đó, tùy vào ước lượng sơ ban đầu). Số này chia 3 dư 1, chia 5 dư 3 và chia 7 dư 5. Gọi số này là x, ta có hệ phương trình

hephu

Vậy , theo định lý đồng dư ở trên, x chắc chắn thuộc hệ nghiệm phương trình

loigia

 

Vậy giải hệ phương trình trên như thế nào ? Lấy k là bao nhiêu ? Thô sơ nhất mà nói, ta thấy x chia 105 dư k, vậy thì….. Ta thử k từ 1 tới 104, kiểu gì cũng tìm ra đáp số !? Cách làm này trong ngành công nghệ thông tin gọi là brute-force. Thế nhưng may sao, Gauss đưa ra một thuật toán giải quyết thông mình hơn nhiều. 

 

Áp dụng lời giải này cho bài toán Hàn Tín điểm binh, ta giải như sau:

 

Có:

n1=3, n2=5 và  n3=7

Vậy N= n1*n2*n3=3*5*7=105

Ở ví dụ ta đưa bên trên, số quân chia 3 dư 1, chia 5 dư 3 và chia 7 dư 5, nên

c1=1, c2=3 và  c3=5

 

Áp dụng lời giải của Gauss:

loigiaihantin_1

Hay viết lại thành:

x  chia cho 105  dư  (1 x 70) + (3 x 21) + (5 x 15 )

Vậy x = 105 *k + (1 x 70) + (3 x 21) + (5 x 15 )  với k là một số nguyên (dương)

Cuối cùng ta tìm lại được công thức trong bài vè của Hàn tướng quân thời xưa !

 Hệ nghiệm của phương trình này là:

208, 313, 418, 523, 628, 733, 838, 943…

Tất nhiên -208, -313,… cũng là nghiệm của phương trình, nhưng Hàn tướng quân mà nghe báo cáo quân ta có âm 208 người thì chắc cũng… từ ấn về quê mất thôi

 

Các con số 3, 5, 7, 105, 70, 2115 dần dần được giải mã nguồn gốc .

Để khơi dậy một chút thú vị, cũng xin chia sẻ với mọi người rằng, thực ra Bài toán đồng dư do Gauss giới thiệu và đưa ra lời giải ở trên  đã được chép tới trong sách “Tôn Tử Toán Kinh” . Sách này, như tên của nó, là do Tôn Vũ, một danh tướng kiệt xuất nước Ngô chép lại.  Ngoài “Tôn Tử Toán Kinh”, ông cũng là tác giả của bộ binh thư nổi tiếng “Binh Pháp Tôn Tử”

Ton-vu-ton-tu
Tôn Vũ, nhà quân sự kiệt xuất thời Xuân Thu, tác giả bộ “Binh Pháp Tôn Tử” và “Tôn Tử Toán Kinh”

Cũng quả thật kỳ lạ một điều, từ hàng ngàn năm trước, người ta đã nghĩ ra được những thuật toán phức tạp như thế này. Văn minh nhân loại quả thức đang bội phục.

Đáng tiếc là mình không đọc được tiếng Hán cổ để tham khảo Tôn Tử Toán Kinh xem người xưa giải toán như thế nào?

 

Nhận xét

Bài đăng phổ biến từ blog này

Kinh nghiệm tạo biểu đồ Use Case

PHÉP TOÁN XOR

Phần mềm hỗ trợ vẽ bản đồ tư duy trên máy tính

Power Designer 12.5