1. Trang chủ
  2. » Giáo án - Bài giảng

Toán học: ST Bài toán liệt kê

234 820 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 234
Dung lượng 3,18 MB

Nội dung

[...]... mọi bài toán đều đơn giản như trên (Sinh các chỉnh hợp không lặp chập k theo thứ tự từ điển chẳng hạn) Ta sang một chuyên mục sau nói đến một phương pháp liệt kê có tính phổ dụng cao hơn, để giải các bài toán liệt kê phức tạp hơn đó là: Thuật toán quay lui (Back tracking) Lê Minh Hoàng Tập bài giảng chuyên đề Bài toán liệt kê 12 §3 THUẬT TOÁN QUAY LUI Thuật toán quay lui dùng để giải bài toán liệt kê. .. dựng một thuật toán nào thực sự hữu hiệu để giải bài toán, mà cho tới nay việc tìm nghiệm của chúng vẫn phải dựa trên mô hình liệt kê toàn bộ các cấu hình có thể và đánh giá, tìm ra cấu hình tốt nhất Việc liệt kê cấu hình có thể cài đặt bằng các phương pháp liệt kê: Sinh tuần tự và tìm kiếm quay lui Dưới đây ta sẽ tìm hiểu phương pháp liệt kê bằng thuật toán quay lui để tìm nghiệm của bài toán tối ưu... nguồn gốc của tên gọi "thuật toán quay lui" Lê Minh Hoàng Tập bài giảng chuyên đề Bài toán liệt kê 23 §4 KỸ THUẬT NHÁNH CẬN I BÀI TOÁN TỐI ƯU Một trong những bài toán đặt ra trong thực tế là việc tìm ra một nghiệm thoả mãn một số điều kiện nào đó, và nghiệm đó là tốt nhất theo một chỉ tiêu cụ thể, nghiên cứu lời giải các lớp bài toán tối ưu thuộc về lĩnh vực quy hoạch toán học Tuy nhiên cũng cần phải... trình liệt kê chỉnh hợp không lặp và hoán vị về kỹ thuật đánh dấu Ở đây chỉ khác với liệt kê hoán vị là: liệt kê hoán vị chỉ cần một mảng đánh dấu xem giá trị có tự do không, còn bài toán xếp hậu thì cần phải đánh dấu cả 3 thành phần: Cột, đường chéo ĐB-TN, đường chéo ĐN- TB Trường hợp đơn giản hơn: Yêu cầu liệt kê các cách đặt n quân xe lên bàn cờ nxn sao cho không quân nào ăn quân nào chính là bài toán. .. vẽ cây tìm kiếm quay lui của chương trình trên 3 Liệt kê tất cả các tập con của tập S gồm n số nguyên {S1, S2, , Sn} nhập vào từ bàn phím 4 Tương tự như bài 3 nhưng chỉ liệt kê các tập con có max - min ≤ T (T cho trước) III LIỆT KÊ CÁC CHỈNH HỢP KHÔNG LẶP CHẬP K Để liệt kê các chỉnh hợp không lặp chập k của tập S = {1, 2, , n} ta có thể đưa về liệt kê các cấu hình (x1, x2, , xk) ở đây các xi ∈ S và... 1 3 2 3 1 2 1 Bài tập: 1 Có hai chương trình trên xử lý không tốt trong trường hợp tầm thường, đó là trường hợp n = 0 đối với chương trình liệt kê dãy nhị phân cũng như trong chương trình liệt kê hoán vị, hãy khắc phục điều đó 2 Liệt kê các dãy nhị phân độ dài n có thể coi là liệt kê các chỉnh hợp lặp chập n của tập 2 phần tử {0, 1} Hãy lập chương trình: Nhập vào hai số n và k, liệt kê các chỉnh hợp... cách đặt n quân xe lên bàn cờ nxn sao cho không quân nào ăn quân nào chính là bài toán liệt kê hoán vị PROG3_5.PAS * Thuật toán quay lui giải bài toán xếp hậu program n_Queens; const max = 20; var n: Integer; x: array[1 max] of Integer; a: array[1 max] of Boolean; Lê Minh Hoàng Tập bài giảng chuyên đề Bài toán liệt kê 20 b: array[2 2 * max] of Boolean; c: array[1 - max max - 1] of Boolean; Count: LongInt;... 1 0 0 0 1 1 Cuối cùng, tên gọi thuật toán quay lui, đứng trên phương diện cài đặt có thể nên gọi là kỹ thuật vét cạn bằng quay lui thì chính xác hơn, tuy nhiên đứng trên phương diện bài toán, nếu như ta coi công việc giải bài toán bằng cách xét tất cả các khả năng cũng là 1 cách giải thì tên gọi Thuật toán quay Lê Minh Hoàng Tập bài giảng chuyên đề Bài toán liệt kê 22 lui cũng không có gì trái logic... trị khác>; end; end; end; Thuật toán quay lui sẽ bắt đầu bằng lời gọi Try(1) Ta có thể trình bày quá trình tìm kiếm lời giải của thuật toán quay lui bằng cây sau: Try(1) Try(2) Try(3) Try(2) Try(3) Try(3) Try(3) Lê Minh Hoàng Tập bài giảng chuyên đề Bài toán liệt kê 13 I LIỆT KÊ CÁC DÃY NHỊ PHÂN ĐỘ DÀI N Biểu diễn dãy nhị phân độ dài N dưới dạng (x1, x2, , xn) Ta sẽ liệt kê các dãy này bằng cách thử dùng... Try(i + 1); end; end; begin Lê Minh Hoàng Tập bài giảng chuyên đề Bài toán liệt kê 15 Init; Try(1); end Nếu để ý chương trình trên và chương trình liệt kê dãy nhị phân độ dài n, ta thấy về cơ bản chúng chỉ khác nhau ở thủ tục Try(i) - chọn thử các giá trị cho xi, ở chương trình liệt kê dãy nhị phân ta thử chọn các giá trị 0 hoặc 1 còn ở chương trình liệt kê các tập con k phần tử ta thử chọn xi là một . N 6 II. LIỆT KÊ CÁC TẬP CON K PHẦN TỬ 7 III. LIỆT KÊ CÁC HOÁN VỊ 8 § 3. THUẬT TOÁN QUAY LUI 12 I. LIỆT KÊ CÁC DÃY NHỊ PHÂN ĐỘ DÀI N 13 II. LIỆT KÊ CÁC TẬP CON K PHẦN TỬ 14 III. LIỆT KÊ CÁC CHỈNH. những cấu hình nào. Bài toán yêu cầu đưa ra danh sách các cấu hình có thể có gọi là bài toán liệt kê tổ hợp . Để giải bài toán liệt kê, cần phải xác định được một thuật toán để có thể theo đó. tính phổ dụng cao hơn, để giải các bài toán liệt kê phức tạp hơn đó là: Thuật toán quay lui (Back tracking). ]Lê Minh Hoàng^ Tập bài giảng chuyên đề Bài toán liệt kê ]12^ § § 3 3 . . T T H H U U Ậ Ậ T T

Ngày đăng: 29/10/2014, 18:00

TỪ KHÓA LIÊN QUAN

w