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

bài tập lớn trí tuệ nhân tạo đề tài tìm đường ngắn nhất

20 1 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Tìm đường ngắn nhất
Tác giả Hoàng Cụng Minh, Nguyễn Văn Thuận, Lại Việt Hoàng, Lờ Mạnh Đạt, Lờ Minh Dương
Người hướng dẫn TS. Bùi Hải Phong
Trường học Trường Đại học Đại Nam
Chuyên ngành Trí tuệ nhân tạo
Thể loại Bài tập lớn
Năm xuất bản 2022
Định dạng
Số trang 20
Dung lượng 1,13 MB

Nội dung

VÌ những ứng dụng hữu ích của nó, nhóm em chọn đề tài “Tìm đường ngắn nhất'' dựa trên các thuật toán cơ bản hay dùng trong trí tuệ nhân tạo.. Ứng dụng của trí tuệ nhân tạo - Ứng dụng tr

Trang 1

BO GIAO DUC VA DAO TAO

TRUONG DAI HOC DAI NAM

ĐẠI NAM UNIVERSITY

BÀI TẬP LỚN

TÊN HỌC PHẦN: TRÍ TUỆ NHÂN TẠO

ĐỀ TÀI: Tìm đường ngắn nhất

Giáo viên hướng dẫn: TS BÙI HẢI PHONG

Sinh viên thực hiện:

Stt Ma sv Ho va tén Lớp

1 1571020173 Hoàng Công Minh | CNTT 15-05

2 1571020280 Nguyễn Văn CNTT 15-05

Thuận

3 1571020104 Lại Việt Hoàng CNTT 15-05

4 1571020053 Lê Mạnh Đạt CNTT 15-05

5 1571020043 Lé Minh Duong CNTT 15-05

Ha Noi, nam 2022

Trang 2

BO GIAO DUC VA DAO TAO TRUONG DAI HOC DAI NAM

ĐẠI NAM

UNTVWVER SI TY

BAI TAP LON

TEN HOC PHAN: TRi TUE NHAN TAO

ĐỀ TÀI: Tìm đường ngắn nhất

STT |Mã Sinh | Họ Và Tên Ngày Điểm

Viên Sinh Bằng Bằng

Số Chữ

1 1571020 | Hoàng Công | 13/12/2

2 1571020 | Nguyén Van | 07/11/2

3 1571020 | Lại Việt 04/04/2

4 1571020 | Lê Mạnh Đạt | 0509200

5 1571020 | Lê Minh 27/09/200

CÁN BỘ CHẤM TH

Trang 3

Ha Noi, nam 2022

Nhom 8 — Lop CNTT 15-05 Page 3

Trang 4

Loi Cam On

Đầu tiên, em xin gửi lời cảm ơn đến Ban Giám hiệu trường Đại học

Đại Nam đã tạo cho em môi trường tốt để em có thể học tập và tiếp thu được những kiến thức quý báu trong những năm qua Em xin gửi lời cảm ơn sâu sắc đến Thầy giáo Bùi Hải Phong đã nhiệt tình hướng dẫn, định hướng,

hỗ trợ em trong suốt quá trình thực hiện luận văn, giúp đỡ em tiếp cận với cách tư duy, giải quyết và trình bày một vấn đề cần nghiên cứu Những điều này đã giúp em khắc phục được những hạn chế của bản thân và những khó khăn để hoàn thành luận văn thành công, đúng thời hạn

Từ lâu con người đã có suy nghĩ muốn tạo ra một cỗ máy có thể tự

suy nghĩ và hành động Chính vì thế, trí tuệ nhân tạo (AI) trở thành một

một lĩnh vực mới trong thời đại công nghệ thông tin ngày nay Các ngành nghề trong xã hội đang có xu hướng xử dụng AI để khiến máy móc thông minh hơn Trong giải trí, trong y tế, hay cả trong giáo dục, rất nhiều robot thông minh được tạo ra có thể thay thế con người dạy học, giúp đỡ người

già, thực hiện các công đoạn trong công nghiệp, VÌ những ứng dụng hữu

ích của nó, nhóm em chọn đề tài “Tìm đường ngắn nhất'' dựa trên các thuật toán cơ bản hay dùng trong trí tuệ nhân tạo Mong muốn thông qua game này, em sẽ có những cái nhìn cụ thể về đề tài AI, từ đó mở rộng để nghiên cứu và phát triển thêm

Mặc dù em đã cố gắng hoàn thành luận văn bằng tất cả sự nỗ lực và khả năng của mình, nhưng chắc chắn vẫn còn nhiều hạn chế và thiếu sót

Em mong nhận được sự cảm thông và góp ý quý giá từ các thầy cô và các

bạn

Trang 5

Muc luc

LOT CAM OD I OE nnn i eeeer ies 3

