ỨNG DỤNG SQL ĐỂ LIỆT KÊ CÁC PHẦN TỬ CỦA BÀI TOÁN TỔ HỢP
Các bài toán tổ hợp thường cho kết quả khá lớn. Việc hiển thị các kết quả đó không phải là yêu cầu của bài toán. Nhưng nếu được thì đó là cách hỗ trợ khá tốt, có thể gợi ý để tìm ra lập luận cho có kết quả đúng.
Bài viết này coi rằng bạn đã biết khái niệm tích Đề các, các loại tổ hợp cơ bản và ít nhiều sử dụng câu lệnh SQL trên Access, hay trên Excel (phải viết ở phần VBA). Từ đó chỉ ra cách tạo liệt kê các tổ hợp cơ bản.
Một tiện lợi của lệnh SQL là viết điều kiện Where khá gần với ngôn ngữ nói thông thường nên sẽ dễ dàng áp dụng cho các bài toán trong chương trình lớp 12.
Hy vọng bài viết sẽ giúp ích cho các bạn giáo viên và học sinh
1. Câu lệnh SQL đơn giản và tích Đề các
Các tập hợp có thể biểu diễn thành bảng có 1 cột. Biểu diễn bảng trong Excel là 1 vùng 1 cột, không cần tên trường, vùng đó đặt tên là A, B. Excel lấy F1 làm tên trường của mọi bảng.
Còn nếu thể hiện trong Access, hãy tạo bảng là A, B, nên đặt tên trường cũng là F1 để tiện theo dùng như các ví dụ.
Câu lệnh SQL đơn giản nhất là Select A.F1, B.F1 From A, B;
thì kết quả là 1 bảng, thực chất là tích Đề các của các cột của các bảng đó.
Ví dụ 1: Nếu A = {a,b,c}, B = {0;1} thì câu lệnh trên áp dụng cho 2 bảng A, B là một bảng, viết ở dạng tập hợp là {(a, 0) , (a, 1), (b, 0) , (b, 1), (c, 0) , (c, 1)}.
Nếu A = B thì ta kí hiệu A[SUP]2[/SUP] = A×A. Còn câu lệnh SQL là
Select A1.F1, A2.F2 From A A1, A A2;
Chú ý: Đúng ra là: Select A1.F1, A2.F2 From A As A1, A As A2; nhưng tôi đã thử và Access chạy bình thường.
Sau đây, các ví dụ thường xét trên 2 tập A = {1; 2; ...; n} (có n phần tử) và tập B ={0; 1} (có 2 phần tử) và các số nguyên dương k, n.
2. Chỉnh hợp lặp chập k của n
Ví dụ 2. Nếu A = {1; 2; 3} thì câu lệnh
Select A1.F1, A2.F2 From A A1, A A2;
cho chỉnh hợp lặp chập 2 của 3 là 1 bảng, viết ở dạng tập hợp là (mỗi hàng của bảng là 1 tọa độ)
A[SUP]2[/SUP] ={(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)}
Ví dụ 3. Câu lệnh
Select B1.F1, B2.F1, B3.F1, B4.F1, B5.F1
From B B1, B B2, B B3, B B4, B B5;
cho tập hợp B[SUP]5[/SUP] = {
(0, 0, 0, 0, 0), (0, 0, 0, 0, 1), (0, 0, 0, 1, 0), (0, 0, 0, 1, 1),
(0, 0, 1, 0, 0), (0, 0, 1, 0, 1), (0, 0, 1, 1, 0), (0, 0, 1, 1, 1),
(0, 1, 0, 0, 0), (0, 1, 0, 0, 1), (0, 1, 0, 1, 0), (0, 1, 0, 1, 1),
(0, 1, 1, 0, 0), (0, 1, 1, 0, 1), (0, 1, 1, 1, 0), (0, 1, 1, 1, 1),
(1, 0, 0, 0, 0), (1, 0, 0, 0, 1), (1, 0, 0, 1, 0), (1, 0, 0, 1, 1),
(1, 0, 1, 0, 0), (1, 0, 1, 0, 1), (1, 0, 1, 1, 0), (1, 0, 1, 1, 1),
(1, 1, 0, 0, 0), (1, 1, 0, 0, 1), (1, 1, 0, 1, 0), (1, 1, 0, 1, 1),
(1, 1, 1, 0, 0), (1, 1, 1, 0, 1), (1, 1, 1, 1, 0), (1, 1, 1, 1, 1)}
Qua đó, chỉnh hợp lặp không hạn chế giá trị k.
Liệt kê chỉnh hợp và tổ hợp xin để bài tiếp.
Nội dung sau là nhập thử
(0, 0, 0, 0, 0), (0, 0, 0, 0, 1), (0, 0, 0, 1, 0), (0, 0, 0, 1, 1),
Các bài toán tổ hợp thường cho kết quả khá lớn. Việc hiển thị các kết quả đó không phải là yêu cầu của bài toán. Nhưng nếu được thì đó là cách hỗ trợ khá tốt, có thể gợi ý để tìm ra lập luận cho có kết quả đúng.
Bài viết này coi rằng bạn đã biết khái niệm tích Đề các, các loại tổ hợp cơ bản và ít nhiều sử dụng câu lệnh SQL trên Access, hay trên Excel (phải viết ở phần VBA). Từ đó chỉ ra cách tạo liệt kê các tổ hợp cơ bản.
Một tiện lợi của lệnh SQL là viết điều kiện Where khá gần với ngôn ngữ nói thông thường nên sẽ dễ dàng áp dụng cho các bài toán trong chương trình lớp 12.
Hy vọng bài viết sẽ giúp ích cho các bạn giáo viên và học sinh
1. Câu lệnh SQL đơn giản và tích Đề các
Các tập hợp có thể biểu diễn thành bảng có 1 cột. Biểu diễn bảng trong Excel là 1 vùng 1 cột, không cần tên trường, vùng đó đặt tên là A, B. Excel lấy F1 làm tên trường của mọi bảng.
Còn nếu thể hiện trong Access, hãy tạo bảng là A, B, nên đặt tên trường cũng là F1 để tiện theo dùng như các ví dụ.
Câu lệnh SQL đơn giản nhất là Select A.F1, B.F1 From A, B;
thì kết quả là 1 bảng, thực chất là tích Đề các của các cột của các bảng đó.
Ví dụ 1: Nếu A = {a,b,c}, B = {0;1} thì câu lệnh trên áp dụng cho 2 bảng A, B là một bảng, viết ở dạng tập hợp là {(a, 0) , (a, 1), (b, 0) , (b, 1), (c, 0) , (c, 1)}.
Nếu A = B thì ta kí hiệu A[SUP]2[/SUP] = A×A. Còn câu lệnh SQL là
Select A1.F1, A2.F2 From A A1, A A2;
Chú ý: Đúng ra là: Select A1.F1, A2.F2 From A As A1, A As A2; nhưng tôi đã thử và Access chạy bình thường.
Sau đây, các ví dụ thường xét trên 2 tập A = {1; 2; ...; n} (có n phần tử) và tập B ={0; 1} (có 2 phần tử) và các số nguyên dương k, n.
2. Chỉnh hợp lặp chập k của n
Ví dụ 2. Nếu A = {1; 2; 3} thì câu lệnh
Select A1.F1, A2.F2 From A A1, A A2;
cho chỉnh hợp lặp chập 2 của 3 là 1 bảng, viết ở dạng tập hợp là (mỗi hàng của bảng là 1 tọa độ)
A[SUP]2[/SUP] ={(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)}
Ví dụ 3. Câu lệnh
Select B1.F1, B2.F1, B3.F1, B4.F1, B5.F1
From B B1, B B2, B B3, B B4, B B5;
cho tập hợp B[SUP]5[/SUP] = {
(0, 0, 0, 0, 0), (0, 0, 0, 0, 1), (0, 0, 0, 1, 0), (0, 0, 0, 1, 1),
(0, 0, 1, 0, 0), (0, 0, 1, 0, 1), (0, 0, 1, 1, 0), (0, 0, 1, 1, 1),
(0, 1, 0, 0, 0), (0, 1, 0, 0, 1), (0, 1, 0, 1, 0), (0, 1, 0, 1, 1),
(0, 1, 1, 0, 0), (0, 1, 1, 0, 1), (0, 1, 1, 1, 0), (0, 1, 1, 1, 1),
(1, 0, 0, 0, 0), (1, 0, 0, 0, 1), (1, 0, 0, 1, 0), (1, 0, 0, 1, 1),
(1, 0, 1, 0, 0), (1, 0, 1, 0, 1), (1, 0, 1, 1, 0), (1, 0, 1, 1, 1),
(1, 1, 0, 0, 0), (1, 1, 0, 0, 1), (1, 1, 0, 1, 0), (1, 1, 0, 1, 1),
(1, 1, 1, 0, 0), (1, 1, 1, 0, 1), (1, 1, 1, 1, 0), (1, 1, 1, 1, 1)}
Qua đó, chỉnh hợp lặp không hạn chế giá trị k.
Liệt kê chỉnh hợp và tổ hợp xin để bài tiếp.
Nội dung sau là nhập thử
(0, 0, 0, 0, 0), (0, 0, 0, 0, 1), (0, 0, 0, 1, 0), (0, 0, 0, 1, 1),
Lần chỉnh sửa cuối: