Professional Documents
Culture Documents
L3-4. Uninformed, Informed Search
L3-4. Uninformed, Informed Search
UNINFORMED, INFORMED
SEARCH
Uninformed search
- Giải quyết vấn đề bằng tìm kiếm: Khái niệm, Phát biểu bài toán trạng thái đơn, Tìm kiếm theo
cấu trúc cây; Đánh giá chiến lược tìm kiếm
- Ví dụ yếu tố nào dùng để đánh giá chiến lược tìm kiếm, có cần kiểm tra tất cả các khả năng để
đảm bảo tìm kiếm hoàn chỉnh – tối ưu?
- Tìm kiếm cơ bản: Tìm kiếm theo chiều rộng (BFS); Tìm kiếm với chi phí cực tiểu (UCS); Tìm kiếm
theo chiều sâu, giới hạn độ sâu, sâu dần (DFS, DLS, IDS)
- Ví dụ: So sánh các chiến lược tìm kiếm (tìm kiếm nào sử dụng ít bộ nhớ hơn, tìm kiếm nào nhanh
hơn, khác nhau trong triển khai fringer như thế nào?); So sánh thứ tự duyệt, tìm đường đi trên
cây (đối với trường hợp cụ thể)
Informed search
- Phương pháp, đặc điểm các chiến lược tìm kiếm có thông tin bổ sung; So sánh các chiến lược
tìm kiếm có thông tin bổ sung
- Ví dụ: Phân biệt hàm đánh giá các phương pháp tìm kiếm (tham lam, A*, UCS), phương pháp
nào sử dụng đường đã đi thực hiện, đường đi ước đến đích (hay tổng hai yếu tố trên), khi nào
phương pháp trên tối ưu-hoàn chỉnh
- Ví dụ: So sánh với tìm kiếm cơ bản (fringe, mở rộng node, thông tin sử dụng), chỉ ra đường đi
trên ví dụ cụ thể
- Local search (đặc điểm, khác biệt chỉ số thực thi, ví dụ dung lượng bộ nhớ)
- Minnimax, alpha-beta (so sánh với tìm kiếm cơ bản, đặc điểm giá trị giá trị alpha-beta)
Chương trình demo
I. Cài đặt
- Python 3.9 (trên máy tôi, python 3.10 có lỗi khi sử dụng thư viện matplotlib.pyplot)
o Instal matplotlib
python -m pip install matplotlib
python -m pip install pycairo
- Pycharm: PyCharm 2021.2.2 (Community Edition)
- Thay đổi tính fitness: hàm fitness(board) (dòng 47) để quan sát tốc độ tìm ra lời giải (hiện đang
có 2 option để thử)
- Chọn lựa cá thể (cho tái sx, lai ghép) theo fitness: theo phương pháp “roulette wheel selection”
(hàm selectOne(population) dòng 61)
Các options:
# demo option
#1-show chromosome presentation and fitness calculation
#2-show crossover operator
#3-show mutation operator
#4-run GA
Option = 1 (show chromosome presentation and fitness calculation)
Các options:
# demo option:
# 0: show initial state
# 1: show action and transition model
# 1.5: terminal test and utility function: in the code
# 2: run program
Size = 3
Prunning = False
DepthLimit = False
Depth = 4
Giới thiệu cho sinh viên về ví dụ xây dựng trò chơi cờ vua (tham khảo để làm bài tập lớn): Có thể sử dụng
thư viện về luật chơi (biểu diễn bàn cờ, quân cờ, danh sách nước đi hợp lệ); Tuyệt đối tự viết code tìm
nước đi tối ưu (score, minimax, pruning...).
Chương trình minh họa sử dụng thư viện (chess) của python để theo dõi, in trạng thái bàn cờ, liệt kê các
nước đi hợp lệ. Các hàm tự viết để demo: min/max, tính điểm, ma trận vị trí quân cờ.
Cân nhắc
- Vấn đề đối với giới hạn độ sâu (ăn quân tại độ sâu tới hạn?)
- Thêm yếu tố ngẫu nhiên (vd chọn ngẫu nhiên trong các nước đi tốt nhất nếu gần score)
- Học từ CSDL các ván cờ mẫu
- Quản lý thời gian tính toán (thời gian cho nước cờ, ván cờ)
- Hiển thị GUI
Lưu ý
- Có thể sử dụng thư viện về luật chơi (biểu diễn bàn cờ, quân cờ, danh sách nước đi hợp lệ)
- Tuyệt đối tự viết code tìm nước đi tối ưu (score, minimax, pruning...)
VII. Tìm kiếm thỏa mãn ràng buộc
Demo CSP với thuật toán tìm kiếm quay lui (có và không có kiểm tra tiến). Các hàm được viết theo (sát)
slide lớp học.
Minh họa thuật toán quay lui trong quá trình tô màu các bang nước Úc (như trong silde bài giảng) với
các tùy chọn về thứ tự xem xét các biến (các bang được tô màu) và thứ tự xem xét các giá trị (các màu
tô) của biến.
Option = 0 ( thứ tự các bang như trong slide, thứ tự màu tô như trong domain – red, green, blue)
# 0: default options
if Demo == 0:
Variables = ['WA', 'NT', 'Q', 'NSW', 'V', 'SA', 'T'] # order in the class slides
OrderDomainValueChange = False # same as order of Domains
BackJump = False
Quá trình Backtracking lặp lại với các biến “NT”, “NSW”, SA” (biến thứ 2, 4, 6) vì màu “red” trùng với giá
trị được tô cho biến trước đó.
Option = 1
# 1: order of value for each variable (example of change orderDomainValues() function
elif Demo == 1:
Variables = ['WA', 'NT', 'Q', 'NSW', 'V', 'SA', 'T']
OrderDomainValueChange = True # order from next item compared to last order
BackJump = False
Thay đổi thứ tự màu (giá trị), với màu tô là màu tiếp theo so với màu được tô trước đó. Tránh được
backtracking các biến thứ 2, 4, 6. Có thể gặp vấn đề mới và phải backtracking nhiều lần ở sau (khi 3 bang
đầu được tô cả 3 màu dẫn đến không thể tổ màu bang “SA” sau này).
Option = 4, như option = 3 với tùy chọn có backjuping, số lần thực hiện backtracking giảm đáng kể (3-4
lần)
# 3: back-jumping demo
elif Demo == 3:
Variables = ['WA', 'NT', 'Q', 'NSW', 'V', 'T', 'SA'] # order with 'T' in the middle of variables
OrderDomainValueChange = True # order from next item compared to last used one
BackJump = False # without BackJump implementation