Phần I: Tổng QUAN ccccccccccccccccceccccessseseesscseeeeeeeeeeeseceseeeuesesesesssseeeeeeenegs 5

ái 1 ng .ằằ ằ a ắa 5

2 Lý do chọn đề tài SH HT HH Ha 5

3 Mục tiêu và đối tượng phạm vi nghiên cCứu -.‹ccccccccccs: 6

Phần II: Phân tích bài toán tt nền nền ng ghe no 7

1 Yêu cầu bài tOán ii nh nh Tnhh HH tk ra 7

2 Phân tích yêu CầU cuc TH nn TT nh n nào 7

3 Phương pháp giải QUYẾT nh ngn ng ko 7

4 Phân tích và lựa chọn thuật toán cuc nh nhe nhe 7

Tổng quan thuật toán DijkSfra 0221111 1nn nghe nghe 8

1 Ví dụ về thuật toán ccnnnH HH nnn ng nen ngu 8

2 Đoạn giả mã cho thuật toán ccccnnnn nh nh nho 12 Phần III: Cài đặt chương trÌnh cv 1c n kg nho 13

1 Tạo không gian ‹ con n ng T ng TT HH TK rro 13

2 Tạo các chướng ngoại VẬT nh n nhe 13

3 Sử dụng thuật toán cuc ng nh Tnhh Heo 14

4 Cách vượt qua chướng ngoại VẬT cho 16 Phần IV: Kết quả chương trÌnh tt 1n n1 nnn nghe 17

ôn na 17

Nhóm 8 — Lớp CNTT 15-05 Page 5

Trang 6

Phần I: Tổng quan

1 Lý thuyết

1 Khái niệm trí tuệ nhân tạo - Trí tuệ nhân tạo là trí thông minh của máy do con người tạo ra Ngay từ khi chiếc máy tính điện tử đầu tiên ra đời, các nhà khoa học máy tính đã hướng đến phát hiển hệ

thống máy tính (gồm cả phần cứng và phần mềm) sao cho nó có khả

năng thông minh như loài người

2 Ứng dụng của trí tuệ nhân tạo

- Ứng dụng trong sản xuất Trí tuệ nhân tạo còn được ứng dụng để xây dựng những quy trình sản xuất tối ưu hơn Công nghệ AI còn có khả năng phân tích cao, làm cơ sở định hướng cho khả năng ra quyết định trong sản xuất

- Ứng dụng trong y tế Ứng dụng tiêu biểu của trí tuệ nhân tạo trong lĩnh vực y tế đó chính là máy bay thiết bị bay không cần người lái được sử dụng trong những trường hợp cứu hộ khẩn cấp Thiết bị bay không người lái có thể đạt được tốc độ nhanh hơn xe chuyên dụng đến 40% và cực kì thích hợp để sử dụng ở những nơi có địa hình hiểm trở

- Ứng dụng trong giáo dục Sự ra đời của trí tuệ nhân tạo đã tạo ra những thay đổi lớn trong lĩnh vực giáo dục Các hoạt động giáo dục như là chấm điểm hay dạy kèm cho học sinh có thể được tự động hóa hoàn toàn nhờ công nghệ AI Nhiều trò chơi, phần mềm giáo dục được ra đời đáp ứng nhu cầu cụ thể của từng học sinh, giúp cho học sinh cải thiện rất nhiều về tình hình học tập theo tốc độ riêng của mình

Trang 7

2 Ly do chon dé tai

Tìm đường đi ngắn nhất là một trong những yêu cầu rất phổ

biến trong cuộc sống, đặc biệt là trong giới học sinh, sinh viên Đây cũng là một trò chơi mà em rất thích, chính vì vậy chúng em đã chọn

đề tài “Tìm đường ngắn nhất cho môn Trí tuệ nhân tạo Trong quá trình hoàn thành đề tài này, chúng em đã tìm hiểu được các thuật toán đã được học trong môn Trí tuệ nhân tạo như thuật toán tìm kiếm đường ởi Dijkstra, giải thuật Dijkstra, cũng như kỹ năng lập trình ngôn ngữ C

3 Mục tiêu và đối tượng phạm vi nghiên cứu

- Mục tiêu: Tìm hiểu định nghĩa, ứng dụng của trí tuệ nhân tạo Tìm hiểu cấu trúc, các thuật toán và cách hoạt động của AI

Ý nghĩa khoa học và thực tiễn - Ý nghĩa khoa học: Tìm hiểu về các

thuật toán được sử dụng trong môn học trí tuệ nhân tạo Có được nền tảng để mở rộng phạm vi nghiên cứu ở những mặt ứng dụng khác của trí tuệ nhân tạo - Thực tiễn: Tìm đường ngắn nhất phục vụ việc

