Tải bản đầy đủ (.pdf) (18 trang)

Bài tập thực hành Trí Tuệ Nhân Tạo thuật toán bfs

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 (871.13 KB, 18 trang )

10/9/2008

Trường Đại học Khoa học Tự nhiên
Khoa Công nghệ Thông tin

TÀI LIỆU HƯỚNG DẪN THỰC HÀNH
môn Trí tuệ nhân tạo

Xác định đỉnh thấy được
cho bài toán
Robot tìm đường

Nội dung trình bày

1

Giới thiệu vấn đề

2

Hướng giải quyết

3

Ví dụ minh họa

4

Đề xuất cải tiến

1




10/9/2008

GIỚI THIỆU VẤN ĐỀ
™ Bài toán Robot tìm đường: Tìm đường đi ngắn
nhất giữa hai điểm trên một mặt phẳng, trong đó
có chứa chướng ngại vật là những đa giác lồi.


GOAL

START

GIỚI THIỆU VẤN ĐỀ
™ Vấn đề đặt ra: Khi đứng tại một đỉnh, làm sao
xác định robot có thể nhìn thấy những đỉnh nào?
ƒ Đỉnh không bị che khuất bởi cạnh của bất kì
đa giác nào là đỉnh nhìn thấy được.

2


10/9/2008

Nội dung trình bày

1

Giới thiệu vấn đề


2

Hướng giải quyết

3

Ví dụ minh họa

4

Đề xuất cải tiến

HƯỚNG GIẢI QUYẾT
™ Nhận xét: Cho trước một điểm P và cạnh AB
không chứa P, những điểm nằm trong cung APB
và nằm
ằ bên kia đoạn thẳng

AB so với P sẽ là
những điểm không thấy được từ P.

A

P
B

3



10/9/2008

HƯỚNG GIẢI QUYẾT
™ Để xác định từ đỉnh P có thể nhìn thấy những
đỉnh nào trên toàn bản đồ, ta lần lượt tạo cung từ
đỉnh P và các cạnh AB của mọi đa giác, những
đỉnh nằm trong cung APB sẽ bị loại. Sau khi
duyệt hết tập cạnh của các đa giác, những đỉnh
không bị loại là đỉnh thấy được.

NHẮC LẠI KIẾN THỨC HÌNH HỌC
™ Cho 2 điểm A(x1, y1), B(x2, y2). Phương trình
đường thẳng tạo bởi đoạn thẳng AB:
d: (x – x1)(y2 – y1) = (y – y1)(x2 – x1)
™ Xét vị trí tương đối của C(x3, y3) và D(x4, y4) đối
với đường thẳng d.
ƒ Nếu d(C)*d(D) ≥ 0 ⇒ C, D nằm cùng phía.
ƒ Nếu d(C)*d(D) < 0 ⇒ C, D nằm khác phía.

4


10/9/2008

CÁC BƯỚC THỰC HIỆN
™ Gọi P là đỉnh đang xét, và V là tập cạnh của tất
cả các đa giác.
™ Với mỗi cạnh đa giác, gọi là AB, trong tập V:
ƒ Tạo d1 từ P và A, d2 từ P và B, và d3 từ A và B
ƒ Xét tất cả các đỉnh Q còn lại trong đồ thị với

bộ d1, d2, d3 đang xét.
• Nếu d1(Q)*d1(B) ≥ 0 và d2(Q)*d2(A) ≥ 0 và
d3(Q)*d3(P) < 0 thì Q không
khô nhìn
hì thấy
thấ được
đ
từ P.
P
• Ngược lại, nhìn thấy được từ P.

™ Kết thúc vòng lặp, ta xác định được tập các đỉnh
còn lại là đỉnh thấy được từ P trên toàn bản đồ.

HÌNH VẼ MINH HỌA
™ Trong hình này, từ P, Robot nhìn thấy được đỉnh
E nhưng không nhìn thấy C và D do C, D nằm
trong cung APB.
d1

E

A

P

D

d3
B


C

d2

5


10/9/2008

Nội dung trình bày

1

Giới thiệu vấn đề

2

Hướng giải quyết

3

Ví dụ minh họa

4

Đề xuất cải tiến

VÍ DỤ MINH HỌA
™ Xét đa giác 1


GOAL

START

6


10/9/2008

VÍ DỤ MINH HỌA
™ Xét đa giác 1

GOAL

START

VÍ DỤ MINH HỌA
™ Xét đa giác 1

GOAL

START

7


10/9/2008

