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

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

25 6 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Cấu trúc dữ liệu và giải thuật backtracking gamesudoku
Trường học Trường Đại Học Công Nghệ Thông Tin - Đại Học Quốc Gia Hà Nội
Chuyên ngành Công Nghệ Thông Tin
Thể loại Báo cáo môn học
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 25
Dung lượng 2,76 MB
File đính kèm file dinh kem.rar (22 MB)

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

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?

Trang 1

(THUẬT TOÁN QUAY LUI)

CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

Trang 2

Mục lục

1. Exhaustive search (Tìm kiếm vét cạn)

2 Backtracking (Quay lui)

3. Branch and Bound (Thuật toán nhánh và cận)

Trang 3

Bài toán Sudoku

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?

Trang 4

Bài toán xếp hậu

•Có hay không một cách đặt N con hậu vào bàn cờ NxN (N ≥ 4) sao cho chúng không tấn công nhau?

Trang 5

• Các thuật toán được thiết kế bằng tìm

kiếm vét cạn thường được gọi là

brute-force algorithms. 

• Ý tưởng: sinh-kiểm, tức là sinh ra tất

cả các khả năng có thể có và kiểm tra mỗi khả năng xem nó có thoả mãn các điều kiện của bài toán không

• Ưu điểm: luôn đảm bảo tìm ra 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 các bài toán có kích thước nhỏ

Trang 7

Ứng dụng

Sản xuất tất cả các hoán vị của một tập các

giá trị. Liệt kê tất cả các tên, mật khẩu,…

Trang 8

2 Backtracking

• Quay lui (backtracking): là một

chiến lược tìm kiếm lời giải cho các bài toá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ả năng cần xem xét.

Trang 9

Bản chất

Bản chất của thuật toán quay lui là một quá trình tìm kiếm theo chiều

sâu (Depth-First-Search)

Trang 10

• Gọi dãy các trạng thái (a1,a2,

…,an) thỏa mãn các yêu cầu của bài toán là vector nghiệm.

• Ý tưởng của quay lui: xây dựng vector nghiệm xuất phát từ

vector rỗng, mỗi bước bổ sung thêm một thành phần vector nghiệm, lần lượt a1,a2,

Trang 11

Bài toán

chính là A1 

• Bước 1: chọn a1 S ∈ 1, ta có vector (a1). 

• Bước i-1: tìm được vector (a1,a2, ,ai-1)  là nghiệm một phần.  

• Bước i: mở rộng nghiệm một phần: xác định tập Si các ứng cử viên cho thành phần thứ i của vector nghiệm Khi đó Si là tập con của tập Ai các trạng thái Có 2 khả năng: 

Trang 12

Bài toán

• Nếu Si , chọn a∉ ∅ i S∈ i và nghiệm một phần (a1, a2, , ai – 1 , ai) và loại ai

mở rộng

• Nếu Si , quay lại chọn phần tử a’∈ ∅ i – 1 trong Si – 1 làm thành phần thứ i-1 của vector nghiệm Nếu thành công (Si – 1 không rỗng), được vector (a1, a2, , ai – 2, a’ i – 1), tiếp tục mở rộng nghiệm một phần Khi quay lui để chọn a’1 mà S1 rỗng thì thuật toán dừng

Lưu ý: trong khi mở rộng nghiệm một phần, kiểm tra xem nó có là

nghiệm không Nếu là nghiệm thì ghi lại hoặc in ra.

Trang 13

Cài đặt

Quay lui đệ quy Quay lui không đệ quy

Trang 15

Bài toán sudoku

Áp dụng quay lui để giải bài toán sudoku

Ý tưởng: Mỗi bước tìm tập các giá trị khả dĩ để điền vào ô trống, và sau đó đệ quy để điền ô tiếp theo

Trang 16

Bài toán sudoku

Trang 17

Bài toán xếp hậu

Trang 18

Ứng dụng • Games: 8 queens, sudoku,…• Bài toán tìm đường đi trong mê cung

• Tìm chu trình Hamilton của đồ thị

• Bài toán tô màu bản đồ

Trang 19

3 Branch and bound

(thuật toán nhánh và cận)

• Thuật toán nhánh cận trong quay lui:

• Là một kỹ thuật đánh giá việc tiếp tục đào sâu có tạo ra nghiệm tốt hơn

nghiệm tốt nhất mà ta lưu trữ hay không

• Nhờ có nhánh cận mà ta có thể đưa ra quyết định sớm hơn thuật toá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ả năng tìm thấy  kết quả tốt hơn thì sẽ cắt bỏ nhánh đó, không thực hiện tìm tiếp và sẽ chuyển ngay sang nhánh khác Khi đó, chỉ ghi

nhận kết quả tốt hơn lúc ban đầu.

Trang 20

Thuật giải

• Bài toán: giả sử (a1, a2, an) (ai (i=1,2, n)) được chọn ra từ tập Si các ứng viên) là nghiệm của bài toán và có một giá cost(a1, ,an) ≥ 0 Tìm nghiệm có giá thấp nhất (nghiệm tối ưu) Giả sử giá của các nghiệm một phần là không giảm. 

• Bài giải:

(a1, ,ak,ak+1, ) là mở rộng của nghiệm một phần (a1, ,ak )

• B2: trong quá trình tìm kiếm, giá của nghiệm tốt nhất là lowcost

• B3: khi đạt tới nghiệm một phần (a1, ,ak ) mà cost*(a1, ,ak ) > lowcost thì cắt

Trang 21

Cài đặt

Trang 23

Ưu điểm

• Không cần phải xem xét tất cả các nghiệm vẫn có thể tìm được nghiệm tối đa

Trang 24

Đóng góp của các thành viên

Nguyễn Thị Hường Viết code, tìm hiểu nội dung và ảnh minh hoạ cho slide

Trần Quang Việt Viết code, tìm hiểu nội dung và các ví dụ, bài toán của thuật toán cho slide

Lý Hoàng Anh Viết code, tìm hiểu nội dung và chỉnh sửa giao diện cho slide.Người thuyết trình

Trang 25

THANK YOU FOR

WATCHING

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