1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thuật toán a tìm đường đi ngắn nhất tránh vật cản

54 205 1

Đ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

Định dạng
Số trang 54
Dung lượng 1,46 MB

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

Nội dung

LỜI CAM ĐOAN Tôi xin cam đoan: Các công việc trình bày trong luận văn: “Thuật toán A* tìm đường đi ngắn nhất tránh vật cản” là công trình nghiên cứu của cá nhân, được thực hiện trên cơ

Trang 2

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

Người hướng dẫn khoa học: TS LÊ HỒNG TRANG

NGHỆ AN, 2017

Trang 3

LỜI CẢM ƠN

Lời đầu tiên, tôi xin bày tỏ lòng biết ơn sâu sâu sắc của mình tới tất cả những thầy giáo, cô giáo đã hỗ trợ, giúp đỡ tôi trong quá trình thực hiện luận văn tốt nghiệp

Tôi xin cảm ơn các thầy giáo, cô giáo Khoa công nghệ thông tin, phòng Sau Đại học đã tạo mọi điều kiện thuận lợi nhất giảng dạy giúp đỡ tôi trong quá trình học tập và làm luận văn tốt nghiệp

Tôi xin gửi lời cảm ơn chân thành đến TS.Lê Hồng Trang, là người

hướng dẫn, nhận xét, thầy đã đóng góp những định hướng, ý kiến quý báu, giúp đỡ tôi có thể hoàn thành được luận văn này

Xin kính chúc các thầy cô giáo sức khỏe và tiếp tục đạt nhiều thành công trong nghiên cứu khoa học và trong sự nghiệp giảng dạy, chúc khoa công nghệ thông tin ngày một phát triển

Cuối cùng, tôi xin cảm ơn gia đình và đồng nghiệp, những người luôn ở bên động viên cổ cũ tôi trong suốt quá trình học tập

Tôi xin chân thành cảm ơn !

Nghệ An, tháng 06 năm 2017

Học viên

Bùi Đức Hoàng

Trang 4

LỜI CAM ĐOAN

Tôi xin cam đoan:

Các công việc trình bày trong luận văn: “Thuật toán A* tìm đường đi

ngắn nhất tránh vật cản” là công trình nghiên cứu của cá nhân, được thực

hiện trên cơ sở nghiên cứu lý thuyết, kiến thức kinh điển, nghiên cứu khảo sát tình hình thực tiễn và dưới sự hướng dẫn khoa học của Tiến sĩ Lê Hồng Trang, đảm bảo không vi phạm luật sở hữu trí tuệ và pháp luật Việt Nam Nếu sai, tôi xin chịu trách nhiệm trước pháp luật

TÁC GIẢ LUẬN VĂN

Bùi Đức Hoàng

Trang 5

MỤC LỤC

TRANG PHỤ BÌA

LỜI CẢM ƠN 1

LỜI CAM ĐOAN 2

MỤC LỤC 3

DANH MỤC CÁC BẢNG, HÌNH VẼ 5

MỞ ĐẦU 7

CHƯƠNG 1 LÝ THUYẾT VỀ HEURISTIC VÀ ĐỒ THỊ 10

1.1 Hàm đánh giá Heuristic 10

1.1.1 Tính khả chấp 10

1.1.2 Tính đơn nhất 11

1.1.3 Khả năng cập nhật thông tin 11

1.1.4 Ví dụ 11

1.2 Các khái niệm cơ bản về lý thuyết đồ thị 13

1.2.1 Khái niệm về đồ thị 13

1.2.2 Phân loại đồ thị 13

1.2.3 Các thuật ngữ cơ bản trong đồ thị 16

1.2.4 Một số dạng đồ thị đặc biệt 18

1.2.5 Biểu diễn đồ thị 20

CHƯƠNG 2 THUẬT TOÁN A* 23

2.1 Bài toán 23

2.2 Thuật toán A* 29

2.3 Mô tả thuật toán A* 29

