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

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 17 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 đề 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 1,24 MB

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

Nội dung

Vai trò của trí tuệ nhân tạo trong ngành công nghệ thông tinTheo 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

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ộtloạ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ữ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 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á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 đắ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ảnkhá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à được

Trang 6

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

- Việc hiệu chỉnh và bảo trì hệ thống tương đối dễ dàng

Trang 7

- 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ềunà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ườngtì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ácthí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ủ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ựatrên luậ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ạ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 đó

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ại mỗi bước ta sẽ chọn trạng thái để phát triển là trạng thái được sinh ratrướ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ển là 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 đ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óichung 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

Trang 8

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 đi theo một nhánh vô hạn mà nghiệm không nằm trên nhánh đó thì thuậttoán sẽ không dừng Do đó người ta khuyên rằng, không nên áp dụng tìmkiếm theo 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

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 ứngvớ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 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ác thuậ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ái mà 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á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

Trang 9

 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

C# (đọc là "C thăng" hay "C sharp" ("xi-sáp")) là một ngôn ngữ lậptrìnhhướ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ộcmạnh mẽ vào framework này Mọi dữ liệu cơ sở đều là đối tượng, được cấpphát và hủy bỏ bởi trình dọn rác Garbage-Collector (GC), và nhiều kiểu trừu

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

 Chỉ có đơn kế thừa, nhưng có thể cài đặt nhiều interface trừu tượng (abstractinterfaces) 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ú 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ó 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:

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)

C# 3.0 11/2007 2008

Định nghĩa biến kiểu không tường minh (implicitly typedlocal variable), kiểu nặc danh (anonymous type), phươngthức mở rộng (extension method), khởi tạo đối tượng vàdanh sách (object and collection initializer), thuộc tínhđược tự động cài đặt (auto-implemented properties), biểuthức Lambda (Lambda expression), cây biểu thức(expression tree), biểu thức truy vấn (query expression)LINQ (language-integrated query)

Trang 12

C# 4.0 04/2010 2010

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# 5.0 02/2012 2012 Đặ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í

- 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

Trang 13

4 Xếp hạng của C#

Hiện nay ngôn ngữ C# được xếp hạng thứ 5 trong Top 10 các ngôn ngữ lậptrì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

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

Trang 15

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ệc rấ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ác luậ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

4 Đánh giá

 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ây dự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ư đóng gó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=K2sHT60nt0Yfile:///D:/

ACFrOgB5eioOi_4oU1vEmnb31KSA0QmNyF7bcE6ng4QGamJaOs

Ngày đăng: 21/10/2022, 09:03

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