Phương pháp Quỹ đạo và ứng dụng vào giải một số bài toán tổ hợp dành cho học sinh khá giỏi (Luận văn thạc sĩ0Phương pháp Quỹ đạo và ứng dụng vào giải một số bài toán tổ hợp dành cho học sinh khá giỏi (Luận văn thạc sĩ0Phương pháp Quỹ đạo và ứng dụng vào giải một số bài toán tổ hợp dành cho học sinh khá giỏi (Luận văn thạc sĩ0Phương pháp Quỹ đạo và ứng dụng vào giải một số bài toán tổ hợp dành cho học sinh khá giỏi (Luận văn thạc sĩ0Phương pháp Quỹ đạo và ứng dụng vào giải một số bài toán tổ hợp dành cho học sinh khá giỏi (Luận văn thạc sĩ0Phương pháp Quỹ đạo và ứng dụng vào giải một số bài toán tổ hợp dành cho học sinh khá giỏi (Luận văn thạc sĩ0Phương pháp Quỹ đạo và ứng dụng vào giải một số bài toán tổ hợp dành cho học sinh khá giỏi (Luận văn thạc sĩ0Phương pháp Quỹ đạo và ứng dụng vào giải một số bài toán tổ hợp dành cho học sinh khá giỏi (Luận văn thạc sĩ0Phương pháp Quỹ đạo và ứng dụng vào giải một số bài toán tổ hợp dành cho học sinh khá giỏi (Luận văn thạc sĩ0Phương pháp Quỹ đạo và ứng dụng vào giải một số bài toán tổ hợp dành cho học sinh khá giỏi (Luận văn thạc sĩ0Phương pháp Quỹ đạo và ứng dụng vào giải một số bài toán tổ hợp dành cho học sinh khá giỏi (Luận văn thạc sĩ0Phương pháp Quỹ đạo và ứng dụng vào giải một số bài toán tổ hợp dành cho học sinh khá giỏi (Luận văn thạc sĩ0Phương pháp Quỹ đạo và ứng dụng vào giải một số bài toán tổ hợp dành cho học sinh khá giỏi (Luận văn thạc sĩ0Phương pháp Quỹ đạo và ứng dụng vào giải một số bài toán tổ hợp dành cho học sinh khá giỏi (Luận văn thạc sĩ0
ĐẠI HỌC THÁI NGUYÊN TRƢỜNG ĐẠI HỌC KHOA HỌC - PHẠM THỊ QUỲNH PHƢƠNG PHƢƠNG PHÁP “QUỸ ĐẠO” VÀ ỨNG DỤNG VÀO GIẢI MỘT SỐ BÀI TOÁN TỔ HỢP DÀNH CHO HỌC SINH KHÁ GIỎI LUẬN VĂN THẠC SĨ TOÁN HỌC THÁI NGUYÊN - 2019 ĐẠI HỌC THÁI NGUYÊN TRƢỜNG ĐẠI HỌC KHOA HỌC - PHẠM THỊ QUỲNH PHƢƠNG PHƢƠNG PHÁP “QUỸ ĐẠO” VÀ ỨNG DỤNG VÀO GIẢI MỘT SỐ BÀI TOÁN TỔ HỢP DÀNH CHO HỌC SINH KHÁ GIỎI Chuyên ngành: Phƣơng pháp Toán sơ cấp Mã số: 46 01 13 LUẬN VĂN THẠC SĨ TOÁN HỌC NGƯỜI HƯỚNG DẪN KHOA HỌC PGS.TS Trịnh Thanh Hải THÁI NGUYÊN - 2019 i Mục lục Một số ký hiệu chữ viết tắt iii Lời nói đầu iv Chương Một số kiến thức chuẩn bị 1.1 Bài toán đếm toán tổ hợp 1.2 Một số ngun lý, tính chất tốn tổ hợp thường vận dụng vào giải toán đếm toán tổ hợp 1.3 Một số phương pháp giải toán đếm toán tổ hợp phạm vi chương trình tốn THPT 1.3.1 Đếm trực tiếp 1.3.2 Đếm theo vị trí 1.3.3 Đếm loại trừ 1.3.4 Chọn tập trước, xếp sau 1.3.5 Đếm theo “vách ngăn” 1.3.6 Sử dụng nguyên lý bù trừ 1.3.7 Sử dụng tính chất song ánh 1.3.8 Sử dụng hàm sinh 1 4 7 11 13 Chương Vận dụng phương pháp “quỹ toán tổ hợp 2.1 Phương pháp “quỹ đạo” 2.1.1 Quan niệm “quỹ đạo” 2.1.2 Một số tính chất “quỹ đạo” 2.2 Một số vận dụng 2.2.1 Bài toán hàng 2.2.2 Bài toán bỏ phiếu 2.2.3 Quy tắc Pascal 15 15 15 16 20 20 23 24 đạo” vào giải số ii 2.3 2.2.4 Một số toán khác Ý nghĩa khái niệm “quỹ đạo” phương pháp “quỹ đạo” 25 31 Kết luận 36 Tài liệu tham khảo 37 iii Một số ký hiệu chữ viết tắt N N∗ Z R MO IMO Tập hợp số tự nhiên Tập hợp số tự nhiên khác Tập hợp số nguyên Tập hợp số thực National Mathematical Olympiad Internation Mathematical Olympiad iv Lời nói đầu Lý chọn đề tài Toán tổ hợp toán khó, thường xuất kì thi học sinh giỏi cấp tỉnh, cấp quốc gia quốc tế Chính tốn tổ hợp ln dành quan tâm lớn từ bạn học sinh, thầy, giáo nhà tốn học Một phương pháp có hiệu để giải số toán tổ hợp phương pháp “quỹ đạo” Ý tưởng phương pháp “quỹ đạo” cách giải thích hình học để đưa lời giải cho toán tổ hợp, mà chủ yếu toán tổ hợp đếm đường (hay số “quỹ đạo”) theo tính chất xác định (hay cịn gọi phương pháp quy tốn đếm toán đếm số đường lưới nguyên) Phương pháp “quỹ đạo” không ứng dụng vào giải số toán tổ hợp liên quan đến lưới ngun mà cịn vận dụng để đưa lời giải cho số toán dãy số Mặt khác, với toán tối ưu hóa quen thuộc kinh tế, kỹ thuật như: Tìm đường ngắn nhất, tìm chu trình tối ưu ngồi phương pháp quen thuộc quy hoạch động, thử sai quay lui ta vận dụng tư tưởng phương pháp “quỹ đạo” để đưa thuật toán “tốt” Xuất phát từ thực tế với mục đích tích lũy thêm kiến thức cách giải toán đếm toán tổ hợp với phương pháp “quỹ đạo” vận dụng vào giải số toán đếm đề thi học sinh giỏi nước quốc tế làm tư liệu cho công việc giảng dạy thân, em lựa chọn hướng nghiên cứu vận dụng phương pháp “quỹ đạo” vào giải số tốn đếm Luận văn tập trung vào hồn thành nhiệm vụ sau • Tìm hiểu toán đếm toán tổ hợp nguyên lý, tính chất tốn tổ hợp thường vận dụng để đưa lời giải cho toán đếm • Ý tưởng toán học phương pháp “quỹ đạo” việc tìm lời giải cho tốn đếm tốn tổ hợp v • Sưu tầm số toán, đề thi toán đếm toán tổ hợp dành cho học sinh giỏi • Đưa ý nghĩa khái niệm “quỹ đạo” phương pháp “quỹ đạo” thơng qua thuật tốn đường Robot Nội dung đề tài luận văn Ngoài phần mở đầu, kết luận, tài liệu tham khảo, luận văn gồm chương Chương Một số kiến thức chuẩn bị 1.1 Bài toán đếm toán tổ hợp 1.2 Một số ngun lý, tính chất tốn tổ hợp thường vận dụng vào giải toán đếm toán tổ hợp 1.3 Một số phương pháp giải toán đếm toán tổ hợp phạm vi chương trình tốn Trung học phổ thơng Chương Vận dụng phương pháp “quỹ đạo” vào giải số toán tổ hợp 2.1 Phương pháp “quỹ đạo” 2.2 Một số vận dụng 2.3 Ý nghĩa khái niệm “quỹ đạo” phương pháp “quỹ đạo” Luận văn hoàn thành hướng dẫn tận tình, chu đáo thầy PGS TS Trịnh Thanh Hải, thầy cô giáo khoa Toán - Tin, trường Đại học Khoa học toàn thể bạn lớp Cao học K11 tạo điều kiện, nhiệt tình ủng hộ em suốt trình làm luận văn Em xin bày tỏ lòng biết ơn chân thành, sâu sắc với tất đóng góp q báu thầy bạn đặc biệt thầy PGS TS Trịnh Thanh Hải Tuy có nhiều cố gắng q trình làm luận văn, thời gian kiến thức cịn hạn chế nên luận văn khơng tránh khỏi thiếu sót Kính mong nhận góp ý quý thầy, cô bạn Em xin chân thành cảm ơn! Thái Nguyên, ngày 28 tháng 12 năm 2019 Tác giả luận văn Phạm Thị Quỳnh Phương Chương Một số kiến thức chuẩn bị 1.1 Bài toán đếm toán tổ hợp Trong toán tổ hợp, toán đếm toán nhằm trả lời câu hỏi: “Có cấu hình tổ hợp thuộc dạng cho?” Phương pháp đếm thường dựa vào số quy tắc, nguyên lý đếm số kết đếm cho cấu hình tổ hợp đơn giản Hai quy tắc đếm quy tắc cộng quy tắc nhân Hai quy tắc đếm Định nghĩa 1.1.1 (a) Quy tắc cộng: Một cơng việc hồn thành hai hành động Nếu hành động thứ có m cách thực hiện, hành động thứ hai có n cách thực khơng trùng với cách hành động thứ cơng việc có m + n cách thực (b) Quy tắc nhân: Một cơng việc hồn thành hai hành động liên tiếp Nếu có m cách thực hành động thứ ứng với cách có n cách thực hành động thứ hai có m.n cách hồn thành cơng việc Hốn vị Định nghĩa 1.1.2 Cho tập hợp A gồm n phần tử (n ≥ 1) Mỗi kết xếp thứ tự n phần tử tập hợp A gọi hoán vị n phần tử • Kí hiệu: Pn số hốn vị n phần tử • Số hốn vị: Pn = n! = · · · · (n − 1) · n Chỉnh hợp Định nghĩa 1.1.3 Cho tập hợp A gồm n phần tử (n ≥ 1) Kết việc lấy k phần tử khác từ n phần tử tập hợp A xếp chúng theo thứ tự gọi chỉnh hợp chập k n phần tử cho • Kí hiệu: Akn số chỉnh hợp chập k n phần tử, ≤ k ≤ n n! • Số chỉnh hợp: Akn = = n (n − 1) · · · (n − k + 1) (với ≤ k ≤ n) (n − k)! Nhận xét: Mỗi hoán vị n phần tử chỉnh hợp chập n n phần tử nên Pn = Ann Tổ hợp Định nghĩa 1.1.4 Giả sử tập A gồm n phần tử (n ≥ 1) Mỗi tập gồm k phần tử A gọi tổ hợp chập k n phần tử cho • Kí hiệu: Cnk số tổ hợp chập k n phần tử (0 ≤ k ≤ n) n! (với ≤ k ≤ n) • Số tổ hợp: Cnk = k! (n − k)! Nhận xét: (a) Cnk = Cnn−k (0 ≤ k ≤ n) k−1 k (b) (công thức Pascal): Cn−1 + Cn−1 = Cnk (1 ≤ k ≤ n) Chỉnh hợp lặp Định nghĩa 1.1.5 Cho tập A có m phần tử Ta rút từ A phần tử bất kỳ, kí hiệu a1 trả lại vào tập hợp A Ta lại rút từ A phần tử, kí hiệu a2 (a2 lại phần tử thứ nhất) trả lại vào tập hợp A Tiếp tục thao tác k lần (k không thiết nhỏ m ), ta tìm dãy (a1 , a2 , · · · , ak ) gồm k phần tử (có thể trùng nhau) A Một dãy gọi chỉnh hợp có lặp chập k m phần tử cho Tập hợp tất chỉnh hợp có lặp chập k lập nên từ phần tử tập hợp A có m phần tử tập hợp (a1 , a2 , · · · , ak ) với ∈ A Vậy tích Đề-các A × A × · · · × A = Ak k lần Định lý 1.1.1 Số chỉnh hợp có lặp chập k m phần tử, kí hiệu Akm , tính theo công thức Akm = Ak = mk Chứng minh Rõ ràng có m cách chọn phần tử từ tập m phần tử cho k vị trí chỉnh hợp cho phép lặp Vì theo quy tắc nhân, có mk chỉnh hợp lặp chập k từ tập có m phần tử Hốn vị lặp Trong tốn đếm, số phần tử giống Khi cần phải cẩn thận, tránh đếm chúng lần Định lý 1.1.2 Số hốn vị n phần tử có n1 phần tử thuộc loại 1, có n2 phần tử thuộc loại 2, · · · có nk phần tử n! thuộc loại k n1 !n2 ! · · · nk ! Chứng minh Để xác định số hoán vị trước tiên nhận thấy có Cnn1 cách giữ n1 số cho n1 phần tử loại 1, lại n − n1 chỗ trống n2 Sau đó, có Cn−n cách đặt n2 phần tử loại vào hốn vị, cịn lại n − n1 − n2 chỗ trống Tiếp tục đặt phần tử loại 3, loại 4, , loại k − vào chỗ trống hốn nk vị Cuối có Cn−n cách đặt nk phần tử loại k vào hoán vị −n2 −···−nk−1 Theo quy tắc nhân tất hốn vị là: n2 nk Cnn1 Cn−n · · · Cn−n = 1 −n2 −···−nk−1 n! n1 !n2 ! · · · nk ! Tổ hợp lặp Một tổ hợp lặp chập k tập hợp cách chọn khơng có thứ tự k phần tử lặp lại tập cho Như tổ hợp lặp kiểu dãy không kể thứ tự gồm k thành phần lấy từ tập n phần tử Do k > n k Định lý 1.1.3 Số tổ hợp lặp chập k từ tập n phần tử Cn+k−1 Chứng minh Mỗi tổ hợp lặp chập k từ tập n phần tử biểu diễn dãy n − đứng để phân cách ngăn Ngăn thứ i chứa thêm lần phần tử thứ i tập xuất tổ hợp Mỗi dãy n − k ứng với tổ hợp lặp chập k n phần tử Do dãy ứng với cách chọn k chỗ cho k từ n + k − chỗ chứa n − k ngơi Đó điều cần chứng minh 23 hai bên giống nên f (t ) ≥ Do đó, vị trí thứ i g(t ) ti = Tức ta có g(t) = g(t ) Do đó, ln có g(t) = g(t ), với t = t nên g đơn ánh Kết hợp hai điều lại, ta thấy g song ánh n−1 n−1 , suy |S| = Cn2n − C2n Ta |T | = |U | = C2n Kết tương ứng với điều ta tìm tốn rõ ràng để nhận điều bước lập luận dài nhiều Chú ý 2.2.1 Với nội dung Bài toán 2.2.1, giả thiết thêm trước bán m−p−1 vé có p tiền loại đồng Khi có Cm m+n = Cm+n−1 cách xếp người mua vé để khơng có người phải chờ trả tiền thừa Thật vậy, trường hợp tốn đưa việc tính số “quỹ đạo” từ điểm O(0, 0) đến điểm Am+n (m + n, n − m) không cắt đường thẳng y = −(p + 1) Khi số “quỹ đạo” cắt đường thẳng số “quỹ đạo” từ điểm B(0, −2(p + 1)) m−p−1 đến điểm Am+n (n + m, n − m), nghĩa Cp+n+1 (theo hệ thức m+n = Cm+n m−p−1 k n−k n Cn = Cn ) Số “quỹ đạo” cần tìm tốn Cm+n − Cm+n 2.2.2 Bài toán bỏ phiếu Bài toán 2.2.2 Trong lần bầu cử, ứng cử viên A a phiếu bầu, ứng cử viên B b phiếu bầu (a > b) Cử tri bỏ phiếu liên tiếp Hỏi có cách bỏ phiếu để ứng cử viên A ln dẫn đầu số phiếu bầu cho mình? Lời giải Ta đặt 1 phiếu thứ i bầu cho A ei = − phiếu thứ i bầu cho B Đặt Sk = e1 + · · · + ek Ta xét “quỹ đạo” với điểm O(0, 0), (1, S1 ), (k, Sk ), , (a + b, Sa+b ) Ở Sa+b = a − b Rõ ràng cách bỏ phiếu tương ứng với “quỹ đạo” xác định Mỗi “quỹ đạo” gồm a + b đoạn thẳng, có a đoạn hướng lên Tổng số “quỹ đạo” Caa+b Ứng cử viên A dẫn đầu “quỹ đạo” tương ứng qua điểm (1, 1) khơng cắt trục hồnh Số “quỹ đạo” n+1−m m Cm+n n+1 n = a − 1, m = b 24 Do đó, số cách bỏ phiếu phải tìm a − + − b a−1 a−b a Ca+b−1 = C a−1+1 a + b a+b 2.2.3 Quy tắc Pascal Bài toán 2.2.3 (Quy tắc Pascal) Nếu k, n số tự nhiên thỏa mãn ≤ k ≤ n k−1 k Cnk = Cn−1 + Cn−1 Chứng minh Phương pháp hàm sinh Nếu k, n số tự nhiên thỏa mãn ≤ k ≤ n k−1 k Cnk = Cn−1 + Cn−1 Xét hàm sinh Gn (x) = (1 + x)n Ta viết lại sau: Gn (x) = (1 + x)n = (1 + x)(1 + x)n−1 = (1 + x)Gn−1 x = Gn−1 (x) + xGn−1 (x) Để ý rằng: Hệ số xk khai triển Gn (x) = (1 + x)n Cnk , hệ số k−1 k xk khai triển Gn−1 (x) + xGn−1 (x) Cn−1 + Cn−1 k−1 k Vậy Cnk = Cn−1 + Cn−1 Bài tốn Pascal giải phương pháp “quỹ đạo” sau: Phương pháp “quỹ đạo” Số đường ngắn từ điểm O(0, 0) đến điểm A(k, n − k) k Ck+(n−k) = Cnk Ta chia đường thành hai lớp khơng giao sau: y n−k A1 A(k, n − k) A2 O k x 25 • Lớp thứ gồm đường thẳng từ điểm O đến điểm A phải qua điểm A1 (k − 1, n − k), số đường lớp k−1 k−1 C(k−1)+(n−k) = Cn−1 • Lớp thứ hai gồm đường từ điểm O đến điểm A phải qua điểm A2 (k, n − k − 1) Số đường lớp k−1 k Ck+(n−k−1) = Cn−1 Theo nguyên lý cộng, ta nhận k−1 k Cnk = Cn−1 + Cn−1 2.2.4 Một số toán khác Bài toán 2.2.4 Nếu k n số nguyên thỏa mãn ≤ k ≤ n k−1 k−1 k−1 Cnk = Cn−1 + Cn−2 + + Ck−1 Chứng minh k Ta Số đường ngắn từ điểm O(0, 0) đến điểm A(k, n − k) Ck+(n−k) chia đường thành (n − k + 1) lớp khơng giao nhau: y A n−k i O x= k x Lớp thứ i(i = 0, 1, 2, , n − k) gồm đường từ điểm O đến điểm A 1 phải cắt đường thẳng x = điểm , i Số đường lớp số 2 đường từ điểm (1, i) đến điểm (k, n − k) k−1 k−1 C(k−1)+(n−k−i) = Cn−i−1 26 Theo nguyên lý cộng, ta có Cnk = n−k k−1 Cn−i−1 i=0 hay k−1 k−1 k−1 Cnk = Cn−1 + Cn−2 + + Ck−1 Bài toán 2.2.5 Với số nguyên dương n, ta có: Cn0 + Cn1 n + + (Cnn )2 = C2n Chứng minh n n Số đường ngắn từ điểm O(0, 0) đến điểm A(n, n) Cn+n = C2n Mỗi đường qua điểm Ak (k, n − k) nằm đường chéo BD hình vuông ABOD k = Cnk Số đường từ điểm O tới điểm Ak (k, n − k) Ck+(n−k) Một đường ngắn từ Ak (k, n − k) tới điểm A(n, n) gồm có n − k đoạn ngang n − (n − k) = k đoạn dọc k Vậy số đường từ Ak tới A Ck+(n−k) = Cnk Theo quy tắc nhân, số đường ngắn từ O tới A qua Ak Cnk · Cnk = Cnk Theo quy tắc cộng, số đường ngắn từ O tới A tổng số đường từ O qua Ak (k = 0, 1, · · · , n) (vì đường qua điểm khơng qua điểm khác) Ä ä2 Ä ä2 n Vậy ta có C2n = Cn0 + Cn1 + + (Cnn )2 y A(n, n) B n−k O Ak k D x 27 Cách giải khác phương pháp hàm sinh Với số nguyên dương n, ta có: Cn0 + Cn1 n + + (Cnn )2 = C2n n Xét đa thức (1 + x)2n có hệ số xn C2n Mặt khác ta có (1 + x)2n = (1 + x)n (1 + x)n Xét hàm sinh G(x) = H(x) = (1 + x)n có hệ số ar = br = Cnr Hệ số xn G(x)H(x) a0 bn + a1 bn−1 + · · · + an b0 = Cn0 Vì ta có Cn0 Ä ä2 + Cn1 Ä ä2 + Cn1 + + (Cnn )2 n + + (Cnn )2 = C2n Bài toán 2.2.6 Giả sử m, n, k số nguyên dương thỏa mãn m < n Khi m−1 m m Cnm · Ck0 + Cn−1 · Ck+1 + + Cn−m · Ck+m = Cn+k+1 Chứng minh Ta xét tất đường ngắn từ điểm O(0, 0) đến điểm A(n − m + k + 1, m) Số đường m m C(n−m+k+1)+m = Cn+k+1 Gọi Bi (i = 0, 1, , m) lớp đường gấp khúc cắt đường thẳng ( ) có 1 phương trình x = k + điểm R k + , i 2 y A m i O RQ P k k+1 x 28 Ta nhận thấy đường gấp khúc thuộc lớp Bi gồm ba phần: Phần 1: Đường gấp khúc nối điểm O(0, 0) với điểm P (k, i) Phần 2: Đường nằm ngang nối điểm P (k, i) với điểm Q(k + 1, i) Phần 3: Đường gấp khúc nối điểm Q(k + 1, i) với điểm A(n − m + k + 1, m) m−i i Ta thấy tổng số đường gấp khúc thuộc lớp Bi Ck+i · Cn−i m−i m m i Theo nguyên lý cộng, có i=0 Ck+i · Cn−i = Cn+k+1 hay m−1 m m Cnm · Ck0 + Cn−1 · Ck+1 + + Cn−m · Ck+m = Cn+k+1 Bài toán 2.2.7 (Bài tuyển chọn Đội tuyển Việt Nam dự IMO, 2003) Cho số nguyên dương m, n, p, q với p < m, q < n Trên mặt phẳng tọa độ lấy bốn điểm A(0, 0), B(p, 0), C(m, q), D(m, n) Xét đường f ngắn từ A đến D đường g ngắn từ B đến C Gọi S số cặp đường (f, g) mà f g khơng có điểm chung Chứng minh n q q n S = Cm+n · Cm+q−p − Cm+q · Cm+n−p (1) Chứng minh Số cặp đường (f, g) tùy ý n q n q M = Cm+n Cq+m−p = Cm+n · Cm+q−p y D n q C K j O A Bp i m x Gọi V số cặp đường (f , g ) f đường ngắn từ A đến C; g đường ngắn từ B đến D Số cặp đường (f , g ) tùy ý q n q n V = Cq+m · Cn+m−p = Cm+q · Cm+n−p (2) 29 Vì f g ln có điểm chung K(i, j) nên số đường f phải qua K q−j i Cj+i · C(q−j)+(m−i) Số đường g phải qua K j n−j Cj+(i−p) · C(n−j)+(m−i) Do j q−j j n−j V = Cj+i · C(q−j)+(m−i) · Cj+(i−p) · C(n−j)+(m−i) (3) Vì K điểm chung cặp đường (f, g) mà f g có điểm chung, nên gọi T số cặp đường (f, g) mà f g có điểm chung K lập luận tương tự ta có j n−j j q−i T = Cj+i · C(n−j)+(m−i) · Cj+(i−p) · C(q−j)+(m−i) (4) Từ (2), (3) (4) suy T = V Từ n q q n S = M − V = Cm+n · Cq+m−p − Cm+q · Cm+n−p Tiếp theo, liên quan đến lưới điểm ngun, ta có số tốn sau: Bài toán 2.2.8 (Bài toán “Dyck path”) Đếm số đường lưới điểm nguyên, xuất phát từ gốc O(0, 0) đến điểm (2n, 2n), bước, ta sử dụng vec tơ (1; 1) (1; −1) không xuống trục Ox n−1 Ak An−1−k Kết ta An = k=0 Bài tốn 2.2.9 Có dãy số ngun: Sn = a1 , a2 , · · · , an cho ≤ a1 ≤ · · · ≤ an ; ≤ i với ≤ i ≤ n n Sn ∅ Cn 1 11 12 111 112 113 112 113 1111 1112 1113 1114 14 1124 1134 1124 1134 1123 1123 1133 1122 1122 1133 Lời giải Chúng ta đưa toán đường quen thuộc Gọi Tn tất đường lưới điểm nguyên, từ gốc tọa độ đến góc bên phải, theo hướng đông bắc không vượt qua đường chéo Ví dụ T3 hình 30 T3 Với T3 , có đoạn ngang, tức tuyến đường phải qua cạnh ô khác lưới ô vuông Những bước ngang xuất độ cao nằm đường chéo Một tuyến đường Tn bắt đầu bước ngang phía phải Chúng ta định nghĩa bước ngang theo đáy lưới có độ cao 1, h0 = Tổng quát, độ cao bước ngang thứ i tuyến đường Tn hi = v + 1, v tổng số bước dọc trước bước ngang Chúng ta có ánh xạ f từ Tn → Sn Với t thuộc Tn , định nghĩa f (t) = h0 h1 h2 · · · hn Ví dụ, độ cao với T3 111, 112, 113, 122, 123 Rõ ràng ≤ h1 ≤ h2 ≤ · · · ≤ hn hi ≤ i Bài tốn 2.2.10 Tìm số dãy ngun dương khơng giảm a1 a2 · · · an (ai ≤ n, i = 1, n) cho dãy tồn số có số i có giá trị i (ai = i) Ví dụ: với n = 111 112 222 233 333 Lời giải Cách Ta tạm gọi toán Dyck path với lưới vng n × n Bài tốn 2.2.8 Dyck path* Xét toán: đếm số đường từ điểm (0, 0) đến (n, n) vec tơ (1, 0) (0,1) mà đường cắt đường thẳng y = x điểm? Xét đường vậy, chia làm phần: nửa đường thẳng y = x nửa dưới, ta dựng song ánh g cách xóa nửa trên, lấy đối xứng chúng qua đường y = x, ta thu ảnh đường Dyck path*, dễ dàng chứng minh g song ánh Trở lại toán ban đầu, ta xây ánh xạ f cách đặt ak độ cao cộng thêm đoạn đường ngang thứ k đường toán bổ đề, chắn tồn số i có = i Như f song ánh Ta thu song ánh kép f g, đáp án toán số đường Dyck path* số catalan thứ n 31 Cách Vì tồn số i, ta chia đôi dãy thành dãy không giảm a1 a2 ai−1 , , ai+1 an gọi dãy trái dãy A, dãy phải B Hơn nữa, dãy A dãy khơng giảm đoạn [1, i − 1], số dãy Ci−1 cịn dãy B dãy khơng giảm đoạn [i, n] với độ chênh lệch đầu cuối nhỏ n − i + nên có Cn−i+1 dãy B Dịch chuyển số i từ đến n, ta thu đáp số Cn Bài toán 2.2.11 Cho 2n điểm thẳng hàng, nối 2n điểm n cung (1 điểm nối lần), cho cung chứa cung Hỏi có cách nối vậy? Lời giải Đánh số điểm từ trái qua phải: 1, 2, 3, · · · , 2n Gọi D tập đường Dyck path Gọi A tập cách nối điểm Ta xét ánh xạ f : D → A Giả sử d ∈ D, ta có f (d) = a = a1 a2 · · · a2n vec tơ (1, 1) điểm i đầu mút bên trái cung, vec tơ (1, −1) i đầu mút bên phải cung, ta thu f (d) đường Dyck path với 2n điểm Qua đó, với d khác f (d) khác ∀a ∈ A ∃d ∈ D thỏa mãn f (d) = a Vậy f song ánh, nên đáp số toán số đường Dyck path đến điểm (0, 2n) Cn 2.3 Ý nghĩa khái niệm “quỹ đạo” phương pháp “quỹ đạo” Ta xét toán sau: Cho lưới hình chữ nhật kích thước m × n Thả Robot vào điểm X0 (x0 , y0 ) Con Robot theo cạnh ô vuông lưới theo hướng (tất nhiên không vượt khỏi khuôn khổ lưới) (i) Hãy đường để Robot đến điểm X(x, y) lưới (ii) Gọi “độ dài” đường Robot tổng số cạnh vng mà qua Hãy đường ngắn cho Robot (iii) Liệt kê tất đường ngắn Robot từ điểm X0 đến điểm X Ta có tốn thú vị, có nhiều ứng dụng khoa học kỹ thuật (điều kiển, tự động hóa thực tiễn) Ta điểm qua thuật toán để giải số dạng toán nêu trên: 32 (i) Xét toán thứ nhất: Hãy đường để Robot đến điểm X(m, n) lưới Giả sử Robot dừng chân điểm Xi (xi , yi ), Xi (xi , yi ) = Xm (xm , ym ) điểm Robot điểm theo hướng (nếu “loang”) (xi ; yj+1 ) if (j < n) (xi ; yj−1 ) if (j > 1) (xi+1 ; yj ) if (i < m) (xi−1 ; yj ) if (i > 1) Ta gán X[i, j] tương ứng với vị trí có tọa độ (i, j) bảng (i, j + 1) (i − 1, j) (i + 1, j) (i, j − 1) Trạng thái X[i, j] gán giá trị Robot qua vị trí (i, j) Ban đầu ta đặt Robot vị trí (0, 0) gán tồn X[i, j] cịn lại Ta đưa thuật toán loang sau: procedure loang(i,j:integer); begin if X[i,j]=1 then begin X[i,j]:=0; b[i,i]:=false; if j1 then loang(i,j-1); if i1 then loang(i-1,j); end; Và theo nguyên lý “loang” vậy, khơng cịn đường Robot “quay lui” trở vị trí trước bước để tìm đường lại khả 33 Con Robot đến điểm X(x, y) Ý tưởng cịn gọi “loang” với ý tưởng “thử sai, quay lui” (ii) Xét toán tiếp theo: Gọi “độ dài” đường Robot tổng số cạnh ô vuông mà qua Hãy đường ngắn cho Robot Đối với có phương án sau: - Phương án 1: Áp dụng thuật tốn (i) với đường tìm Robot, ta ghi lại độ dài tìm khoảng cách ngắn nhất, sau đường tương ứng với khoảng cách Phương án bắt buộc phải sử dụng quy hoạch động nên không khả thi với thực tiễn (khi giá trị n, m lớn) - Phương án 2: Vận dụng ý tưởng khái niệm “quỹ đạo” phương pháp “quỹ đạo” ta chọn phương án: Robot thiết kế cho di chuyển sang phải lên (tức phép di chuyển theo hướng dương trục tọa độ); tức giả sử Robot dừng chân điểm Xi (xi , yi ), Xi (xi , yi ) = Xm (xm , ym ) điểm Robot điểm theo hướng sang phải lên (xi ; yj+1 ) if (j < n) (xi+1 ; yj ) if (i < m) (i, j + 1) (i + 1, j) procedure loang2(i,j:integer); begin if X[i,j]=1 then begin\\ X[i,j]:=0; b[i,i]:=false; if j n F (n, n) = a[n][n] Điều ta cần tìm F (1, 1) Kết F [1][1] = 36 Mảng a Mảng F bắt đầu − >4 3 kết thúc − >36 26 21 11 32 24 15 20 18 12 16 15 2< − 2< − Khi ta có chương trình sau • Xét F [i][j] • Nếu F [i][j] = F [i + 1][j] + a[i][j] có nghĩa ta phải xuống • Nếu F [i][j] = F [i][j + 1] + a[i][j] ta phải sang phải (Nếu F [i + 1][j] = F [i][j + 1] ta đến huớng (vẫn đúng)) Ví dụ 2.3.1 Xét ô F [2][2] = 24, F [3][2] + a[2][2] = 18 + = 24 nên ta đến ô a[2][2] = 24 ta phải xuống Từ dấu hiệu này, ta tạo hàm Trace có nội dung sau: hàm Truy_vết; 35 biến i, j : số; [ i:=1; j:=1; (i