2.4 Ví dụ minh họa hoạt động thuật toán A* 31

CHƯƠNG 3 THUẬT TOÁN A* TÌM ĐƯỜNG ĐI NGẮN NHẤT TRÁNH VẬT CẢN 42

3.1 Bài toán tìm đường đi tránh vật cản 42

Trang 6

3.2 Mô tả thuật toán A* tránh vật cản 43

3.3 Sử dụng hàm định hướng 43

3.4 Ví dụ minh họa 44

3.5.Thực thi thuật toán 46

KẾT LUẬN 48

TÀI LIỆU THAM KHẢO 50

PHỤ LỤC 51

Trang 7

DANH MỤC CÁC BẢNG, HÌNH VẼ

Bảng 1.1 Danh sách kề 22

Bảng 2.2: Biểu diễn viết tắt của các địa điểm trong thành phố Vinh 31

Hình Hình 1.1 Các bước di chuyển của các ô số 13

Hình 1.2 Biểu đồ phân loại đồ thị 13

Hình 1.3 Đơn đồ thị vô hướng 14

Hình 1.4 Đa đồ thị vô hướng 14

Hình 1.5 Giả đồ thị vô hướng 15

Hình 1.6 Đơn đồ thị có hướng 15

Hình 1.7 Đa đồ thị có hướng 16

Hình 1.8 Cho đồ thị 17

Hình 1.9 Cho đồ thị 18

Hình 1.10 Biểu đồ các dạng đồ thị đặc biệt 18

Hình 1.11 Đồ thị đầy đủ K2, K3, K4 19

Hình 1.12 Đồ thị vòng C3, C4, C5 19

Hình 1.13 Đồ thị vòng W3, W4, W5 19

Hình 1.14 Đồ thị vòng Q1, Q2, Q3 20

Hình 1.15 Mô tả đồ thị phẳng 20

Hình 1.16 Biểu diễn đồ thị dưới dạng ma trận liền kề 21

Hình 1.17 Đồ thị 22

Hình 2.1 Đồ thị biểu diễn không gian trạng thái 24

Hình 2.2 Đồ thị biểu diễn đường đi của bước 1 24

Hình 2.3 Đồ thị biểu diễn đường đi của bước 2 25

Trang 8

Hình 2.4 Đồ thị biểu diễn đường đi của bước 3 25

Hình 2.5 Đồ thị biểu diễn đường đi của bước 4 26

Hình 2.6 Đồ thị biểu diễn bản đồ thành phố Vinh 32

khoảng cách tính theo (km) 32

Hình 2.7 Biểu diễn đường đi của bước 1 34

Hình 2.8 Biểu diễn đường đi của bước 2 35

Hình 2.9 Biểu diễn đường đi của bước 3 36

Hình 2.10 Biểu diễn đường đi của bước 4 38

Hình 2.11 Biểu diễn đường đi của bước 5 40

Hình 2.12 Biểu diễn đường đi của bước 6 41

Hình 3.1 Môi trường hoạt động của robot 42

Hình 3.2 Tìm đường đi từ A đến B 44

Hình 3.3 Các bước di chuyển của robot 45

Hình 3.4 Kết quả đường đi ngắn nhất của robot 45

Hình 3.5 Giao diện chương trình 46

Hình 3.6 Bản đồ được tạo trên chương trình 47

Hình 3.7 Đường đi của robot 47

Hình 3.8 Bản đồ có nhiều đường đi 48

Hình 3.9 Đường đi tìm được của robot 48

Trang 9

MỞ ĐẦU

1 Sự cần thiết của vấn đề nghiên cứu

Bài toán đường đi ngắn nhất là bài toán tìm một đường đi giữa hai đỉnh sao cho tổng các trọng số của các cạnh tạo nên đường đi đó là nhỏ nhất Trong thực tế bài toán tìm đường đi ngắn nhất là một bài toán rất kinh điển và

