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

TÌM ĐƯỜNG ĐI CHO NGƯỜI DU LỊCH SAO CHO QUÃNG ĐƯỜNG LÀ DÀI NHẤT

14 20 0

Đ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 14
Dung lượng 874,36 KB

Nội dung

ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI BÁO CÁO BÀI TẬP LỚN TRÍ TUỆ NHÂN TẠO ĐỀ TÀI TÌM ĐƯỜNG ĐI CHO NGƯỜI DU LỊCH SAO CHO QUÃNG ĐƯỜNG LÀ DÀI NHẤT Sinh viên thực hiện Nguyễn Văn Linh Lớp CNTT K52 2 MỤC LỤC CHƯƠNG I TỔNG QUAN VỀ NGÔN NGỮ C 3 1 1 C là gì? 3 1 2 Đặc trưng của C 3 CHƯƠNG II TỔNG QUAN VỀ THUẬT TOÁN NHÁNH CẬN 5 2 1 Định nghĩa 5 2 2 Ví dụ về giải thuật 5 2 3 Ứng dụng 8 2 4 Độ phức tạp của thuật toán 10 2 5 Code demo 10 2 6 Giao diện chương trình 13 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 14 3 CHƯƠNG I TỔNG.

ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI BÁO CÁO BÀI TẬP LỚN TRÍ TUỆ NHÂN TẠO ĐỀ TÀI: TÌM ĐƯỜNG ĐI CHO NGƯỜI DU LỊCH SAO CHO QUÃNG ĐƯỜNG LÀ DÀI NHẤT Sinh viên thực hiện: Nguyễn Văn Linh Lớp: CNTT K52 MỤC LỤC CHƯƠNG I: TỔNG QUAN VỀ NGÔN NGỮ C# 1.1 C# gì? 1.2 Đặc trưng C# CHƯƠNG II TỔNG QUAN VỀ THUẬT TOÁN NHÁNH CẬN 2.1 Định nghĩa 2.2 Ví dụ giải thuật 2.3 Ứng dụng 2.4 Độ phức tạp thuật toán 10 2.5 Code demo 10 2.6 Giao diện chương trình 13 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 14 CHƯƠNG I: TỔNG QUAN VỀ NGÔN NGỮ C# 1.1 C# gì? - C# (hay C sharp) ngơn ngữ lập trình đơn giản, phát triển đội ngũ kỹ sư Microsoft vào năm 2000, người dẫn đầu Anders Hejlsberg Scott Wiltamuth - C# ngơn ngữ lập trình đại, hướng đối tượng xây dựng tảng hai ngôn ngữ mạnh C++ Java - C# thiết kế cho Common Language Infrastructure (CLI), mà gồm Executable Code Runtime Environment, cho phép sử dụng ngôn ngữ high-level đa dạng tảng cấu trúc máy tính khác - C# với hỗ trợ mạnh mẽ NET Framework giúp cho việc tạo ứng dụng Windows Forms hay WPF (Windows Presentation Foundation), trở nên dễ dàng 1.2 Đặc trưng C# Các đặc điểm để làm cho C# ngơn ngữ lập trình chuyên nghiệp sử dụng rộng rãi: - C# ngơn ngữ đơn giản : Như ta biết ngôn ngữ C# dựng tảng C++ Java nên ngôn ngữ C# đơn giản Nếu thân thiện với C C++ chí Java, thấy C# giống diện mạo, cú pháp, biểu thức, toán tử chức khác lấy trực tiếp từ ngôn ngữ C C++, cải tiến để làm cho ngôn ngữ đơn giản Một vài cải tiến loại bỏ dư thừa, thêm vào cú pháp thay đổi - C# ngôn ngữ đại: Một vài khái niệm mẻ mơ hồ với bạn vừa học lập trình, xử lý ngoại lệ, kiểu liệu mở rộng, bảo mật mã nguồn…v…v Đây đặc tính cho ngơn ngữ đại cần có Và C# chứa tất đặt tính ta vừa nêu - C# ngơn ngữ lập trình hướng đối tượng: Lập trình hướng đối tượng (tiếng Anh: Object-oriented programming, viết tắt: OOP) phương pháp lập trình có tính chất Đó tính trừu tượng (abstraction), tính đóng gói (encapsulation), tính đa hình (polymorphism) tính kế thừa (inheritance) C# hỗ trợ cho tất đặc tính - C# kiểu ngơn ngữ từ khố: C sử dụng để mơ tả ngơn ngữ sử dụng giới hạn từ khóa (gồm khoảng 80 từ khóa mười kiểu liệu xây dựng sẵn) Nếu bạn nghĩ ngôn ngữ có nhiều từ khóa mạnh mẽ Điều khơng phải thật, lấy ví dụ ngơn ngữ C# làm điển hình Nếu bạn học sâu C# bạn thấy ngôn ngữ sử dụng để làm nhiệm vụ Ngồi đặc điểm cịn số ưu điểm bật C#: • C# có cấu trúc gần gũi với ngôn ngữ lập trình truyền thống, nên dể dàng tiếp cận học nhanh với C# • C# biên dịch nhiều tảng máy tính khác • C# xây dựng tảng C++ Java nên thừa hưởng ưu điểm ngơn ngữ • C# phần NET Framework nên chống lưng lớn đến từ phận • C# có IDE Visual Studio nhiều plug-in vô mạnh mẽ CHƯƠNG II TỔNG QUAN VỀ THUẬT TỐN NHÁNH CẬN Thuật tốn nhánh cận phương pháp chủ yếu để giải toán tối ưu tổ hợp Ta thực việc đánh giá theo bước, khơng có khả tìm thấy kết tốt cắt thành nhánh đó, khơng thực tìm tiếp mà chuyển sang nhánh khác Khi đó, ghi nhận kết tốt lúc ban đầu Nghiệm toán tốt dần lên tìm kết tốt ta cập nhập lại giá trị thời toán 2.1 Định nghĩa Thuật toán nhánh_và_cận thuật tốn sử dụng tìm kiếm leo đồi với hàm đánh giá f(u) Trong thuật toán này, bước phát triển trạng thái u, ta chọn trạng thái tốt v (f(v) nhỏ nhất) số trạng thái kề u đề phát triển bước sau Đi xuống gặp trạng thái v đích, gặp trạng thái v khơng có đỉnh kề, gặp trạng thái v mà f(v) lớn độ dài đường tối ưu tạm thời, tức đường đầy đủ ngắn số đường đầy đủ mà ta tìm Trong trường hợp này, ta không phát triển đỉnh v nữa, hay nói cách khác, ta cất nhánh xuất phát từ v, quay lên cha v đề tiếp tục xuống trạng thái tốt trạng thái lại chưa phát triển 2.2 Ví dụ giải thuật Ví dụ 1: Chúng ta lại xét khơng gian trạng thái hình 4.1 Phát triển đỉnh A, ta nhận đỉnh C, D, E F, f(C) = 24, f(D) = 13, f(E) = 21, f(F) = 27 Trong số D tốt nhất, phát triển D, sinh đỉnh H E, f(H) = 25, f(E) = 19 Đi xuống phát triển E, sinh đỉnh K I, f(K) = 17, f(I) = 18 Đi xuống phát triển K sinh đỉnh B với f(B) = g(B) = 21 Đi xuống B, B đỉnh đích, ta tìm đường tối ưu tạm thời với độ dài 21 Từ B quay lên K, từ K quay lên cha E Từ E xuống J, f(J) = 18 nhỏ độ dài đường tạm thời (là 21) Phát triển I sinh K B, f(K) = 25, f(B) = g(B) = 19 Đi xuống đỉnh B, đỉnh B đích ta tìm đường đầy đủ với độ dài 19 nhỏ độ dài đường tối ưu tạm thời cũ (21) Vởy độ dài đường tối ưu tạm thời 19 Bây từ B ta lại quay lên đỉnh lại chưa phát triển Song đỉnh có giá trị hàm đánh giá lớn 19, khơng có đỉnh phát triển Như vậy, ta tìm đường tối ưu với độ dài 19 Cây tìm kiếm biểu diễn hình sau: Hình 2.2.1 Cây tìm kiếm thuật tốn nhánh – – cận Thuật toán nhánh_và_cận biểu diễn thủ tục Branch_and_Bound Trong thủ tục này, biến cost dùng để lưu độ dài đường ngắn Giá trị ban đầu cost số đủ lớn, độ dài đường đầy đủ mà ta biết Procedure Branch_and_Bound; Begin Khởi tạo danh sách L chứa trạng thái ban đầu; Gán giá trị ban đầu cho cost; loop 2.1 if L rỗng then stop; 2.2 Loại trạng thái u đầu danh sách L; 2.3 if u trạng thái kết thúc then if g(u) cost then Quay lại 2.1; 2.5 for trạng thái v kề u {g(v) g(u) + k(u,v); f(v) g(v) + h(v); Đặt v vào danh sách L1}; 2.6 Sắp xếp L1 theo thứ tự tăng hàm f; 2.7 Chuyển L1 vào đầu danh sách L cho trạng thái đầu L1 trở thành đầu L; End U0=A T={H, J} Áp dụng thuật toán nhánh cận đồ thị Giải: Quá trình tìm kiếm thành công Đường ngắn từ A ->B->H, cost=4 2.3 Ứng dụng Bài toán người du lịch Cho n thành phố m tuyến đường nối chúng Một người du lịch xuất phát từ thành phố muốn tất thành phố cịn lại thành phố lần cuối quay trở thành phố ban đầu Hãy cho người hành trình với qng đường ngắn (chi phí nhất) Thuật tốn Gọi A[nxn] ma trận trọng số mô tả cho mạng lưới giao thơng a[i,j] khoảng cách trực tiếp từ thành phố i tới thành phố j, ta quy ước khơng có đường trực tiếp chi phí +∞ a[i,i]=0 Nghiệm tốn hành trình có dạng x1, x2, x3, … xn, xn+1=x1 Khởi tạo x1 thành phố ban đầu (1) khoảng cách ban đầu BEST=+∞, để tìm x2 ta chọn thành phố có đường trực tiếp tới x1, với cách chọn x2 ta lại có cách chọn x3 tương ứng trình tiếp tục cấu hình cuối cùng, tới thành phố đánh dấu thăm tới thành phố Như xi chọn thành phố chưa thăm có đường trực tiếp tới xi-1 với (1

Ngày đăng: 21/04/2022, 06:35

HÌNH ẢNH LIÊN QUAN

Hình 2.2.1. Cây tìm kiếm thuật toán nhánh – và – cận - TÌM ĐƯỜNG ĐI CHO NGƯỜI DU LỊCH SAO CHO QUÃNG ĐƯỜNG LÀ DÀI NHẤT
Hình 2.2.1. Cây tìm kiếm thuật toán nhánh – và – cận (Trang 6)
- Mô hình giao diện chương trình chưa có khả năng ứng dụng vào thực tế. - TÌM ĐƯỜNG ĐI CHO NGƯỜI DU LỊCH SAO CHO QUÃNG ĐƯỜNG LÀ DÀI NHẤT
h ình giao diện chương trình chưa có khả năng ứng dụng vào thực tế (Trang 14)

TỪ KHÓA LIÊN QUAN