1 / 16

Giảng Viên : Nguyễn Thị Vân Môn : Phân Tích và Thiết Kế Giải Thuật Nhóm : 1

Trường CĐ Công Nghệ Thủ Đức. Giảng Viên : Nguyễn Thị Vân Môn : Phân Tích và Thiết Kế Giải Thuật Nhóm : 1 Chủ Đề : Bài Toán n Quân Hậu Thành Viên : Lý Anh Cường Nguyễn Minh Thuận. I. Bài toán n quân hậu.

Download Presentation

Giảng Viên : Nguyễn Thị Vân Môn : Phân Tích và Thiết Kế Giải Thuật Nhóm : 1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Trường CĐ CôngNghệThủĐức GiảngViên :NguyễnThịVân Môn : Phân Tích và ThiếtKếGiảiThuật Nhóm : 1 ChủĐề:BàiToánn Quân Hậu ThànhViên: LýAnhCường Nguyễn Minh Thuận

  2. I. Bài toán n quân hậu Bài toán nquân hậu là bài toán đặt n quânhậu trên bàn cờvua kích thước n × n sao cho không có quân hậu nào có thể "ăn" được quân hậu khác VíDụ Bài toán 4 quân hậu

  3. II. Tínhchấtsốhọccủalờigiải Ký hiệu quân hậu đứng ở ô nằm trên hàng thứ i của lời giải là Q[i, j] i j 1 2 3 4 1 i + j = const 2 i – j = const 3 4 Vì thế ta gọi các đường chéo song song với đường chéo chính là đường chéo trừ, các đường chéo song song với đường chéo phụ là đường chéo cộng.

  4. III. Xây dựng nhanh mộtlờigiải Các bước tìm VíDụ Bài toán 4 quân hậu B1: Chia n cho 12 lấy số dư r. B1 B2 B2: Viết lần lượt các số chẵn từ 2 – n. Nếu số dư là 3 hoặc 9 thì chuyển 2 xuống cuối danh sách r = 4 4 % 12 = 4 2 4 Nếu r = 3 hoặc r = 9 2 4 6 8 … 4 6 8 … 2

  5. III. Xây dựng nhanh mộtlờigiải Các bước tìm VíDụ B3 B3: Bổ sung lần lượt các số lẻ từ 1 đến n vào cuối danh sách. Nếu r= 8 thì đổi chỗ từng cặp, còn nếu r = 2 thì đổi chỗ 1 và 3 và chuyển 5 xuống cuối danh sách và nếu r = 3 hoặc r = 9, chuyển 1 và 3 xuống cuối danh sách 2 4 1 3 Nếu r = 8 … 1 3 5 7 … … 3 1 7 5 … Nếu r = 2 … 1 3 5 7 … … 3 1 7 … 5

  6. III. Xây dựng nhanh mộtlờigiải Các bước tìm VíDụ B3 B3: Bổ sung lần lượt các số lẻ từ 1 đến n vào cuối danh sách. Nếu r= 8 thì đổi chỗ từng cặp, còn nếu r = 2 thì đổi chỗ 1 và 3 và chuyển 5 xuống cuối danh sách và nếu r = 3 hoặc r = 9, chuyển 1 và 3 xuống cuối danh sách 2 4 1 3 Nếu r = 8 … 3 1 7 5 … Nếu r = 2 … 3 1 7 … 5 Nếu r = 3 hoặc r = 9 … 1 3 5 7 … … 5 7 … 1 3

  7. III. Xây dựng nhanh mộtlờigiải Các bước tìm VíDụ B4: Lấy danh sách trên làm danh sách chỉ số cột, ghép vào danh sách chỉ số dòng theo thứ tự tự nhiên ta được một lời giải của bài toán. B4 1 2 3 4 2 4 1 3 1 2 3 4

  8. III. Xây dựng nhanh mộtlờigiải 14 quân hậu (r = 2): 2, 4, 6, 8, 10, 12, 14, 3, 1, 7, 9, 11, 13, 5. 15 quân hậu (r = 3): 4, 6, 8, 10, 12, 14, 2, 5, 7, 9, 11, 13, 15, 1, 3. 20 quân hậu (r= 8): 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 3, 1, 7, 5, 11, 9, 15, 13, 19, 17.

  9. IV. Một số lời giải cho bài toán n quân hậu Ta có bảng sau đây cho n quân hậu Lưu ý:rằng bài toán với 6 quân hậu có ít lời giải hơn bài toán với 5 quân hậu. Hiện nay chưa có công thức về số lượng chính xác lời giải.

  10. IV. Thuật toán trên máy tính

  11. IV. Thuật toán trên máy tính

  12. IV. Thuật toán trên máy tính

  13. IV. Thuật toán trên máy tính

  14. V. Mã giả • Void n_Queens(i) • { • for (j = 1; j <= n; j++) • if (a[j] && b[i + j] && c[i - j]) • { • x[i] = j; • a[j] = b[i + j] = c[i - j] = false; • if (i == n) Print(x); • else • n_Queens(i + 1); • a[j] = b[i + j] = c[i - j] = true; • } • } • Thủ tục tìm tất cả các lời giải của bài toán n hậu chỉ bao gồm một lời gọi n_Queens(1);

  15. VI. Biểu diễn bằng cây Start 1.3 1.4 1.1 1.2 2.3 2.4 2.4 2.1 2.1 2.2 3.2 3.1 3.4 3.3 4.3 4.2

More Related