cơ bản, chúng ta cho hai điểm bất kỳ vào một miền, mặt phẳng nào đó tìm đường đi ngắn nhất giữa hai điểm thuộc miền, mặt phẳng đó Và thông thường để giải quyết bài toán đó người ta rời rạc hóa các miền, mặt phẳng đó thành các đồ thị và chúng ta chuyển bài toán về dạng bài toán tìm đường đi ngắn nhất trên đồ thị

Thuật toán Dijkstra là một trong những thuật toán nổi tiếng nhất trong khoa học máy tính Trở lại trước khi máy tính là một điều, khoảng năm 1956, Edsger Dijkstra đã nghĩ ra một cách để tìm ra con đường ngắn nhất trong đồ thị có cạnh là tất cả các giá trị không âm Cho đến ngày nay, thuật toán của ông vẫn được sử dụng trong những lĩnh vực "định tuyến" Nó đã được mở rộng bởi những người khác để tạo ra con đường tiên tiến hơn việc tìm kiếm các thuật toán như A *

Thuật toán A* là thuật toán được thiết kế và được kiểm nghiệm rất tốt để giải bài toán tìm đường đi ngắn nhất trên đồ thị Đây là thuật toán đầy đủ theo nghĩa rằng nó sẽ luôn luôn tìm thấy một lời giải nếu bài toán có lời giải Thuật toán bao gồm một số các đặc điểm sau:

- Là mở rộng của thuật toán Dijkstra

- Kết hợp với sử dụng một “đánh giá heuristic” tăng hiệu năng tìm kiếm

của thuật toán trên đồ thị Trên thực tế người ta đã kiểm nghiệm và nhận thấy được tính hiệu quả của nó

Vì vậy, tôi chọn đề tài là áp dụng thuật toán A* để giải một cách hiệu quả bài toán tìm đường đi ngắn nhất tránh vật cản

Trang 10

2 Mục tiêu nghiên cứu

Luận văn tập trung vào 3 mục tiêu chính sau:

- Tìm hiểu thuật toán A* và bài toán tìm đường đi ngắn nhất;

- Mở rộng thuật toán A* trong việc giải quyết bài toán tìm đường đi ngắn nhất tránh vật cản;

- Mô phỏng đường đi của robot

3 Đối tượng và phạm vi nghiên cứu

3.1 Đối tượng nghiên cứu

(a) Nghiên cứu lý thuyết

Nghiên cứu bài toán tìm đường đi ngắn nhất qua các tài liệu trong và ngoài nước; các kết quả khảo sát có tính chất đánh giá của các nghiên cứu đi trước; các tài liệu lập trình để thực thi thuật toán

(b) Nghiên cứu thực nghiệm

Sử dụng một ngôn ngữ lập trình để thực thi thuật toán cho ví dụ ứng dụng trong thực tế của bài toán tìm đường đi ngắn nhất tránh vật cản

3.2 Phạm vi nghiên cứu

Trong phạm vi luận văn này, tôi tập trung nghiên cứu, giải quyết bài toán tìm đường đi ngắn nhất tránh vật cản, ứng dụng bài toán vào một ví dụ với ngôn ngữ Matlab

4 Nội dung nghiên cứu

4.1.Về lý thuyết:

- Tìm hiểu lý thuyết về Heuristic và đồ thị

Trang 11

- Biểu diễn bài toán tìm đường đi ngắn nhất sử dụng thuật toán A*

- Phân tích đánh giá, hiệu quả của thuật toán

4.2.Về thực nghiệm

- Thực thi thuật toán trên Matlab và giả lập ứng dụng tìm đường đi

5 Đóng góp luận văn

- Tìm hiểu và nắm rõ về thuật toán trong bài toán tìm đường đi ngắn nhất

và những ứng dụng trong bài toán mang lại, cũng như thấy được tác dụng của thuật toán khi áp dụng trong thực tế cuộc sống

- Mở rộng bài toán tìm đường đi ngắn nhất khi đường đi cần tránh những vật cản cho trước