đi lại và nâng cao khả năng lập trình

Nhóm 8 — Lớp CNTT 15-05 Page 7

Trang 8

Phần II: Phân tích bài toán

Xây dựng giao diện có kích thước tùy ý, có điểm đầu và điểm cuối

để thực hiện quá trình tìm đường đi từ điểm đầu đến điểm cuối Trong quá trình tìm đường có các chướng ngại vật ngăn cảm, yêu cầu tìm đường đi tránh các ngoại vật và ngắn nhất để đi đến điểm cuối Chắc chăn phải tìm được 1 con đường thì đạt yêu cầu bài toán

2 Phân tích yêu cầu ;

Mô phỏng môi trường ngoài đời thật thực hiện yêu cầu tìm đường di ngắn nhất giúp khách hàng có thể đến nơi nhanh nhất trong khoảng thời gian ngắn nhất

Xuất phát từ điểm đích ban đầu, sau đó thực hiện quá trình tìm kiếm

xung quanh, nếu phát hiện chướng ngoại vật thì sẽ chuyển hướng tìm kiếm con đường khác

Sau khi tìm kiếm phát hiện điểm cuối thì tạo ra con đường không

có chướng ngoại vật và ngắn nhất

4 Phân tích và lựa chọn thuật toán ;

Thuật toán Dijkstra cho phép tìm đường đi ngắn nhất từ một đỉnh s

đến các đỉnh còn lại của đồ thị và chiều dài (trọng số) tương ứng _

Phương pháp của thuật toán là xác định tuần tự đỉnh có chiều dài đến

s theo thứ tự tăng dần Thuật toán được xây dựng trên cơ sở gán cho mỗi đỉnh các nhãn tạm thời

Ý 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ách nà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ách từ đỉnh

gốc tới đỉnh b nhỏ hơn khoảng cách hiện tại đang được ghi nhận thì cập nhật giá trị và đỉnh kể a vào khoảng cách hiện tạ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 được danh sách

khoảng cách tới các điểm đã được cập nhật Quay lại Bước 2 với danh sách

này Thuật toán kết thúc khi chọn được khoảng cách nhỏ nhất từ tất cả các điểm

Trang 9

Tổng quan thuật toán Dijkstra

Graph (đồ thị): Đồ thị là một cấu trúc dữ liệu phi tuyến tính được định nghĩa là G = (V, E), trong V là tập hợp hữu hạn các đỉnh (node), E là tập hợp hữu hạn các cạnh, cạnh là một đường nối giữa hai node với nhau

Weighted graph (đồ thị có trọng số): Tương tự như đồ thị ở trên, chỉ khác là mỗi cạnh sẽ được gán thêm một trọng số Kiểu như cùng một khoảng cách đi từ A đến B, nhưng đi đường đẹp thì nhanh hơn, đường làng nhiều ổ gà thì chậm hơn

Connected graph (đồ thị liên thông): Một đồ thị được gọi là liên thông (connected) nếu có đường đi giữa mọi cặp đỉnh phân biệt của đồ thị Ngược lại, đồ thị này được gọi là không liên thông

Spamning tree (cây khung): một spanning tree của đồ thị G là cây con

của đồ thị G, chứa tất cả các đỉnh của G Nói cách khác, cây bao trùm

của một đồ thị G là một đồ thị con của G, chứa tất cả các đỉnh của G, liên thông và không có chu trình Cây bao trùm của đồ thị liên thông

G cũng có thể định nghĩa như một đồ thị con không chu trình lớn nhất, hay một đồ thị con liên thông nhỏ nhất của G

1 Ví dụ về thuật toán

Giả sử ta có một đồ thị chứa các trọng số như sau

Chọn một đỉnh bắt đầu và gán giá trị vô cực cho tất cả các nút khác

Nhóm 8 — Lớp CNTT 15-05 Page 9

Trang 10

Nếu độ dài đường di của đỉnh liền kể nhỏ hơn độ dài đường đi mới, không thực hiện cập nhật cho nó

Trang 11

Không thực hiện cập nhật độ dài đường đi của các đỉnh đã được truy cập

4+3

Sau mỗi lần lặp, chúng ta chọn đỉnh chưa được duyệt có độ dài đường

đi nhỏ nhất Vì vậy, chúng ta sẽ chọn 5 trước 7

Nhóm 8 — Lớp CNTT 15-05 Page 11

Trang 12

5+3 < 10

lan

Nhom 8 — Lop CNTT 15-05 Page 12

Trang 13

2 Doan gia ma cho thuat toan

Chúng ta cần duy trì khoảng cách đường đi của mỗi đỉnh Chúng ta

có thể lưu trữ nó trong một mảng có kích thước v, trong đó v là số đỉnh Chúng ta cũng muốn có thể đi được con đường ngắn nhất, không chỉ biết độ dài của con đường ngắn nhất Đối với điều này,

