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

(TIỂU LUẬN) bài tập lớn môn TRÍ TUỆ NHÂN tạo đề tài 24 VIẾT CHƯƠNG TRÌNH GIẢI bài TOÁN ĐONG nước

23 23 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

Tiêu đề Bài Tập Lớn Môn Trí Tuệ Nhân Tạo Đề Tài 24: Viết Chương Trình Giải Bài Toán Đong Nước
Tác giả Đỗ Danh Hải, Nguyễn Phương Thảo, Nguyễn Quý Hoàng, Tống Duy Hùng
Người hướng dẫn Nguyễn Thu Hương
Trường học Trường Đại học Công nghệ Thông tin Và Truyền Thông Thái Nguyên
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 2023
Thành phố Thái Nguyên
Định dạng
Số trang 23
Dung lượng 768,4 KB

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

Nội dung

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNGTHÁI NGUYÊN KHOA CÔNG NGHỆ THÔNG TIN BÀI TẬP LỚN MÔN TRÍ TUỆ NHÂN TẠO ĐỀ TÀI 24: VIẾT CHƯƠNG TRÌNH GIẢI BÀI TOÁN ĐONG NƯỚC Giảng viên: N

Trang 1

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

THÁI NGUYÊN KHOA CÔNG NGHỆ THÔNG TIN

BÀI TẬP LỚN MÔN TRÍ TUỆ NHÂN TẠO

ĐỀ TÀI 24:

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

Giảng viên: Nguyễn Thu Hương Sinh viên thực hiện:

Đỗ Danh Hải (CNTT-K17C) Nguyễn Phương Thảo (CNTT-K17C) Nguyễn Quý Hoàng (CNTT-K17C) Tống Duy Hùng (CNTT-K17C)

Trang 3

No table of contents entries found.

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

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

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ể các tình huống thông thường con người thường phải trải qua một loạt các giai đoạn sau:

+ Thu nhận thông tin về tình huống

Trang 4

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ữngtri thứ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 5

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ácnhân thông minh (intelligent agent) cũng có được những khả năng kể trên như conngườ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-basedagent), còn được gọi là hệ dựa trên tri thức (knowledge-based system) hoặc đơngiả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 đắ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

Trang 6

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ỗicâ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 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 7

- 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ìmmọ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íchhợ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ủa chươngtrình điều khiển Nhiều hệ thống gặp khó khăn trong việc đánh giá các hệ dựa trênluật sinh cũng như gặp khó khăn khi suy luận trên luậ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ại thà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 đó

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ìmkiếm theo bề rộng và tìm kiếm theo độ sâu Trong tìm kiếm theo bề rộng, tạimỗi bước ta sẽ chọn trạng thái để phát triển là trạng thái được sinh ra trướccá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ển là trạng thái được sinh ra sau cùng trong số cáctrạ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 đi từ 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 Ta có thể sử dụng hàm father để lưu lại cha của mỗi đỉnh trênđường đi, father(v) = u nếu cha của đỉnh v là u

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ẽđược phát triển trước, do đó danh sách L được xử lý như hàng đợi Trongbước 2.3, ta cần kiểm tra xem u có là trạng thái kết thúc hay không Nói

Trang 8

chung các trạng thái kế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 u có 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ớitrạng thái đích), thì thuật toán tìm kiếm theo bề rộng sẽ tìm ra nghiệm, đồngthời đường đi tìm được sẽ là ngắn nhất Trong trường hợp bài toán vônghiệm và không gian trạng thái hữu hạn, thuật toán sẽ dừng và cho thôngbáo vô nghiệm

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àitoán có nghiệm Song không phải với bất kỳ bài toán có nghiệm nào thuậttoán tìm kiếm theo độ 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ái hữu hạn, thì thuật toán tìm kiếm theo độ sâu sẽ tìm ranghiệm Tuy nhiên, trong trườ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ý do là ta luôn luôn đi xuống theo độ sâu, nếu ta đitheo một nhánh vô hạn mà nghiệm không nằm trên nhánh đó thì thuật toán

sẽ không dừng Do đó người ta khuyên rằng, không nên áp dụng tìm kiếmtheo dộ sâu cho các bài toán có cây tìm kiếm chứ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ìmkiế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ùng bên phải trên mức d của cây tìm kiếm, do đó độ phức tạpthời gian của tìm kiếm theo độ 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àitoá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ét toàn bộ cây tìm kiếm tới mức d-1, rồimới xem xét các đỉnh ở mức d Còn trong tì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ếm thì đã tìm ra nghiệm

Trang 9

trình tìm kiếm ta cần tránh phát sinh 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ác giả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 đỉnh mớ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àotậ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ạngthá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ạngthái đã phát triể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ất nhiều không gian và thời gian

là không đáng kể so với thời gian tìm kiếm theo bề rộng

Trang 10

II. Ngôn ngữ lập trình C# 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ôitrường thực thi (Runtime Environment) cho phép sử dụng các ngôn ngữ cấpcao khác nhau 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" ("xi-sáp")) là một ngôn ngữ lập

trình hướng đối tượ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 Microsoftnhư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ữaC++, 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ạnh

mẽ vào framework này Mọi dữ liệu cơ sở đều là đối tượng, được cấp phát vàhủy bỏ bởi trình dọn rác Garbage-Collector (GC), và nhiều kiểu trừu

10

Trang 11

tượng khác chẳng hạn như class, delegate, interface, exception phản ánh rõ ràng những đặc trưng củ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ết các đối tượng được tham chiếu an toàn, và các phép tính đều được kiểm tra 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ủa thờ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ì "int a[5]")

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

C# không có tiêu bản

Có thêm Properties, các phương pháp có thể gọi các Properties để truy cập dữ liệu