- Áp dụng thuật toán A* cho bài toán tìm đường đi ngắn nhất tránh vật cản cho robot

6 Kết cấu của luận văn

Luận văn gồm 3 chương và được cấu trúc với nội dung như sau:

Chương 1: Trình bày khái niệm về Heuristic, sự quan trọng của hàm

đánh giá Heuristic và các tính chất của nó Mô tả qua một ví dụ minh họa Trình bày các đặc trưng cơ bản về lý thuyết đồ thị

Chương 2: Nội dung chương mô tả thuật toán A*, giới thiệu thuật toán

thấy rõ được cách thức hoạt động của thuật toán Ứng dụng nó giải quyết các bài toán trong thực tế, làm cơ sở để vận dụng giải quyết bài toán được đề cập

ở chương tiếp theo

Chương 3: Nội dung chương sẽ trình bày bài toán, phân tích bài toán,

mô hình hoá bài toán dưới dạng bài toán tìm đường đi ngắn nhất tránh vật cản, phân tích vật cản là gì, khi gặp vật cản robot sẽ đi như thế nào? vận dụng thuật toán đề cập ở Chương 2 để giải quyết bài toán Nội dung chương cũng

sẽ mô phỏng tìm đường đi ngắn nhất tránh vật cản của thuật toán A* qua ngôn ngữ Matlab

Trang 12

CHƯƠNG 1 LÝ THUYẾT VỀ HEURISTIC VÀ ĐỒ THỊ

Chương này trình bày tổng quan về lý thuyết heuristic và đồ thị Mục 1.1 trình bày khái niệm và các tích chất đặc trưng về hàm đánh giá heuristic Mục 1.2 nêu lên các nội dung cơ bản về lý thuyết đồ thị cần biết để vận dụng vào giải quyết bài toán luận văn đề cập tới Nội dung của chương được trích dẫn từ các tài liệu [1, 2, 3]

1.1 Hàm đánh giá Heuristic

Heuristics là các quy tắc, phương pháp, chiến lược, mẹo giải hay hướng cách nào đó nhằm làm giảm khối lượng tìm kiếm lời giải trong không gian bài toán cực lớn

Hàm đánh giá Heuristics đó là các hàm phỏng đoán, ước chừng, thô, giá trị của hàm phụ thuộc vào trạng thái hiện tại của bài toán tại mỗi bước giải Nhờ giá trị này, ta có thể chọn được cách hành động tương đối hợp lý trong từng bước của thuật giải

Hàm đánh giá đóng vài trò rất quan trọng:

 Nếu hàm đánh giá chính xác thì tìm kiếm hiệu quả

 Nếu hàm đánh giá không chính xác thì tìm kiếm kém hiệu quả

Hàm đánh giá được xây dựng tùy thuộc vào vấn đề bài toán và một vấn

đề có thể có nhiều hàm đánh giá

1.1.1 Tính khả chấp

Một heuristic dùng để tìm ra con đường dẫn đến đích ngắn nhất bất cứ khi nào nó có tồn tại được gọi là heuristic khả chấp Nói cách khác, tính khả chấp của heuristic là nó sẽ bảo đảm tìm thấy đường đi ngắn nhất đến trạng thái đích

Một thuật toán tìm kiếm có thể chấp nhận được nếu nó được đảm bảo sẽ tìm thấy một đường đi tối thiểu dẫn đến lời giải, bất kỳ lúc nào con đường đó

Trang 13

có mặt Trong việc xác định tính khả chấp của một heuristic Chúng ta định

nghĩa hàm đánh giá f: f(n) = g(n) + h(n)

Với g(n) là giá của đường đi ngắn nhất từ nút bắt đầu đến nút n, còn h(n)

là giá thực sự của đường đi ngắn nhất từ nút n đến nút đích Như vậy f(n) là chi phí thực của con đường tối ưu từ nút xuất phát đến nút đích đi qua nút n Nếu thuật toán A dùng hàm đánh giá f, thì nó được gọi là thuật toán A*

