1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO cáo bài tập lớn đề tài VIẾT CHƯƠNG TRÌNH GIẢI bài TOÁN ĐONG nước

22 5 0
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

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

Nội dung

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNGKHOA CÔNG NGHỆ THÔNG TIN

-o0o -BÁO CÁO BÀI TẬP LỚN

ĐỀ TÀI: VIẾT CHƯƠNG TRÌNH GIẢI BÀI TOÁN ĐONG NƯỚC

Tên môn học:Trí tuệ nhân tạo

Sinh viên thực hiện:Đỗ Danh HảiDTC18H4802010203Tống Duy HùngDTC1854802010092Nguyễn Quý HoàngDTC1854802010295Nguyễn Phương Thảo DTC1854802010249

Thái Nguyên, tháng 3 năm 2021

Trang 2

M C L CỤC LỤCỤC LỤC

CHƯƠNG 1: CƠ SỞ LÍ THUYẾT 3

1.1.Tổng quan về trí tuệ nhân tạo 3

1.1.1 Trí tuệ nhân tạo là gì? 3

1.1.2 Vai trò của trí tuệ nhân tạo trong ngành công nghệ thông tin 4

1.1.3 Giải quyết vấn đề bằng biểu diễn tri thức 5

1.1.4 Các chiến lược tìm kiếm mù 7

CHƯƠNG 2: ÁP DỤNG TÌM KIẾM MÙ VÀO BÀI HỌC THỰC TẾ 14

2.1.Giới thiệu bài toán 14

2.2.Tư tưởng thuật toán 14

Trang 3

MỞ ĐẦU

Những tiến bộ trong công nghệ Trí tuệ nhân tạo đã mở ra những thị trường vàcơ hội mới cho sự tiến bộ trong các lĩnh vực quan trong như y tế, giáo dục, nănglượng và môi trường Trong những năm gần đây, máy móc đã vượt qua con ngườitrong việc thực hiện một số nhiệm vụ cụ thể nào đó, chẳng hạn như một số khíacạnh trong nhận dạng hình ảnh Các chuyên gia dự báo rằng sẽ tiếp tục có tiến bộnhanh chóng trong lĩnh vực trí tuej nhân tạo chuyên ngành Mặc dù không chắcrằng máy móc sẽ thể hiện trí tuệ ứng dụng rộng rãi tương đương hoặc vượt conngười trong vòng 20 năm tới, nhưng nó được kỳ vọng sẽ đạt và vượt hiệu suất củacon người trong ngày càng nhiều nhiệm vụ hơn.

Để góp phần chuẩn bị một tương lai, trong đó Trí tuệ nhân tạo đóng vai tròngày càng cao, các nghiên cứu tiến hành khảo sát hiện trạng của Trí tuệ nhân tạo,các ứng dụng hiện tại và tiềm năng của nó, và các vấn đề nảy sinh trong xã hội vàchính sách công do sự tiến bộ của Trí tuệ nhân tạo, đồng thời cũng đưa ra cáckhuyến cáo cho hành động cụ thể của các cơ quan chính phủ và các chủ thể.

Trí tuệ nhân tạo đã trở thành một môn học với mục đích chính là cung cấp lờigiải cho các vấn đề của cuộc sống thực tế Ngày nay, các ứng dụng trí tuệ nhân tạorất đa dạng và phong phú, áp dụng cho nhiều lĩnh vực như điều khiển tự động, cácloại robot, các hệ dịch tự động cho các ngôn ngữ tự nhiên, các hệ nhận dạng, tròchơi điện tử,…

Trang 4

CHƯƠNG 1: CƠ SỞ LÍ THUYẾT1.1 Tổng quan về trí tuệ nhân tạo

1.1.1 Trí tuệ nhân tạo là gì?

Có nhiều quan điểm khác nhau về trí tuệ nhân tạo Mỗi quan điểm đứng trênmột góc độ tiếp cận và cách ứng dụng trí tuệ nhân tạo vào cuộc sống Cho nên việcxây dựng định nghĩa về trí tuệ nhân tạo là khác nhau Do đó có nhiều định nghĩakhác nhau về trí tuệ nhân tạo.

Theo M.Misky: Trí tuệ nhân tạo là một ngành khoa học nhằm mô phỏng bằngmáy tính về hành vi thông minh của con người.

