Tải bản đầy đủ (.pptx) (24 trang)

giải quyết vấn đề bằng phương pháp tìm kiếm tìm kiếm không có thông tin

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.43 MB, 24 trang )

AI

University of
Technology and
Education

GIẢI QUYẾT VẤN ĐỀ
BẰNG PHƯƠNG PHÁP TÌM KIẾM
TÌM KIẾM KHƠNG CĨ THƠNG TIN (tt)

1


Table of content
1. Depth First Search
2. Depth Limited Search
3. Iterative Deepening Search
4. Bidirectional Search

2


1

Depth First Search

3


Depth First Search :
Idea


Bắt đầu từ đỉnh (nút) gốc ban đầu

1

Duyệt đi xa nhất theo từng
nhánh
Khi duyệt hết nhánh . Lùi về từng
đỉnh để tìm. Duyệt những nhánh
tiếp theo
Tìm thấy đỉnh cần tìm
4
Đã duyệt hết đỉnh

2

3

4


Depth First Search :
Pseudocode

5

function DFS ( v )
{
gán nhãn v đã duyệt
For ( u = 1; u <= n ; u++)
If( u tồn tại trong danh sách

kề v)
If ( u có nhãn là
khơng )
{
Xử lý đỉnh u
DFS ( u )

?


Depth First Search

Advantages
Disadvantages
6


Depth First Search :
Practice
1
2
3
4
7

5

6

7


8
9

12

10

11


2

Depth Limited Search

8


Depth Limited
Search: Idea
Bắt đầu từ đỉnh (nút) gốc ban đầu

1

2

Duyệt hết nhánh /đến hạn mức .
Lùi về từng đỉnh để tìm. Duyệt
những nhánh tiếp theo


3

4
9

Phát triển các nút chưa xét theo chiều
sâu nhưng có hạn mức

Tìm thấy đỉnh cần tìm
Đã duyệt hết đỉnh trong hạn
mức


Depth Limited
Search
function DLS ( src, target , limit)
{
if (src == target) return true;
if (limit <=0)
return false;
For each adjacent I of src
// thực thi đệ quy nếu đỉnh I chưa xét
DLS ( I, target, limit)
}
10

?


Depth Limited Search

Có bộ nhớ hiệu
quả
Tránh đi vào con
đường khơng
mang lại kết quả
tốt

Giải pháp nằm dưới
giới hạn
Không tối ưu con
đường
Thời gian

11


Depth Limited Search:
Practice

12


3

Iterative Deepening
Search

13



IDS : Idea
Gọi hàm DLS với độ sâu giới hạn ban đầu

1

2

3

14

Nếu chưa thấy đỉnh cần tìm tăng độ
sâu giới hạn và gọi lại hàm DLS
Lặp lại cho đến khi thấy đỉnh cần
tìm hoặc đã duyết hết đỉnh


Iterative Deepening
Search
function IDS (src, target, max_depth )
{
for limit from 0 to max_depth
if DLS (src, target, limit) ==
1
true
return true;
2
3
return false;
}

4
6
7
5
15

?


Iterative Deepening
Search

Advantages
Disadvantages
16


4

Bidirectional Search

17


Bidirectional Search:

Idea
Đây là thuật tốn tìm đường đi thơng qua việc
thực thi đồng thời tìm kiếm từ 2 hướng:
1


Tìm kiếm bắt đầu từ đỉnh nguồn
tiến đến đỉnh mục tiêu

2

Tìm kiếm bắt đầu từ đỉnh mục tiêu
lùi về đỉnh nguồn
Thuật toán kết thúc khi cả 2 tìm
kiếm gặp nhau tại điểm giao

18


19


Bidirectional Search
void BS (start, goal)
{
1. Khởi tạo mảng bool cho điểm bắt đầu (1)
Khởi tạo mảng bool cho điểm kết thúc(2)
2. Khởi tạo mảng int biểu thị đường đi cho đường đi bắt
đầu từ start
Khởi tạo mảng int biểu thị đường đi cho đường đi bắt
đầu từ goal
3. Cho toàn bộ mảng bool của (1) và (2) là false
Cho (1) tại start và (2) tại goal là true
4. Khởi tạo 2 list/queue/stack (tùy theo yêu cầu thuật
toán) cho từng đường đi

20

?


Bidirectional Search
5. Khởi tạo biến meet = -1
6. while (!list_start.empty() && !list_goal.empty())
{
7. Bất kỳ thuật tốn tìm kiếm đã học cho 2 phần start, goal
8. meet = kiểm tra xem chúng đã gặp nhau qua 2 mảng (1) và (2)
if (meet != -1)
{
in đường đi
Kết thúc chương trình
}
}
}
21

?


Bidirectional Search

Advantages
Disadvantages
22



Thanks!
Any questions?

23


References
Thuật tốn Depth First Search — Giải Thuật Lập Trình (std
io.vn)
Tìm kiếm theo chiều sâu – Wikipedia tiếng Việt
Thuật tốn Depth Limited Search — Blog Lập Trình
(bloglaptrinh2016.wordpress.com)
Tìm kiếm giới hạn chiều sâu – Wikipedia tiếng Việt
/>
24



×