1.1.2 Tính đơn nhất

Khi có một trạng thái được phát hiện nhờ sử dụng tìm kiếm heuristic, liệu có bảo đảm rằng về sau sẽ không tìm được một trạng thái như vậy với khoảng cách ngắn hơn tính từ trạng thái xuất phát Đây chính là thuộc tính của sự đơn nhất Nói cách khác, tính đơn nhất của một heuristic là nó sẽ bảo đảm đường đi ngắn nhất đến mỗi trạng thái

Một heuristic h sẽ là đơn nhất nếu:

- Đối với tất cả các trạng thái n và n+1, ta có:

h(n) - h(n+1)< c(n, n+1)

Trong đó: c(n, n+1) là chi phí thực tính của đường đi từ trạng thái n đến trạng thái n+1

- Giá trị heuristic của trạng thái đích là 0, tức h(goal) = 0

1.1.3 Khả năng cập nhật thông tin

Chúng ta có thể đặt câu hỏi liệu có một heuristic nào “tốt hơn” những cái khác không? Heuristic này tốt hơn heuristic kia theo ý nghĩa nào? Đây là khả

năng cung cấp thông tin của một heuristic Đối với hai heuristic h1 và h2, nếu

h1(n)< h2(n) ứng với tất cả các trạng thái n trong không gian tìm kiếm thì

heuristic h2 được gọi là có khả năng cung cấp thông tin nhiều hơn so với h1

1.1.4 Ví dụ

Cho bài toán 8 số với các hàm đánh giá như sau:

Trang 14

Khi đó ta xét h(n) là các ô số không nằm đúng vị trí trong trạng thái đích

ta thực hiện di chuyển các ô số sao cho về trạng thái đích (xem Hình 1.1)

Trang 15

Hình 1.1 Các bước di chuyển của các ô số

1.2 Các khái niệm cơ bản về lý thuyết đồ thị

1.2.1 Khái niệm về đồ thị

Là một cấu trúc rời rạc gồm các đỉnh và các cạnh nối các đỉnh đó Được

mô tả hình thức: G = (V, E) V gọi là tập các đỉnh và E gọi là tập các cạnh Có thể coi E là tập các cặp (u, v) với u và v là hai đỉnh thuộc V

1.2.2 Phân loại đồ thị

Các loại đồ thị (Hình 1.2)

Hình 1.2 Biểu đồ phân loại đồ thị

Trang 16

Đơn đồ thị vô hướng

Đồ thị G=(V,E) được gọi là đơn đồ thị vô hướng:

V: Là tập các đỉnh

E: Là tập các cặp không có thứ tự gồm hai phần tử khác nhau của V

Ví dụ: Cho đơn đồ thị vô hướng (Hình 1.3)

Hình 1.3 Đơn đồ thị vô hướng

Khi đó: V={1,2,3,4,5}

E={(1,2),(1,3),(1,5),(2,5),(3,4),(3,5),(4,5)}

Đa đồ thị vô hướng

Đồ thị G=(V,E) được gọi là đa đồ thị vô hướng:

V: Là tập các đỉnh

E: Là họ các cặp không có thứ tự gồm hai phần tử khác nhau của V

Hai cạnh e 1 , e 2 gọi là cạnh lặp nếu chúng cùng tương ứng với một cặp đỉnh

Ví dụ: Cho đa đồ thị vô hướng (Hình 1.4)

Hình 1.4 Đa đồ thị vô hướng

Trang 17

Khi đó: V={1,2,3,4,5}

E={(1,2),(1,3),(1,5),(2,5),(3,4),(3,5),(4,5),(1,2),(2,1),(5,2),(3,5)}

Giả đồ thị vô hướng

Đồ thị G=(V,E) được gọi là giả đồ thị vô hướng:

V: Là tập các đỉnh

