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

ứng dụng của thuật toán tìm kiếm để giải quyết bài toán đường đi trong mê cung

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 (3.99 MB, 30 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊNCHUN NGHÀNH KHOA HỌC MÁY TÍNH

VÀ THƠNG TIN

BÁO CÁO SƠ BỘ ĐỀ TÀI CUỐI KỲCẤU TRÚC DỮ LIỆU VÀ GIẢI

THUẬT ĐỀ TÀI:

ỨNG DỤNG CỦA THUẬT TỐN TÌMKIẾM ĐỂ GIẢI QUYẾT BÀI TỐN

ĐƯỜNG ĐI TRONG MÊ CUNG

Nhóm: 16

Sinh viên thực hiện: Nguyễn Tuấn AnhĐinh Trường AnLớp: K67A3

Hà Nội, tháng 12, năm 2023

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

LỜI NÓI ĐẦU ... 4

NHẬN XÉT CỦA GIẢNG VIÊN ...5

PHẦN I: CƠ SỞ LÝ THUYẾT ...6

1. Các thuật tốn tìm kiếm ...6

1.1 Thuật tốn tìm kiếm DFS (Tìm kiếm theochiều sâu) ... 6

1.1.1 Khái niệm ... 6

1.1.2 Ý tưởng ...6

1.1.3 Ví dụ ... 7

1.1.4 Kết luận về thuật tốn DFS ...10

1.2 Thuật tốn tìm kiếm BFS (Tìm kiếm theochiều rộng) ... 12

1.2.1 Khái niệm ... 12

1.2.2 Ý tưởng ...13

1.2.3 Ví dụ ... 14

1.2.4 Kết luận về thuật toán BFS ...17

1.3 Thuật toán Dijkstra ...19

1.3.1 Khái niệm ... 19

1.3.2 Ý tưởng ...20

1.3.3 Ví dụ ... 20

1.3.4 Kết luận về thuật tốn Dijkstra ...25

PHẦN 2: PHÂN TÍCH THIẾT KẾ SƠ BỘ ... 26

1. Biểu đồ lớp ...26

2. Phân tích chương trình ... 26

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

LỜI NĨI ĐẦU

Chúng em xin trân trọng giới thiệu báo cáo “Ứng dụng thuậttốn tìm kiếm trong giải quyết bài tốn đường đi trong mê cung”.Báo cáo này tập trung vào việc khám phá và ứng dụng các thuậttốn tìm kiếm trong việc giải quyết bài tốn tìm đường đi trongmê cung, một chủ đề quan trọng trong học phần “Cấu trúc dữliệu và thuật toán”.

Bài toán đường đi trong mê cung là một bài tốn thú vị và cóứng dụng rộng trong nhiều lĩnh vực, từ robot di chuyển tự độngđến lập kế hoạch đường đi trong hệ thống định tuyến mạng.Mục tiêu của bài tốn là tìm một đường đi từ một điểm xuất phátđến một điểm đích trong một mê cung phức tạp. Để giải quyếtbài toán này, các thuật tốn tìm kiếm được sử dụng để tạo ra cácchiến lược điều hướng thơng minh và tìm ra đường đi tối ưu.Báo cáo này nhằm mục đích khám phá và giới thiệu về các thuậttốn tìm kiếm phổ biến trong giải quyết bài toán đường đi trongmê cung. Chúng em sẽ giới thiệu các thuật tốn như tìm kiếmtheo chiều rộng (BFS), tìm kiếm theo chiều sâu (DFS), thuậttốn A* và thuật toán Dijkstra. Mỗi thuật toán sẽ được trình bàychi tiết, bao gồm nguyên lý hoạt động và ưu điểm, nhược điểmcủa chúng.

Chúng em hy vọng rằng báo cáo này sẽ giúp các bạn hiểu rõ hơnvề ứng dụng và lợi ích của việc áp dụng các thuật tốn tìm kiếmtrong giải quyết bài tốn đường đi trong mê cung. Bạn cũng sẽtìm thấy thơng tin chi tiết về các thuật tốn tìm kiếm và nhữngứng dụng cụ thể của chúng trong thực tế.

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

NHẬN XÉT CỦA GIẢNG VIÊN

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

PHẦN I: CƠ SỞ LÝ THUYẾT

1. Các thuật tốn tìm kiếm

1.1 Thuật tốn tìm kiếm DFS (Tìm kiếm theo chiềusâu)

1.1.1 Khái niệm

- Tìm kiếm theo chiều sâu (DFS) là một thuật toán để duyệt quahoặc tìm kiếm cấu trúc dữ liệu dạng cây hoặc đồ thị. Thuật toánbắt đầu tại nút gốc (chọn một số nút tùy ý làm nút gốc trongtrường hợp đồ thị) và kiểm tra từng nhánh càng xa càng tốttrước khi quay lui.

- Kết quả của một DFS là một cây bao trùm (spanning tree). Câykhung (spanning tree) là một đồ thị khơng có vịng lặp. Để thựchiện duyệt theo DFS, chúng ta cần sử dụng cấu trúc dữ liệu ngănxếp có kích thước tối đa bằng tổng số đỉnh trong biểu đồ.1.1.2 Ý tưởng

Để cài đặt DFS, ta cần thực hiện các bước sau:1. Lấy một đỉnh bất kỳ trong đồ thì đưa vào ngăn xếp.2. Lấy top value của ngăn xếp để duyệt và thêm vào visited

list.

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

3. Tạo một list bao gồm các đỉnh liền kề của đỉnh đang xét,4. thêm những đỉnh khơng có trong visited list vào ngăn xếp.5. Tiếp tục lặp lại bước 2 và bước 3 đến khi ngăn xếp rỗng.1.1.3 Ví dụ

Hãy xem thuật tốn tìm kiếm DFS hoạt động thế nào với 1 ví dụ.Chúng ta có 1 đồ thị vô hướng 5 đỉnh:

1. Chúng ta bắt đầu từ đỉnh 0, thuật toán DFS bắt đầu bằngcách đưa nó vào Visited và đưa tất cả các cạnh liền kề đỉnhđang xét vào Stack:

Visited 0

Stack 1 2 3

0

3

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

2. Tiếp theo chúng ta truy cập phần từ ở đầu ngăn xếp, tức là 1và đi đến các nút liền kề của nó. Vì 0 đã được truy cập nêntiếp theo 2 sẽ được xét:

Visited 0 1Stack 2 3

3. Chúng ta đang xét tới đỉnh 2, đỉnh 2 có 1 nút liền kề chưađược xét là 4, vì vậy ta thêm đỉnh đó vào vị trí đầu của Stackvà duyệt nó:

Visited 0 1 2Stack 4 3

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

4. Vì đỉnh 4 khơng cịn các đỉnh nào liền kề chưa xét, vì vậy tasẽ duyệt nó và đưa vào Stack

Visited 0 1 2 4Stack 3

5. Và cuối cùng là duyệt đỉnh 3 trong Stack, nó cũng khơng cóbất kỳ đỉnh liền kề nào chưa được duyệt, vì thế ta đã hồnthành tìm kiếm theo chiều sâu trong đồ thị ví dụ:

Stack

0

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

VìStacktrống,vậynênchúngtađãhồnthànhviệctìmkiếmtheochiềusâu(DFS) củađồthịtrên

1.1.4 Kết luận về thuật toán DFS1. Độ phức tạp

Trong trường hợp tốt nhất, khi duyệt qua tất cả các đỉnh và cạnhtrong đồ thị, độ phức tạp thời gian của DFS là O(V + E), trongđó V là số lượng đỉnh và E là số lượng cạnh trong đồ thị. Tuynhiên, nếu đồ thị khơng liên thơng, thuật tốn DFS chỉ duyệt quacác đỉnh thuộc thành phần liên thông chứa đỉnh bắt đầu, do đóđộ phức tạp thời gian có thể là O(V + E') với E' là số lượng cạnhtrong thành phần liên thông chứa đỉnh bắt đầu.

2. Ưu điểm của thuật toán DFS

- Đơn giản và dễ hiểu: Thuật tốn DFS dễ dàng triển khai vàhiểu, khơng yêu cầu nhiều kiến thức phức tạp.

3

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

- Hiệu quả trong tìm kiếm đường đi: DFS có thể tìm kiếm đườngđi từ một đỉnh đến một đỉnh khác trong đồ thị. Nếu có mộtđường đi tồn tại, DFS sẽ tìm ra đường đi đầu tiên mà nó gặpđược.

- Sử dụng ít bộ nhớ: Thuật tốn DFS chỉ sử dụng một ngăn xếpđể lưu trữ các đỉnh trong q trình duyệt, do đó tiêu thụ ít bộnhớ hơn so với thuật toán BFS (Breadth-First Search).3. Nhược điểm của thuật tốn DFS

- Khơng tìm kiếm tối ưu: DFS khơng đảm bảo tìm kiếm đườngđi ngắn nhất trong đồ thị. Nếu có nhiều đường đi từ đỉnh A đếnđỉnh B, DFS có thể tìm ra một đường đi dài hơn so với đường đingắn nhất.

- Dễ rơi vào vòng lặp vơ hạn: Nếu đồ thị có chu trình, và khơngcó cơ chế để kiểm tra và tránh việc lặp lại các đỉnh, DFS có thểrơi vào vịng lặp vơ hạn, không bao giờ kết thúc.

- Phụ thuộc vào thứ tự duyệt: Kết quả của thuật tốn DFS có thểthay đổi dựa trên thứ tự duyệt qua các đỉnh. Nếu thứ tự duyệtđược thay đổi, kết quả cũng sẽ thay đổi.

- Không phù hợp cho đồ thị lớn và sâu: Nếu đồ thị rất lớn và cóđộ sâu lớn, DFS có thể gặp khó khăn trong việc duyệt qua tồnbộ đồ thị và tiêu tốn nhiều thời gian và bộ nhớ.

4. Kết luận

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

- Mặc dù DFS có những ưu điểm như đơn giản, hiệu quả trongtìm kiếm đường đi và sử dụng ít bộ nhớ, nhưng nó cũng cónhược điểm. DFS khơng đảm bảo tìm kiếm đường đi ngắn nhất,có thể rơi vào vịng lặp vơ hạn trong trường hợp đồ thị có chutrình, phụ thuộc vào thứ tự duyệt và khó khăn khi áp dụng chođồ thị lớn và sâu.

- Tuy nhiên, thuật toán DFS vẫn có giá trị và ứng dụng rộng rãitrong việc giải quyết các bài tốn liên quan đến tìm kiếm, đườngđi, cấu trúc dữ liệu đồ thị và nhiều lĩnh vực khác. Nó cung cấpmột cách tiếp cận đơn giản và linh hoạt để khám phá và tìm hiểuvề các thành phần trong đồ thị.

- Tóm lại, DFS là một thuật tốn quan trọng và hữu ích tronglĩnh vực đồ thị, tuy có nhược điểm nhất định, nhưng vẫn đángxem xét và áp dụng trong các bài toán tương ứng.

1.2 Thuật tốn tìm kiếm BFS (Tìm kiếm theo chiềurộng)

1.2.1 Khái niệm

- Tìm kiếm theo chiều rộng (BFS) là một thuật tốn để duyệt đồthị hoặc cây. BFS áp dụng cho cây và đồ thị gần như giống nhau.Sự khác biệt duy nhất là đồ thị có thể chứa các chu trình, vì vậychúng ta có thể duyệt lại cùng một nút. Để tránh xử lý lại cùngmột nút, chúng ta sử dụng mảng boolean đã truy cập, mảng này

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

sẽ đánh dấu các đỉnh đã truy cập. BFS sử dụng cấu trúc dữ liệuhàng đợi (queue) để tìm đường đi ngắn nhất trong biểu đồ.- Thuật toán BFS duyệt qua các đỉnh theo cấp độ, bắt đầu từđỉnh gốc và đi sâu vào các đỉnh kề trước khi đi sâu vào các đỉnhkhác. Do đó, BFS tìm kiếm theo chiều rộng trong đồ thị vàthường được sử dụng để tìm kiếm đường đi ngắn nhất giữa haiđỉnh trong đồ thị khơng có trọng số hoặc có trọng số bằng nhautrên các cạnh.

1.2.2 Ý tưởng

- Triển khai BFS tiêu chuẩn sẽ đặt mỗi đỉnh của đồ thị vào mộttrong hai loại: visited, not visited. Mục đích của thuật tốn làđánh dấu mỗi đỉnh là đã thăm để tránh các chu trình.Cách thuật tốn hoạt động như sau:

1. Lấy một đỉnh bất kỳ trong đồ thị thêm vào cuối hàng đợi.2. Lấy phân tử đầu tiên của hàng đợi và thêm nó vào danh sách

đã duyệt.

3. Tạo một danh sách các đỉnh liền kề của đỉnh đang xét. Thêmnhững đỉnh khơng có trong danh sách đã duyệt vào cuối hàngđợi.

4. Tiếp tục lặp lại bước 2 và 3 cho đến khi hàng đợi trống.

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

của đồ thị. Mặc dù nó có nhược điểm như sử dụng khơng gianlớn và có thể rơi vào vịng lặp vơ hạn, nhưng với ưu điểm củamình, BFS vẫn là một cơng cụ mạnh mẽ trong việc giải quyếtcác bài toán liên quan đến đồ thị.

1.3 Thuật toán Dijkstra

1.3.1 Khái niệm

- Theo Wikipedia, thuật toán Dijkstra, mang tên của nhà khoahọc máy tính người Hà Lan Edsger Dijkstra vào năm 1956 và ấnbản năm 1959, là một thuật toán giải quyết bài toán đường đingắn nhất nguồn đơn trong một đồ thị có hướng khơng có cạnhmang trọng số âm.

- Trọng số khơng âm là các cạnh mang tính tổng thể hơn làkhoảng cách hình học giữa 2 định, vì vậy thuật tốn sẽ có tínhchính xác cao hơn.

- Ví dụ, để biểu diễn đường đi ngắn nhất từ thành phố A đếnthành phố B, chúng ta dùng các đỉnh của đồ thị để thị phạm cácthành phố và các cạnh để biểu diễn các đường nối giữa chúng.Trọng số các cạnh sẽ được xem như độ dài của các con đường,vì vậy mà chúng khơng âm, nhờ đó thuật tốn sẽ chỉ ra conđường ngắn nhất.

- Thuật toán thường được sử dụng trong định tuyến với mộtchương trình con trong các thuật tốn đồ thị hay trong cơngnghệ Hệ thống định vị toàn cầu (GPS).

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

1.3.2 Ý tưởng

Ý tưởng cơ bản của thuật toán như sau:

Bước 1: Từ đỉnh gốc, khởi tạo khoảng cách tới chính nó là 00,khởi tạo khoảng cách nhỏ nhất ban đầu tới các đỉnh khác là +∞.Ta được danh sách các khoảng cách tới các đỉnh.

Bước 2: Chọn đỉnh a có khoảng cách nhỏ nhất trong danh sáchnày và ghi nhận. Các lần sau sẽ không xét tới đỉnh này nữa.Bước 3: Lần lượt xét các đỉnh kề b của đỉnh a. Nếu khoảng cáchtừ đỉnh gốc tới đỉnh b nhỏ hơn khoảng cách hiện tại đang đượcghi nhận thì cập nhật giá trị và đỉnh kề a vào khoảng cách hiệntại của b.

Bước 4: Sau khi xét tất cả đỉnh kề b của đỉnh a. Lúc này ta đượcdanh sách khoảng cách tới các điểm đã được cập nhật. Quaylại Bước 2 với danh sách này. Thuật toán kết thúc khi chọn đượckhoảng cách nhỏ nhất từ tất cả các điểm.

1.3.3 Ví dụ

Để dễ dàng hiểu ý tưởng của thuật toán. Chúng ta cùng xem vídụ với đồ thị vơ hướng G. Thuật tốn Dijkstra sẽ tìm khoảngcách từ đỉnh gốc 0 tới tất cả các đỉnh còn lại trong đồ thị G:1. Đầu tiên, khởi tạo khoảng cách nhỏ nhất ban đầu tới các đỉnh

khác là +∞ và khoảng cách tới đỉnh gốc là 0. Ta được danhsách các khoảng cách tới các đỉnh:

0 (∞,-) (∞,-) (∞,-) (∞,-) (∞,-)

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

2. Tiếp theo, ta xét các đỉnh kề của đỉnh 0: Xét đỉnh 1, khoảngcách từ đỉnh 0 đến đỉnh 1 là 2.5 < ∞ nên ta nhận giá trị mớilà (2.5,0) (nghĩa là đỉnh liền kề trước là đỉnh 0, khoảng cáchtừ đỉnh 1 đến đỉnh 0 là 2.5). Xét tương tự cho đỉnh 2 và đỉnh3 ta được:

0 (∞,-) (∞,-) (∞,-) (∞,-) (∞,-)- (2.5, 0) (2.0,0) (2.1,0) (∞,-) (∞,-)

0.80.62.5 1.0

45

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

3. Sau khi xét tất cả các đỉnh ta chọn đỉnh 2 có khoảng cáchnhỏ nhất và ghi nhận để xét tiếp. Tiếp tục xét đỉnh kề của 2là đỉnh 4 và 5. Xét đỉnh 4, khoảng cách từ đỉnh gốc đến đỉnh4 sẽ bằng khoảng cách từ đỉnh gốc tới đỉnh 2 cộng khoảngcách từ 2 đến 4. Nghĩa là 2.0+0.6=2.6 nên ta ghi nhậnkhoảng cách tại đỉnh 4 là (2.6,2). Xét tương tự cho đỉnh 5:

0 (∞,-) (∞,-) (∞,-) (∞,-) (∞,-)- (2.5, 0) (2.0,0) (2.1,0) (∞,-) (∞,-)- (2.5, 0) - (2.1,0) (2.6,2) (3.5,2)

0.80.62.5 1.0

4. Lúc này ta chọn được đỉnh 3 có khoảng cách nhỏ nhất, xétđỉnh kề của đỉnh 3 là đỉnh 5. Khoảng cách từ gốc tới đỉnh5 là 2.1+2.5=4.6 lớn hơn khoảng cách hiện tại được ghi nhận,vì vậy giá trị tại đỉnh 5 không đổi:

0 (∞,-) (∞,-) (∞,-) (∞,-) (∞,-)

0

45

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

- (2.5, 0) (2.0,0) (2.1,0) (∞,-) (∞,-)- (2.5, 0) - (2.1,0) (2.6,2) (3.5,2)- (2.5, 0) - - (2.6,2) (3.5,2)

0.80.62.5 1.0

5. Đỉnh 1 là đỉnh được chọn tiếp theo, xét đỉnh kề của 1 là đỉnh4. Khoảng cách từ đỉnh gốc không nhỏ hơn khoảng cách hiệntại nên ta khơng cập nhật gì ở đỉnh này:

0 (∞,-) (∞,-) (∞,-) (∞,-) (∞,-)- (2.5, 0) (2.0,0) (2.1,0) (∞,-) (∞,-)- (2.5, 0) - (2.1,0) (2.6,2) (3.5,2)- - - - (2.6,2) (3.5,2)

5

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

0.80.62.5 1.0

6. Chọn được đỉnh 4 để xét tiếp theo, có đỉnh kề là đỉnh 5 chưaxét, ta có 2.6 + 0.8 = 3.4 < 3.5 nên ta cập nhật giá trị mới chođỉnh 5:

0 (∞,-) (∞,-) (∞,-) (∞,-) (∞,-)- (2.5, 0) (2.0,0) (2.1,0) (∞,-) (∞,-)- (2.5, 0) - (2.1,0) (2.6,2) (3.5,2)- - - - (2.6,2) (3.5,2)

Tới đây thì thuật tốn kết thúc vì đã tìm được khoảng cách nhỏnhất đỉnh gốc được chọn là đỉnh 0 đến tất cả các đỉnh.

0.80.62.5 1.0

45

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

Hình1.3.6:Bước6vídụDijkstra1.3.4 Kết luận về thuật tốn Dijkstra1. Độ phức tạp:

Độ phức tạp thời gian của thuật toán Dijkstra là O(V^2), trongđó V là số lượng đỉnh trong đồ thị. Điều này đúng khi sử dụngma trận trọng số để lưu trữ các cạnh của đồ thị. Tuy nhiên, nếusử dụng danh sách kề, độ phức tạp có thể được cải thiện thànhO((V + E) log V), trong đó E là số lượng cạnh trong đồ thị.2. Ưu điểm của thuật toán Dijkstra:

- Dijkstra là một thuật toán rất mạnh và phổ biến để tìm đườngđi ngắn nhất trong đồ thị có trọng số khơng âm.

- Nó đảm bảo tìm ra đường đi ngắn nhất từ đỉnh gốc đến tất cảcác đỉnh khác trong đồ thị.

- Dijkstra có thể được sử dụng trong nhiều bài tốn thực tế nhưtìm đường đi trong mạng lưới, lập lịch giao thơng, tìm đường đitrong hệ thống định tuyến, v.v

3. Nhược điểm của thuật tốn Dijkstra:

- Thuật tốn Dijkstra khơng hoạt động đúng với đồ thị có trọngsố âm. Nếu đồ thị chứa trọng số âm, cần sử dụng thuật toán khácnhư Bellman-Ford.

- Độ phức tạp của Dijkstra tăng theo cấp số nhân khi số lượngđỉnh tăng lên. Vì vậy, nếu đồ thị rất lớn, việc tính tốn có thể trởnên chậm chạp.

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

4. Kết luận:

- Thuật toán Dijkstra là một thuật tốn quan trọng và hữu ích đểtìm đường đi ngắn nhất trong đồ thị có trọng số khơng âm. Nócó độ phức tạp thời gian tương đối tốt và có thể được áp dụngtrong nhiều bài tốn thực tế. Tuy nhiên, cần lưu ý rằng Dijkstrakhông hoạt động với đồ thị có trọng số âm và có thể trở nênchậm chạp khi đồ thị rất lớn.

PHẦN 2: PHÂN TÍCH THIẾT KẾ SƠ BỘ

1. Biểu đồ lớp

….……….Phầnnàynhómemvẫnđangtrongqtrìnhnghiêncứunênchưachorađượcsơđồlớpạ………

2. Phân tích chương trình

Chương trình sẽ đưa ra những sự lựa chọn sau cho người dùng:- Tùy chỉnh số lượng “Rows” và “Columns” cho lưới

- Lựa chọn “Make Maze” để tạo ra 1 mê cung ngẫu nhiên- Lựa chọn “Clear” để xóa tiến trình hiện tại đang thực hiện- Lựa chọn “Animation” để thực hiện q trình tìm kiếm điểmđích và tìm đường đi ngắn nhất từ điểm đầu được chọn đến điểmđích đó

- Các lựa chọn “DFS”, “BFS”, “Dijkstra” để lựa chọn thuật toánthực hiện

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

- Lựa chọn “Diagonal Movements” để có cho đi đường chéo haykhơng

- Ngồi ra cịn 1 số những chú thích trên giao diện dùng để chúthích cho người dùng hiểu được chức năng của nó

Sau khi lựa chọn “Make Maze” thì chương trình sẽ thực hiện tạo1 mê cung ngẫu nhiên như sau:

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

Sau đó, chúng ta có thể lựa chọn 1 lựa chọn thuật toán ngẫunhiên để giải đường đi trong mê cung, ở đây, chúng ta thử chọnthuật toán tìm kiếm “DFS”:

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

Hình4:Giảiquyếtmêcungbằng thuậttốnDFSHoặc chúng ta cũng có thể chọn thuật tốn Dijkstra:

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

Hình5:Giải quyết mê cungbằngthuậttốnDijkstra

KẾT LUẬN:

Do vẫn chưa thực hiện xong phần lựa chọn cho người dùng, nênbọn em chỉ báo cáo được tới đây thơi ạ, mong thầy có thể đưa ra1 số nhận xét để bài báo cáo cuối kỳ của bọn em được hoànthiện hơn

</div>

×