VÍ DỤ MINH HỌA

™ Xét đa giác 1

GOAL

START

VÍ DỤ MINH HỌA
™ Xét đa giác 2

GOAL

START

8


10/9/2008

VÍ DỤ MINH HỌA
™ Xét đa giác 2

GOAL

START

VÍ DỤ MINH HỌA
™ Xét đa giác 2

GOAL


START

9


10/9/2008

VÍ DỤ MINH HỌA
™ Xét đa giác 3

GOAL

START

VÍ DỤ MINH HỌA
™ Xét đa giác 3

GOAL

START

10


10/9/2008

VÍ DỤ MINH HỌA
™ Xét đa giác 3

GOAL


START

CÂU HỎI ?
™ Nếu gặp một cạnh mà có 2 đỉnh đã bị loại thì có
cần xét cạnh này hay không?

GOAL

?

START

11


10/9/2008

Nội dung trình bày

1

Giới thiệu vấn đề

2

Hướng giải quyết

3


Ví dụ minh họa

4

Đề xuất cải tiến

ĐỀ XUẤT CẢI TIẾN
™ Nhận xét: Trong đa giác lồi, luôn luôn tồn tại một
cạnh AB (kể cả cạnh chéo) sao cho
ƒ Cung APB là lớn nhất so với tất cả các cung
do những cạnh còn lại tạo thành với P.
ƒ Các đỉnh đa giác (trừ A, B) thuộc cung APB
A

P
B

12


10/9/2008

ĐỀ XUẤT CẢI TIẾN
™ Như vậy, với mỗi đa giác, ta chỉ cần chọn hai
đỉnh A và B trong số n đỉnh sao cho cung APB là
lớn nhất.
ấ Từ đó, những đỉnh nằm
ằ trong cung
APB là đỉnh không nhìn thấy được từ P đối với
đa giác đang xét.


VÍ DỤ MINH HỌA
™ Xét đa giác 1

GOAL

START

13


10/9/2008

VÍ DỤ MINH HỌA
™ Xét đa giác 2

GOAL

START

VÍ DỤ MINH HỌA
™ Xét đa giác 3

GOAL

START

14



10/9/2008

CÂU HỎI ?
™ Làm sao xác định được cạnh nào của đa giác có
thể tạo cung lớn nhất?
d1
G

GOAL

F
E

A

D

d3
B

d2

C

START

PHƯƠNG PHÁP GIẢI QUYẾT
™ Bước 1: chọn một cạnh AB bất kì để tạo với P
cung APB.
ƒ Nếu tồn tại đỉnh nào nằm ngoài cung APB:

làm tiếp bước 2.
ƒ Ngược lại, đây là cạnh tạo cung lớn nhất.

15


10/9/2008

PHƯƠNG PHÁP GIẢI QUYẾT
™ Bước 2: tiến hành cập nhật hai đỉnh của cạnh để
có cạnh mới tạo được cung lớn hơn.
ƒ Chọn đỉnh T bất kì thuộc cung APB đang xét.
ƒ Lần lượt xét từng đỉnh R nằm ngoài APB
• Nếu d1(R)*d1(T) ≥ 0 ⇒ R, T cùng phía so với d1 ⇒
R phải nằm gần d2 hơn ⇒ cập nhật B bằng R.
• Ngược lại, cập nhật A bằng R.
• Xét các đỉnh nằm ngoài còn lại:
– nếu tồn tại đỉnh nào nằm ngoài cung RPB (hay APR) thì xét
tiếp đỉnh này.
– Ngược lại, đã có cung lớn nhất, dừng.

CÂU HỎI ?
™ Chọn cạnh AB bất kì làm cạnh khởi đầu.

d1
G

GOAL

F

E

A

D

d3
B

d2

C

START

16


10/9/2008

CÂU HỎI ?
™ C nằm ngoài và gần d2 hơn d1 ⇒ cập nhật AB
thành AC.
d1
GOAL

F

G


E

A

d3
B

d2

D
C

START

CÂU HỎI ?
™ F nằm ngoài và gần đỉnh d1 hơn d2 ⇒ cập nhật
AC thành FC.
d1
GOAL

F

G

E

A

d3
B


D

d2

C

START

17


10/9/2008

CÂU HỎI ?
™ G nằm ngoài và gần đỉnh d1 hơn d2 ⇒ cập nhật
FC thành GC ⇒ cung GPC là lớn nhất.
d1
GOAL

F

G

E

A

d3
B


D

d2

C

START

18



×