E: Là các cặp không có thứ tự gồm hai phần tử không nhất thiết phải khác

nhau của V

Cạnh e được gọi là khuyên nêu nó có dạng: e=(u,u)

Ví dụ: Cho giả đồ thị vô hướng (xem Hình 1.5)

Hình 1.5 Giả đồ thị vô hướng

E: Là tập các cặp có thứ tự gồm hai phần tử khác nhau của V (tập các cung)

Ví dụ: Cho đơn đồ thị có hướng (xem Hình 1.6)

Hình 1.6 Đơn đồ thị có hướng

Trang 18

E: Là tập các cặp có thứ tự gồm hai phần tử khác nhau của V (tập các cung)

Hai cạnh e 1 , e 2 gọi là cạnh lặp nếu chúng cùng tương ứng với một cặp đỉnh

Ví dụ: Cho đa đồ thị có hướng (Hình 1.7)

Trang 19

Hình 1.8 Cho đồ thị

Khi đó: Deg(1)=2, Deg(2)=2, Deg(3)=3

Deg(4)=3, Deg(5)=3, Deg(6)=1, Deg(7)=0

Đỉnh treo: là đỉnh chỉ có duy nhất một cạnh liên thuộc với nó Đỉnh 6

Đỉnh cô lập: là đỉnh không có cạnh nào liên thuộc với nó Đỉnh 7

Trọng số (độ dài)

Trọng số: là mỗi cạnh được gắn với một giá trị nào đó, được gọi là trọng số (độ dài) hoặc các tên khác tùy theo ứng dụng

Ví dụ: Cho đồ thị để hiểu về trọng số (độ dài) ta xem Hình 2.7

Khi đó ta biết: (1,2)=a, (1,3)=b, (2,5)=e, (3,4)=c, (3,5)=d, (4,5)=f, (4,6)=g

Kề trong đồ thị có hướng

Giả sử u và v là hai đỉnh của đồ thị có hướng G và e=(u,v) là một cung

của đồ thị, khi đó ta nói:

- u và v kề nhau, cung e đi ra đỉnh u và đi vào v

- u là đỉnh đầu, V là đỉnh cuối của cạnh e

Đường đi, chu trình

Đường đi độ dài n từ đỉnh u đến đỉnh v trên đồ thị vô hướng G = (V,E) là

dãy theo đỉnh: x0, x1, xn Trong đó: u = x0,v= xn, (x0, x1, xn) ∈ E

Ví dụ: Cho đồ thị (Hình 1.9)

Khi đó: u gọi là đỉnh đầu, v gọi là đỉnh cuối của đường đi

Trang 20

Hình 1.9 Cho đồ thị

Theo đỉnh: (1, 3, 4, 5, 6) Theo cạnh: (b, c, h, g)

Chu trình là đường đi có đỉnh đầu và đỉnh cuối trùng nhau

Chu trình được gọi là đơn nếu nó không đi qua một cạnh nào quá 1 lần

Chu trình đơn: (1, 2, 6, 3, 1) Không phải là chu trình đơn: (1, 3, 4, 5, 6, 3, 1) Đường đi: (4,2,1,3,5,6)

Chu trình là đường đi có đỉnh đầu và đỉnh cuối trùng nhau

Chu trình: (2,1,3,5,6,2)

1.2.4 Một số dạng đồ thị đặc biệt

Một số dạng đồ thị đặc biệt được mô tả (Hình 1.10)

Hình 1.10 Biểu đồ các dạng đồ thị đặc biệt

Trang 21

Đồ thị đầy đủ

Là một đồ thị đơn vô hướng n đỉnh được gọi là đồ thị đầy đủ nêu 2 đỉnh

bất kỳ đều được nối với nhau bằng 1 cạnh Ký hiệu: K n (xem Hình 1.11)

Hình 1.11 Đồ thị đầy đủ K2, K3, K4

Đồ thị vòng

Một đồ thị đơn vô hướng n đỉnh được gọi là đồ thị vòng nếu nó duy nhất