Đối với những người xây dựng và khai thác tri thức thì trí tuệ nhân tạo là mộtchuyên ngành thuộc công nghệ thông tin, được nghiên cứu dựa trên hai khía cạnh:

 Nghiên cứu bản chất hoạt động trí tuệ của bộ não con người.

 Mô phỏng những hoạt động trí tuệ của bộ não con người trên các thiết bịmáy.

Để giải quyết các tình huống thông thường con người thường phải trải quamột loạt các giai đoạn sau:

 Thu nhận thông tin về tình huống. Khả năng nhớ.

 Tổ chức thành những tình huống. Xử lý tình huống.

 Đưa ra những lời giải cho hành động.

Trang 5

1.1.2 Vai trò của trí tuệ nhân tạo trong ngành công nghệ thông tin

Theo một nghĩa nào đó thì trí tuệ nhân tạo nên một cách đơn giản để xây dựnglên cấu trúc các chương trình ra quyết định phức tạp đòi hỏi phải dựa trên những trithức nhất định.

Các chương trình trí tuệ nhân tạo hoạt động giống như bộ não của con ngườitức là nó có thể tích hợp những tri thức mới mà không cần thay đổi lại cách làmviệc Vì vậy những chương trình trí tuệ nhân tạo có thể dễ dàng cải tiến hơn so vớicác chương trình truyền thống.

Khi máy tính được trang bị những phần mềm trí tuệ nhân tạo kết hợp với môitrường làm việc thì có thể cho phép giải quyết được các bài toán cỡ lớn và phântán.

Một số phần mềm trí tuệ nhân tạo thể hiện tính thích nghi và mềm dẻo đối vớicác lớp bài toán thuộc nhiều lĩnh vực khác nhau.

Trang 6

1.1.3 Giải quyết vấn đề bằng biểu diễn tri thức

Con người sống trong môi trường có thể nhận thức được thế giới nhờ các giácquan (tai, mắt và các giác quan khác), sử dụng các tri thức tích lũy được và thôngqua khả năng lập luận, suy diễn con người có thể đưa ra các hành động hợp lý đểgiải quyết vấn đề Một mục tiêu của Trí tuệ nhân tạo ứng dụng là thiết kế các tác

nhân thông minh (intelligent agent) cũng có được những khả năng kể trên như con

người Chúng ta có thể hiểu tác nhân thông minh là bất cứ cái gì có thể nhận thứcđược môi trường qua các bộ cảm nhận (sensors) và đưa ra hành động hợp lý đápứng lại môi trường thông qua bộ hành động (effectors) Các robot, softbot(software robot), các hệ chuyên gia,… là các ví dụ về tác nhân thông minh Các tácnhân thông minh cần phải có tri thức về thế giới hiện thực mới có thể đưa ra cácquyết định đúng đắn.

Thành phần trung tâm của các tác nhân dựa trên tri thức (knowlegde-based

agent), còn được gọi là hệ dựa trên tri thức (knowledge-based system) hoặc đơn

giản là hệ tri thức, là cơ sở tri thức Cơ sở tri thức là một tập hợp các tri thức đượcbiểu diễn dưới dạng nào đó Mỗi khi nhận được các thông tin đưa vào, tác nhâncần có khả năng suy diễn để đưa ra các câu trả lời, các hành động hợp lý, đúng

Trang 7

đắn Nhiệm vụ này được thực hiện bởi bộ suy diễn Bộ suy diễn là thành phần cơbản khác của các hệ tri thức Như vậy, hệ tri thức bảo trì một cơ sở tri thức và đượctrang bị một thủ tục suy diễn Mỗi khi tiếp nhận được các sự kiện từ môi trường,thủ tục suy diễn thực hiện quá trình liên kết các sự kiện với các tri thức trong cơ sởtri thức để rút ra các câu trả lời, hoặc các hành động hợp lý mà tác nhân cần thựchiên Đương nhiên là, khi ta thiết kế một tác nhân giải quyết một vấn đề nào đó thìcơ sở tri thức sẽ chứa các tri thức về miền đối tượng cụ thể đó Để máy tính có thểsử dụng và xử lý được các tri thức, chúng ta cần biểu diễn tri thức dưới dạng thuậntiện cho máy tính dễ dàng hiểu được Đó là mục tiêu của biểu diễn tri thức.

Tri thức được mô tả dưới dạng các câu trong ngôn ngữ biểu diễn tri thức Mỗi