chúng ta sẽ ánh xạ mỗi đỉnh với đỉnh được cập nhật lần cuối cùng độ dài đường đi của nó

Sau khi thuật toán kết thúc, chúng ta có thể quay ngược lại từ đỉnh đích đến đỉnh nguồn để tìm đường đi Một hàng đợi ưu tiên nhỏ nhất

có thể được sử dụng để nhận đỉnh có khoảng cách đường đi nhỏ nhất một cách hiệu quả

Hàm dijkstra với tham số đầu vào là (G, S)

Sử dụng vòng lặp for cho mỗi đỉnh V trong G

Gán khoảng cach[V] < gia tri vô cực

Gán phần trước[V] giá trị NULL

Nếu V != S, thực hiện thêm V vào trong hàng đợi ưu tiên Q

Gán khoảng cách[S] 0

Trong khi Q không rỗng

Gán U c Giá trị MIN được lấy từ Q

Vòng lặp for với mỗi nút chưa được duyệt V của U

Gán khoảng cách tạm thời khoảng cách[U] + trọng số cạnh(U, V) Nếu khoảng cách tạm thời < khoảng cách[V]

Gán khoảng cách[V] Khoảng cách tạm thời

Gán phần trước[V] U

Trả về mảng khoảng cách[], mảng thành phần trước[]

Độ phức tạp của thuật toán Dijkstra

Độ phức tạp về thời gian: O(ElogV) Trong đó, E là số cạnh và V là số đỉnh

Độ phức tạp về không gian: O(V)

Các ứng dụng của thuật toán Dijkstra

Được sử dụng để tìm con đường đi ngắn nhất

Được sử dụng trong các ứng dụng mạng xã hội

Được ứng dụng trong mạng điện thoại

Được ứng dụng để tìm các vị trí trong bản đồ

Nhóm 8 — Lớp CNTT 15-05 Page 13

Trang 15

Phan III: Cài đặt chương trình

1 Tạo không gian

int ind[map_size_rows][map_size_cols] = {

{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1},

{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1},

{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1},

{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1},

{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1},

{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1},

{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1},

{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1},

{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1},

{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1}

};

2 Tạo các chướng ngoại vật

char map[map_size_rows][map_size cols] = {

{1, 0, 0, 0, 0, 0, 0, 0, 0, 1},

{1, 0, 0, 0, 0, 0, 0, 0, 0, 1},

{1, 0, 0, 0, 0,1, 1, 1, 0, 1},

{1, 1,1, 1, 0, 0, 0, 1, 0, 1},

{1, 0, 0, 1, 0, 0, 0, 1, 0, 1},

{1, 0,0, 1,1, 1,1, 1, 0, 1},

{1, 0, 0, 0, 0, 0, 0, 0, 0, 1},

Nhom 8 — Lop CNTT 15-05 Page 15

Trang 16

{1, 0, 0, 0, 0, 0, 0, 0, O, 1},

{1,1,1,1,1, 1,1, 1,1, 1},

};

3 Sử dụng thuật toán

for (i = 1; i < map_size_rows - 1; i++) {

for (j = 1; | < map_size_cols - 1; j++) {

if (map[HIII) 1

++s len;

stops = (struct stop *)realloc(stops, s_ len * sizeof(struct

stop));

intt = s len - 1;

stops[t].col = j;

stops[t].row = i;

stops[t].from = -1;

stops[t].g = DBL_MAX;

stops[t].n_len = 0;

stops[t].n = NULL;

ind[i][j] = t;

}

/* index of start stop */

s=0;

/* index of finish stop */

Trang 17

e=s _len-1;

for (i = 0; i< s_len; i++) {

stops[i].h = sqrt(pow(stops[e].row - stops[i].row, 2) +

pow(stops[e].col - stops[i].col, 2));

}

for (i = 1; i < map_size_rows - 1; i++) {

for (j = 1; | < map_size_cols - 1; j++) {

if (indLi}[j] >= 0) {

for(k=i-1;k<=i+1;k++){

for(I=j-1;l<=j+1;l++){

if ((k == i) and (| == j)) {

continue;

}

if (ind[k][!] >= 0) {

++r_len;

routes = (struct route *)realloc(routes, r_len * sizeof(struct route));

int t = r_len - 1;

routes[t].x = ind[i][j];

routes[t].y = ind[k][I];

routes[t].d = sqrt(pow(stops[routes[t].y].row - stops[routes[t].x].row, 2) + pow(stops[routes[t].y].col -

stops[routes[t].x].col, 2));

Nhóm 8 — Lớp CNTT 15-05 Page 17

Ngày đăng: 18/07/2024, 16:19

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

TÀI LIỆU LIÊN QUAN