một chu trình đơn đi qua tất cả các đỉnh Ký hiệu: C n (xem Hình 1.12)

Trang 22

Đồ thị siêu khối

Là đồ thị k= 2n đỉnh là đồ thị có các đỉnh được đánh số bằng các chuỗi nhị phân độ dài n Ký hiệu: Q n (xem Hình 1.14)

Hai đỉnh kề nhau nếu 2 chuỗi nhị phân tương ứng chỉ khác nhau 1 bit

Trang 23

Giả sử G = (V, E) là một đơn đồ thị có số đỉnh là n, không mất tính tổng

quát có thể coi các đỉnh được đánh số 1, 2, , n Khi đó ta có thể biểu diễn đồ

thị bằng một ma trận vuông cấp n, A = [aij] Trong đó: aij = 1 nếu (i, j)E, aij = 0 nếu (i, j) E

Đối với đa đồ thị thì việc biểu diễn cũng tương tự trên, chỉ có điều nếu

như (i, j) là cạnh thì không phải ta ghi số 1 vào vị trí aij mà là ghi số cạnh nối giữa đỉnh i và đỉnh j

Ví dụ: Biểu diễn đồ thị dưới dạng ma trận liền kề (Hình 1.16)

Hình 1.16 Biểu diễn đồ thị dưới dạng ma trận liền kề

 Ưu điểm của ma trận liền kề:

- Đơn giản, trực quan, dễ cài đặt trên máy tính

- Để kiểm tra xem hai đỉnh (u, v) của đồ thị có kề nhau hay không, ta chỉ việc kiểm tra bằng một phép so sánh: a uv ≠ 0

 Nhược điểm của ma trận liền kề:

- Tiêu tốn bộ nhớ: Bất kể số cạnh của đồ thị là nhiều hay ít, ma trận liền

kề luôn luôn đòi hỏi n 2

ô nhớ để lưu các phần tử ma trận

- Khó làm việc với đồ thị có số lượng đỉnh lớn

Trang 24

Khi đó, từ đồ thị (Hình 1.17) ta có danh sách kề (xem Bảng 1.1)

Ưu điểm: Dễ dàng duyệt tất cả các đỉnh kề với một đỉnh v cho trước, dễ dàng

duyệt tất cả các cạnh

Nhược điểm: Cài đặt danh sách kề có phần dài dòng hơn

Trang 25

CHƯƠNG 2 THUẬT TOÁN A*

Chương này sẽ trình bày thuật toán A* giải quyết bài toán tìm đường đi ngắn nhất Xét ví dụ tìm đường đi ngắn nhất trên đồ thị sử dụng thuật toán A*

và Dijkstra từ đó so sánh, đánh giá được ưu, nhược điểm của hai thuật toán

Mô tả thuật toán A*, đưa ra ví dụ thực tế thấy rõ được quá trình thực thi thuật toán và đánh giá hiệu quả của các thuật toán tương ứng Các nội dung nghiên cứu trong chương này được tham khảo từ các tài liệu [1, 3, 4, 5, 6,7]

2.1 Bài toán

Cho đồ thị G=(V,E) và hai đỉnh a, b Tìm đường đi ngắn nhất nếu có đi

từ đỉnh a đến đỉnh b trong đồ thị G Giả sử n là một trạng thái đạt tới (có đường đi từ trạng thái ban đầu a tới n) Ta xác định hàm đánh giá:

f(n) = g(n) + h(n)

Trong đó:

g(n): Là chi phí từ nút gốc a tới nút hiện tại n

h(n): Chi phí ước lượng từ nút hiện tại n tới b

f(n): Chi phí tổng thể ước lượng của đường đi qua nút hiện tại a đến b Một ước lượng heuristic h(n) được xem là chấp nhận được nếu với mọi nút n:

0<h(n)< h*(n)

Trong đó: h*(n) là chi phí thật (thực tế) để đi từ nút n đến b