câu có thể xem như sự mã hóa của một sự hiểu biết của chúng ta về thế giới thực.Có rất nhiều phương pháp biểu diễn tri thức, và phải phụ thuộc vào tri thức cụthể của từng bài toán ta mới chọn được phương pháp biểu diễn hợp lý nhất.

 Biểu diễn tri thức bằng luật sản xuất (production rules). Biểu diễn tri thức bằng khung (frames).

 Biểu diễn tri thức sử dụng mạng ngữ nghĩa (semantic networks). Biểu diễn tri thức bằng ontology.

 Các mô hình xác suất.

Khi biểu diễn tri thức cho một bài toán, việc biểu diễn này được coi là tốt khichúng thỏa mãn được các yếu tố sau:

 Tính hoàn chỉnh (completeness). Tính ngắn gọn (conciseness).

 Tính hiệu quả về tính toán (computational efficiency). Tính rõ ràng, dễ hiểu (transparency).

Biểu diễn tri thức bằng luật đặc biệt hữu hiệu trong những tình huống hệthống cần đưa ra những hành động dựa vào những sự kiện có thể quan sát được.Dưới đây là một số ưu điểm chính:

 Các luật rất dễ hiểu nên có thể dễ dàng dùng để trao đổi với người dùng(vì nó là một trong những dạng tự nhiên của ngôn ngữ).

 Có thể dễ dàng xây dựng được cơ chế suy luận và giải thích từ các luật.

Trang 8

 Việc hiệu chỉnh và bảo trì hệ thống tương đối dễ dàng. Có thể cải tiến dễ dàng để tích hợp các luật mở.

Bên cạnh các ưu điểm nói trên, vẫn còn một số nhược điểm như:

 Các tri thức phức tạp đôi lúc đòi hỏi quá nhiều (hàng ngàn) luật sinh.Điều này sẽ làm này sinh nhiều vấn đề liên quan đến tốc độ lẫn quản trịhệ thống.

 Thống kê cho thấy, người xây dựng hệ thống trí tuệ nhân tạo thích sửdụng luật sinh hơn tất cả phương pháp khác (dễ hiểu, dễ cài đặt) nên họthường tìm mọi cách để biểu diễn tri thức bằng luật sinh cho dù cóphương pháp khác thích hợp hơn Đây là nhược điểm mang tính chủquan của con người.

 Cơ sở tri thức luật sinh lớn sẽ làm giới hạn khả năng tìm kiếm củachương trình điều khiển Nhiều hệ thống gặp khó khăn trong việc đánhgiá các hệ dựa trên luật sinh cũng như gặp khó khăn khi suy luận trênluật sinh

Trong bài này, đề cập đến việc sử dụng các câu trên như các luật, tổng hợp lạithành các hệ luật và đưa ra kết luận sau quá trình suy diễn từ các hệ luật đó.

1.1.4 Các chiến lược tìm kiếm mù

Trong mục này chúng ta sẽ trình bày hai chiến lược tìm kiếm mù: tìm kiếmtheo bề rộng và tìm kiếm theo độ sâu Trong tìm kiếm theo bề rộng, tại mỗi bướcta sẽ chọn trạng thái để phát triển là trạng thái được sinh ra trước các trạng thái chờphát triển khác Còn trong tìm kiếm theo độ sâu, trạng thái được chọn để phát triểnlà trạng thái được sinh ra sau cùng trong số các trạng thái chờ phát triển.

Chúng ta sử dụng danh sách L để lưu các trạng thái đã được sinh ra và chờđược phát triển Mục tiêu của tìm kiếm trong không gian trạng thái là tìm đường đitừ trạng thái ban đầu tới trạng thái đích, do đó ta cần lưu lại vết của đường đi Tacó thể sử dụng hàm father để lưu lại cha của mỗi đỉnh trên đường đi, father(v) = unếu cha của đỉnh v là u.

1.1.4.1 Tìm kiếm theo bề rộng

Trong tìm kiếm theo bề rộng, trạng thái nào được sinh ra trước sẽ đượcphát triển trước, do đó danh sách L được xử lý như hàng đợi Trong bước 2.3, ta

Trang 9

cần kiểm tra xem u có là trạng thái kết thúc hay không Nói chung các trạng tháikết thúc được xác định bởi một số điều kiện nào đó, khi đó ta cần kiểm tra xem ucó thỏa mãn các điều kiện đó hay không.

