1. Trang chủ
  2. » Tất cả

Cấu trúc dữ liệu và giải thuật backtracking gamesudoku

25 6 0

Đ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

Nội dung

Bàn cờ hình vuông được chia làm 9x9 ô vuông nhỏ, trong đó có một số ô vuông được đánh số từ 1→9 trước. Có thể điền tiếp các số từ 1→9 vào các ô còn lại sao cho: hàng ngang,  hàng dọc và các khối vuông 3x3 của bàn cờ là khác nhau từ 1→9?

CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT BACKTRACKING (THUẬT TOÁN QUAY LUI) BACKTRACKING Mục lục 1. Exhaustive search (Tìm kiếm vét cạn) Backtracking (Quay lui) 3. Branch and Bound (Thuật toán nhánh cận) Bài tốn Sudoku Bàn cờ hình vng chia làm 9x9 vng nhỏ, có số vng được đánh số từ 1→9 trước Có thể điền tiếp số từ 1→9 vào cịn lại cho: hàng ngang,  hàng dọc khối vuông 3x3 bàn cờ khác từ 1→9? Bài toán xếp hậu •Có hay khơng cách đặt N hậu vào bàn cờ NxN (N ≥ 4) cho chúng không cơng nhau? 1. Exhaustive search • Tìm kiếm vét cạn (exhaustive search) xem xét tất ứng cử viên nhằm phát đối tượng mong muốn.  • Các thuật tốn thiết kế tìm kiếm vét cạn thường gọi brute-force algorithms.  • Ý tưởng: sinh-kiểm, tức sinh tất khả có kiểm tra khả xem có thoả mãn điều kiện tốn khơng • Ưu điểm: ln đảm bảo tìm nghiệm chính xác • Nhược điểm: thời gian thực thi lâu, độ phức tạp lớn => vét cạn thường chỉ phù hợp với tốn có kích thước nhỏ Ứng dụng Sản xuất tất hoán vị tập giá trị Liệt kê tất tên, mật khẩu,… Backtracking • Quay lui (backtracking): chiến lược tìm kiếm lời giải cho tốn thỏa mãn ràng buộc • Ưu điểm của quay lui so với tìm  kiếm vét cạn: hạn chế các khả cần xem xét Bản chất Bản chất thuật toán quay lui trình tìm kiếm theo chiều sâu (Depth-First-Search) Bài tốn • Tìm dãy trạng thái (a1,a2, …,an) (i=1,2,…) trạng thái được chọn từ tập hữu hạn Ai trạng thái, thoả mãn điều kiện nào • Gọi dãy trạng thái (a1,a2, …,an) thỏa mãn u cầu bài tốn vector nghiệm • Ý tưởng quay lui: xây dựng vector nghiệm xuất phát từ vector rỗng, bước bổ sung thêm thành phần vector nghiệm, lần lượt a1,a2, Bài tốn • Đầu tiên, tập S1 ứng cử viên thành phần vector nghiệm A1  • Bước 1: chọn a1 ∈ S1, ta có vector (a1).  • Bước i-1: tìm vector (a1,a2, ,ai-1)  là nghiệm phần.   • Bước i: mở rộng nghiệm phần: xác định tập Si ứng cử viên cho thành phần thứ i vector nghiệm Khi Si tập tập Ai trạng thái Có khả năng:  Bài tốn • Nếu Si ∉ ∅, chọn ∈ Si nghiệm phần (a1, a2, , – , ai) loại khỏi Si Sau tiếp tục mở rộng nghiệm phần cách đệ quy thủ tục mở rộng • Nếu Si ∈ ∅, quay lại chọn phần tử a’i – Si – làm thành phần thứ i-1 vector nghiệm Nếu thành công (Si – không rỗng), vector (a1, a2, , – 2, a’­i – 1), tiếp tục mở rộng nghiệm phần Khi quay lui để chọn a’1 mà S1 rỗng thuật tốn dừng Lưu ý: mở rộng nghiệm phần, kiểm tra xem có nghiệm khơng Nếu nghiệm ghi lại in Cài đặt Quay lui đệ quy Quay lui khơng đệ quy Bài tốn sudoku Áp dụng quay lui để giải toán sudoku Ý tưởng: Mỗi bước tìm tập giá trị để điền vào ô trống, sau đệ quy để điền ô Bài tốn sudoku Bài tốn xếp hậu Ứng dụng • • • • Games: queens, sudoku,… Bài tốn tìm đường mê cung Tìm chu trình Hamilton đồ thị Bài tốn tơ màu đồ Branch and bound (thuật tốn nhánh và cận) • Thuật tốn nhánh cận quay lui: • Là kỹ thuật đánh giá việc tiếp tục đào sâu có tạo nghiệm tốt nghiệm tốt mà ta lưu trữ hay khơng • Nhờ có nhánh cận mà ta đưa định sớm thuật tốn quay lui • Ý Tưởng: Ta sẽ thực hiện việc đánh giá theo từng bước, nếu khơng có khả tìm thấy  kết tốt cắt bỏ nhánh đó, khơng thực tìm tiếp chuyển ngay sang nhánh khác Khi đó, ghi nhận kết tốt lúc ban đầu Thuật giải • Bài toán: giả sử (a1, a2, an) (ai (i=1,2, n)) được chọn từ tập Si ứng viên) nghiệm tốn có giá cost(a1, ,an) ≥ Tìm nghiệm có giá thấp (nghiệm tối ưu) Giả sử giá nghiệm phần khơng giảm.  • Bài giải: • B1: giả sử cost*(a1, ,ak ) cận giá tất nghiệm (a1, ,ak,ak+1, ) mở rộng nghiệm phần (a1, ,ak ) • B2: q trình tìm kiếm, giá nghiệm tốt lowcost • B3: đạt tới nghiệm phần (a1, ,ak ) mà cost*(a1, ,ak ) > lowcost cắt bỏ tất nhánh từ đỉnh ak  ... Tìm chu trình Hamilton đồ thị Bài tốn tơ màu đồ Branch and bound (thuật? ?tốn nhánh? ?và? ?cận) • Thuật tốn nhánh cận quay lui: • Là kỹ thuật đánh giá việc tiếp tục đào sâu có tạo nghiệm tốt nghiệm tốt... dụng Sản xuất tất hoán vị tập giá trị Liệt kê tất tên, mật khẩu,… Backtracking • Quay lui (backtracking) : chiến lược tìm kiếm lời giải cho tốn thỏa mãn ràng buộc • Ưu điểm của quay lui so với tìm .. .BACKTRACKING Mục lục 1. Exhaustive search (Tìm kiếm vét cạn) Backtracking (Quay lui) 3. Branch and Bound (Thuật toán nhánh cận) Bài tốn Sudoku Bàn cờ

Ngày đăng: 22/01/2023, 19:37

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w