2 Lịch sử của C#

Lịch sử phát triển của C# và các đặc điểm chính của từng phiên bản

mô tả trong bảng sau:

Phiên Ngày ra Visual Đặc điểm mới

C# 1.0 01/2002 2002

C# 2.0 11/2005 2005 Kiểu tổng quát (generic type), phương thức nặc danh

(anonymous method), kiểu Nullable (nullable type)

Trang 12

Tham đối đặt tên (named argument), tham đối tùy chọn(optional argument), cải tiến hơn giao diện thành phầnCOM (more COM interface), 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ượnggọi (caller information)

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

 C# Là một trong số những ngôn ngữ thuần hướng đối tượng

- Chuyên sử dụng để lập trình cho windows

- Thiết kế winform cực tốt, đơn giản và dễ hiểu

- Ngôn ngữ dễ học, dễ tiếp cận với Java

- Khả năng tương tác với Database dễ dàng hơn rất nhiều

- Được window hỗ trợ đầy đủ các control

- Thư viện NET nhẹ, dễ cài đặt và được miễn phí

Trang 13

- Ngôn ngữ mã nguồn mở.

- Code/Build trên Visual Studio, một IDE tiện lợi, mạnh mẽ của Microsoft

- Có thể sử dụng để lập trình web thông qua C# thuần hoặc ASP.NET

- IDE Visual Studio hỗ trợ debug, build cực khủng

Hiện nay ngôn ngữ C# được xếp hạng thứ 5 trong Top 10 các ngôn ngữ lập trình phổ biến nhất đang được thế giới sử dụng

Trang 14

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

1 Giới thiệu bài toán

Viết chương trình giải bài toán đong nước: Có 2 bình với dung tích lần lượt n(lít), m (lít) Với lượng nước là không hạn chế, lúc đầu hai bình không chứa nước.Hãy dùng 2 bình trên để đong được k (lít) với n<k<m; Mô tả bằng đồ họa

2 Tư tưởng thuật toán

Gọi lượng nước chứa trong bình X là x (0<=x<=VX)

Gọi lượng nước chứa trong bình Y là y (0<=y<=VY)

Điều kiện đầu của bài toán là: x = 0 và y=0

Điều kiện kết thúc của bài toán sẽ là: x = z hoặc y = z

Bài toán đc giả dựa theo ba luật chính như sau:

(L1) Nếu bình X đầy thì đổ hết nước trong bình X đi.

(L2) Nếu bình Y rỗng thì đổ đầy nước vào bình Y.

(L3) Nếu bình X không đầy và bình Y không rỗng thì hãy trút nước từ bình Y sang bình

X (cho đến khi bình X đầy hoặc bình Y hết nước).

Bài toán cần có điều kiện số nước cần đong là một bội số của ước số chung lớn nhất của thể tích hai bình.

z = n x ƯCLN(VX, VY) (với n nguyên dương)

3 Xây dựng chương trình 3.1 Tạo form chính

14

Trang 15

3.2 tạo form hướng dẫn sử dụng

3.3 Viết chương trình

3.3.1 Khai báo các biến cần thiết

Trang 16

3.3.2 Tìm ước chung lớn nhất

- Chức năng đổ đầy nước vào bình 1(->Vx)

Trang 17

Chức năng đổ hết nước bình 1(Vx->)

Chức năng đổ đầy nước vào bình 2(->Vy)

Trang 18

Chức năng đổ hết nước bình 2(Vy->)

Trang 20

- chạy chương trình

Trang 21

1 Những nội dung đã làm được :

a Lý thuyết: Nắm chắc kiến thức và trình bày về trí tuệ nhân tạo, và vai trò, gải quyết các vấn đề bằng biểu diễn tri thức, tổng quan về chiến

Trang 22

lược suy diễn của trí tuệ nhân tạo Trình bày biểu diễn tri thức bởi luật và hệ, và những ví đụ.

b Thực hành: hoàn thành code và xây dựng được bài toán và demo chương trình như mông muốn

c Khả năng làm việc theo nhóm : Các thành viên trong nhóm làm việcrất tốt, thường xuyên trao đổi kiến thức và cùng nhau hoàn thiện bài tập của mình,

và tự trau dồi để củng cố kiến thức riêng cho bản thân

2 Các vấn đề gặp phải

Trong quá trình xây dựng chương trình, thu thập và biểu diễn tri thức

là hai vấn đè sảy ra nhiều sai sót và lỗi

Trong quá trình thu thập: vì số lượng thông tin hỏi đáp không nhiều nên kết quả khi thống kê chưa thật chính xác

Trong quá trình cài đặt chương trình

3 Hướng phát triển của đề tài

Xây dựng mở rộng thêm tri thức, cho phép học và bổ xung thêm cácluật vào cơ sở tri thức, cải tieend các tri thức, nâng cao độ chính xác

Thử nghiệm phương thức biểu diễn tri thức bằng thông tin không chắcchắn dựa trên lý thuyết xác suất

Chương trình còn nhiều hạn chế vè kết quả tư vấn vì số liệu tập luận dữ liệu còn hạn chế

Giao diện đơn giản

5 Những đóng góp của các thành viên trong đề tài:

Các thành viên trong nhóm rất hăng hái và đoàn kết trong việc xâydựng ý bài toán

phân công công việc rõ dàng để tìm kiếm thông tin cũng như đónggóp các ý kiếm lập luận để hoàn thiện bài tập lớp

Tài liệu tham khảo : https://vi.wikipedia.org/wiki/Suy_di%E1%BB%85n_logic#V

%C3%AD_d%E1%BB%A5

https://www.youtube.com/watch?v=K2sHT60nt0Y

Ngày đăng: 30/11/2022, 14:12

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