Nếu bài toán có nghiệm (tồn tại đường đi từ trạng thái ban đầu tới trạng tháiđích), thì thuật toán tìm kiếm theo bề rộng sẽ tìm ra nghiệm, đồng thời đường đitìm được sẽ là ngắn nhất Trong trường hợp bài toán vô nghiệm và không giantrạng thái hữu hạn, thuật toán sẽ dừng và cho thông báo vô nghiệm.

1.1.4.2 Tìm kiếm theo độ sâu

Thuật toán tìm kiếm theo bề rộng luôn luôn tìm ra nghiệm nếu bài toán cónghiệm Song không phải với bất kỳ bài toán có nghiệm nào thuật toán tìm kiếmtheo độ sâu cũng tìm ra nghiệm! Nếu bài toán có nghiệm và không gian trạng tháihữu hạn, thì thuật toán tìm kiếm theo độ sâu sẽ tìm ra nghiệm Tuy nhiên, trongtrường hợp không gian trạng thái vô hạn, thì có thể nó không tìm ra nghiệm, lý dolà ta luôn luôn đi xuống theo độ sâu, nếu ta đi theo một nhánh vô hạn mà nghiệmkhông nằm trên nhánh đó thì thuật toán sẽ không dừng Do đó người ta khuyênrằng, không nên áp dụng tìm kiếm theo dộ sâu cho các bài toán có cây tìm kiếmchứa các nhánh vô hạn Độ phức tạp của thuật toán tìm kiếm theo độ sâu.

Giả sử rằng, nghiệm của bài toán là đường đi có độ dài d, cây tìm kiếm cónhân tố nhánh là b và có chiều cao là d Có thể xẩy ra, nghiệm là đỉnh ngoài cùngbên phải trên mức d của cây tìm kiếm, do đó độ phức tạp thời gian của tìm kiếmtheo độ sâu trong trường hợp xấu nhất là O(bd), tức là cũng như tìm kiếm theo bềrộng Tuy nhiên, trên thực tế đối với nhiều bài toán, tìm kiếm theo độ sâu thực sựnhanh hơn tìm kiếm theo bề rộng Lý do là tìm kiếm theo bề rộng phải xem xéttoàn bộ cây tìm kiếm tới mức d-1, rồi mới xem xét các đỉnh ở mức d Còn trongtìm kiếm theo độ sâu, có thể ta chỉ cần xem xét một bộ phận nhỏ của cây tìm kiếmthì đã tìm ra nghiệm.

1.1.4.3 Các trạng thái lặp

Trong đồ thị biểu diễn không gian trạng thái, các trạng thái lặp ứng với cácđỉnh có nhiều đường đi dẫn tới nó từ trạng thái ban đầu Nếu đồ thị có chu trình

Trang 10

thì cây tìm kiếm sẽ chứa các nhánh với một số đỉnh lập lại vô hạn lần Trong cácthuật toán tìm kiếm sẽ lãng phí rất nhiều thời gian để phát triển lại các trạng tháimà ta đã gặp và đã phát triển Vì vậy trong quá trình tìm kiếm ta cần tránh phátsinh ra các trạng thái mà ta đã phát triển Chúng ta có thể áp dụng một trong cácgiải pháp sau đây:

 Khi phát triển đỉnh u, không sinh ra các đỉnh trùng với cha của u.

 Khi phát triển đỉnh u, không sinh ra các đỉnh trùng với một đỉnh nào đónằm trên đường đi dẫn tới u.

 Không sinh ra các đỉnh mà nó đã được sinh ra, tức là chỉ sinh ra các đỉnhmới.

Để thực hiện giải pháp thứ 3 ta cần lưu các trạng thái đã phát triển vào tập Q,lưu các trạng thái chờ phát triển vào danh sách L Đương nhiên, trạng thái v lầnđầu được sinh ra nếu nó không có trong Q và L Việc lưu các trạng thái đã pháttriển và kiểm tra xem một trạng thái có phải lần đầu được sinh ra không đòi hỏi rấtnhiều không gian và thời gian.

Tìm kiếm sâu lặp chỉ cần không gian nhớ như tìm kiếm theo độ sâu.

Trong tìm kiếm sâu lặp, ta phải phát triển lặp lại nhiều lần cùng một trạngthái Điều đó làm cho ta có cảm giác rằng, tìm kiếm sâu lặp lãng phí nhiều thờigian Thực ra thời gian tiêu tốn cho phát triển lặp lại các trạng thái là không đángkể so với thời gian tìm kiếm theo bề rộng