Ví dụ: Cho đồ thị như hình vẽ tìm đường đi ngắn nhất sử dụng Thuật toán A*

và Thuật toán Dijkstra Trạng thái ban đầu là A, trạng thái đích là B và so sánh (xem Hình 2.1)

Các số ghi trên các cạnh là chiều dài thực tế giữa 2 đỉnh kề nhau g(n)

Các số ghi trên đỉnh là chiều dài đánh giá từ đỉnh đó tới đỉnh B là h(n)

 Yêu cầu tìm đường đi ngắn nhất sử dụng thuật toán A* và thuật toán Dijkstra và so sánh giữa hai thuật toán trên trong ví dụ này

Trang 26

Hình 2.1 Đồ thị biểu diễn không gian trạng thái

 Tìm đường đi ngắn nhất sử dụng Thuật toán A*:

Bước 1: Xuất phát từ A sinh ra các đỉnh C, D, E, F:

g(E) = g(A) + c(A,E) = 0 + 13 = 13;

f(E) = g(E) + h(E) = 13 +8 = 21;

g(F) = g(A) + c(A,F) = 0 + 20 = 20;

f(F) = g(F) + h(F) = 20 +7 = 27;

Hình 2.2 Đồ thị biểu diễn đường đi của bước 1

Trang 27

Vì f(D) có giá trị bé nhất nên chọn đỉnh D ta có đường đi bước 1 (Hình 2.2)

Bước 2: Ta xét đỉnh D, sinh ra 2 đỉnh H và E:

g(H) = g(D) + c(H,D) = 7 + 8 = 15;

f(H) = g(H) + h(H) =15 +10 = 25;

g(E) = g(D) + c(E,D) = 7 + 4 = 11;

f(E) = g(E) + h(E) = 11 +8 = 19;

Hình 2.3 Đồ thị biểu diễn đường đi của bước 2

Vì f(E) có giá trị bé nhất nên chọn đỉnh E ta có đường đi bước 2 (Hình 2.3)

Bước 3: Ta xét đỉnh E sinh ra các đỉnh K, I:

g(K) = g(E) + c(E,K) = 11 + 4 = 15;

f(K) = g(K) + h(K) = 15 +2 = 17;

g(I) = g(E) + c(E,I) = 11 + 3 = 14;

f(I) = g(I) + h(I) = 14 +4 = 18;

Hình 2.4 Đồ thị biểu diễn đường đi của bước 3

Ngày đăng: 10/02/2021, 21:57

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[2]. Nguyễn Doãn Phước, Lý thuyết điều khiển nâng cao, NXB Khoa học kỹ thuật, 2009 Sách, tạp chí
Tiêu đề: Lý thuyết điều khiển nâng cao
Nhà XB: NXB Khoa học kỹ thuật
[3]. Trần Quốc Chiến, Giáo trình Lý thuyết đồ thị, Tài liệu lưu hành nội bộ, Đà Nẵng, 2002 Sách, tạp chí
Tiêu đề: Giáo trình Lý thuyết đồ thị
[6]. K. M. Chandy, J. Misra, Distributed Computation on Graphs, Shortest Path Algorithms,University of Texax at Autin, November 1982 Sách, tạp chí
Tiêu đề: Distributed Computation on Graphs, Shortest Path Algorithms
[7]. Thomas H.Cormen, Charles E.Leiserson, Ronald L.Rivest, Introduction To Algorithms, The MIT Press, 1999 Sách, tạp chí
Tiêu đề: Introduction To Algorithms
[1]. Bách khoa toàn thư mở Wikipedia, https://vi.wikipedia.org Link
[4]. Peter Hart, Nils Nilso, Bertram Raphael, A Formal Basis for the HeuristicDetermination of Minimum Cost Paths, 1968 Khác
[5]. Dijkstra.E, A note on two problems in connection with graphs, Numerische Mathematik, Vol.1, 1959 Khác

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w