Trang 11

1.2 Ngôn ngữ lập trình C#

1.2.1 C# là gì ?

C# là một ngôn ngữ lập trình hiện đại được phát triển bởi Microsoft và đượcphê duyệt bởi European Computer Manufacturers Association (ECMA)và International Standards Organization (ISO).C# được phát triển bởi AndersHejlsberg và nhóm của ông trong việc phát triển Net Framework.

C# được thiết kế cho các ngôn ngữ chung cơ sở hạ tầng (Common LanguageInfrastructure – CLI), trong đó bao gồm các mã (Executable Code) và môi trườngthực thi (Runtime Environment) cho phép sử dụng các ngôn ngữ cấp cao khácnhau trên đa nền tảng máy tính và kiến trúc khác nhau.

C# (đọc là “C thăng” hay “C sharp”) là một ngôn ngữ lập trình hướng đốitượng được phát triển bởi Microsoft, là phần khởi đầu cho kế hoạch NET của họ.Tên của ngôn ngữ bao gồm ký tự thăng theo Microsoft nhưng theo ECMA là C#,chỉ bao gồm dấu số thường Microsoft phát triển C# dựa trên C++ và Java C#được miêu tả là ngôn ngữ có được sự cân bằng giữa C++, Visual Basic, Delphi vàJava.

C#, theo một hướng nào đó, là ngôn ngữ lập trình phản ánh trực tiếp nhấtđến NET Framework mà tất cả các chương trình.NET chạy, và nó phụ thuộc mạnhmẽ vào framework này Mọi dữ liệu cơ sở đều là đối tượng, được cấp phát và hủybỏ bởi trình dọn rác Garbage-Collector (GC), và nhiều kiểu trừu tượng khác chẳng

Trang 12

hạn như class, delegate, interface, exception phản ánh rõ ràng những đặc trưngcủa.NET runtime.

So sánh với C và C++, ngôn ngữ này bị giới hạn và được nâng cao ở một vàiđặc điểm nào đó, nhưng không bao gồm các giới hạn sau đây:

 Các con trỏ chỉ có thể được sử dụng trong chế độ không an toàn Hầu hếtcác đối tượng được tham chiếu an toàn, và các phép tính đều được kiểmtra tràn bộ đệm Các con trỏ chỉ được sử dụng để gọi các loại kiểu giá trị;

còn những đối tượng thuộc bộ gom rác (garbage-collector) thì chỉ được

gọi bằng cách tham chiếu.

 Các đối tượng không thể được giải phóng tường minh.

 Chỉ có đơn kế thừa, nhưng có thể cài đặt nhiều interface trừu tượng(abstract interfaces) Chức năng này làm đơn giản hóa sự thực thi củathời gian thực thi.

C# thì an-toàn-kiểu (typesafe) hơn C++.

 Cú pháp khai báo mảng khác nhau("int[] a = new int[5]" thay vì "inta[5]").

Kiểu thứ tự được thay thế bằng tên miền không gian (namespace).

thức nặc danh (anonymous method),kiểu Nullable (nullable type)

minh (implicitly typed local variable),kiểu nặc danh (anonymous type),phương thức mở rộng (extensionmethod), khởi tạo đối tượng và danhsách (object and collection initializer),thuộc tính được tự động cài đặt (auto-

Trang 13

implemented properties), biểu thứcLambda (Lambda expression), câybiểu thức (expression tree), biểu thứctruy vấn (query expression) LINQ(language-integrated query)

Tham đối đặt tên (named argument),tham đối tùy chọn (optionalargument), cải tiến hơn giao diệnthành phần COM (more COMinterface), kiểu dynamic và ràng buộctrễ (dynamic type and late binding)

Đặc điểm bất đồng bộ (async feature),thông tin đối tượng gọi (callerinformation)

1.2.3 Điểm mạnh của C#

Ngôn ngữ lập trình C# là ngôn ngữ lập trình bậc trung được phát triển vàonăm 2000 bởi Microsoft C# được xây dựng dựa trên ngôn ngữ C và C++ nhưng dễsử dụng hơn nhờ những bộ thư viện rộng lớn để thực hiện các các vụ khác nhau.

Microsoft.

Ngày đăng: 21/10/2022, 08:59

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

TÀI LIỆU LIÊN QUAN

w