1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Thuật Toán Và Thuật Giải 14 ppt

4 287 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 4
Dung lượng 237,2 KB

Nội dung

END; DSLuat ARRAY [1 SO_LUAT] OF Luat; 9; VAR CacLuat DSLuat; PROCEDURE KhoiDong; BEGIN CacLuat[1].DK := ‘x = Vx’; CacLuat[2].DK := ‘y = 0’; CacLuat[3].DK := ‘y>0’; 9; CacLuat[1].ThaoTac := ‘x:=0’; CacLuat[2].ThaoTac:= ‘y:=Vy’; CacLuat[3].ThaoTac:= ‘k:=min(Vx-x,y), x:=x+k, y:=y-k’; END; BEGIN WHILE (x<>z) AND (y<>z) DO BEGIN FOR i:=1 TO SO_LUAT DO IF GiaTriBoolean(CacLuat[i].DK) THEN ThucHien(CacLuat[i].ThaoTac); END; END. Chúng ta tạm cho rằng trong quá trình chương trình thi hành, ta có thể dễ dàng thay đổi số phần tử mảng CacLuat (các ngôn ngữ lập trình sau này như Visual C++, Delphi đều cho phép điều này). Với chương trình này, khi muốn sửa đổi "tri thức", bạn chỉ cần thay đổi giá trị mảng Luat là xong. Tuy nhiên, người dùng vẫn gặp khó khăn khi muốn bổ sung hoặc hiệu chỉnh tri thức. Họ cần phải nhập các chuỗi đại loại như ‘x=0’ hoặc ‘k:=min(Vx-x,y)’ .Các chuỗi này, tuy có ý nghĩa đối với chương trình nhưng vẫn còn khá xa lạ đối với người dùng bình thường. Chúng ta cần giảm bớt "khoảng cách" này lại bằng cách đưa ra những chuỗi điều kiện hoặc thao tác có ý nghĩa trực tiếp đối với người dùng. Chương trình sẽ có chuyển đổi lại các điều kiện và thao tác này sang dạng phù hợp với chương trình. Để làm được điều trên. Chúng ta cần phải liệt kê được các trạng thái và thao tác cơ bản của bài toán này. Sau đây là một số trạng thái và thao tác cơ bản. Trạng thái cơ bản : Bình X đầy, Bình X rỗng, Bình X không rỗng, Bình X có n lít nước. Thao tác Đổ hết nước trong bình, Đổ đầy nước trong bình, Đổ nướ c từ bình A sang bình B cho đến khi B đầy hoặc A rỗng. Lưu ý rằng ta không thể có thao tác "Đổ n lít nước từ A sang B" vì bài toán đã giả định rằng các bình đều không có vạch chia, hơn nữa nếu ta biết cách đổ n lít nước từ A sang B thì lời giải bài toán trở thành quá đơn giản. "Múc đầy X" "Đổ z lít nước từ X sang Y" Vì đây là một bài toán đơn giản nên bạn có thể dễ nhận thấy rằng, các trạng thái cơ bản và thao tác chẳ ng có gì khác so với các điều kiện mà chúng ta đã đưa ra. Kế tiếp, ta sẽ viết các đoạn chương trình cho phép người dùng nhập vào các luật (dạng nếu . thì .) được hình thành từ các trạng thái và điều kiện cơ bản này, đồng thời tiến hành chuyển sang dạng máy tính có thể xử lý được như ở ví dụ trên. Chúng ta sẽ không bàn đến việc cài đặt các đoạn chương trình giao tiếp với người dùng ở đây. Như vậy, so với chương trình truyền thống (được cấu tạo từ hai "chất liệu" cơ bản là dữ liệu và thuật toán), chương trình trí tuệ nhân tạo được cấu tạo từ hai thành phần là cơ sở tri thức (knowledge base) và động cơ suy diễn (inference engine). Cơ sở tri thức : là tập hợp các tri thức liên quan đến vấn đề mà chương trình quan tâm giải quyết. Động cơ suy diễn : là phương pháp vận dụng tri thức trong cơ sở tri thức để giải quyết vấn đề. Nếu xét theo quan niệm biểu diễn tri thức mà ta vừa bàn luận ở trên thì cơ sở tri thức chỉ là một dạng dữ liệu đặc biệt và động cơ suy diễn cũng chỉ là một dạng của thuật toán đặc biệt mà thôi. Tuy vậy, có thể nói rằng, cơ sở tri thức và động cơ suy diễn là một bước tiến hóa mới của dữ liệu và thuật toán của chương trình! B ạn có thể hình dung động cơ suy diễn giống như một loại động cơ tổng quát, được chuẩn hóa có thể dùng để vận hành nhiều loại xe máy khác nhau và cơ sở tri thức chính là loại nhiên liệu đặc biệt để vận hành loại động cơ này ! Cơ sở tri thức cũng gặp phải những vấn đề tương tự như những cơ s ở dữ liệu khác như sự trùng lắp, thừa, mâu thuẫn. Khi xây dựng cơ sở tri thức, ta cũng phải chú ý đến những yếu tố này. Như vậy, bên cạnh vấn đề biểu diễn tri thức, ta còn phải đề ra các phương pháp để loại bỏ những tri thức trùng lắp, thừa hoặc mâu thuẫn. Những thao tác này sẽ được thực hiện trong quá trình ghi nhận tri thức vào hệ thống. Chúng ta sẽ đề c ập đến những phương pháp này trong phần tìm hiểu về các luật dẫn. Hình ảnh trên tóm tắt cho chúng ta thấy cấu trúc chung nhất của một chương trình trí tuệ nhân tạo. B. CÁC PHƯƠNG PHÁP BIỄU DIỄN TRI THỨC TRÊN MÁY TÍNH V. LOGIC MỆNH ĐỀ Đây có lẽ là kiểu biểu diễn tri thức đơn giản nhất và gần gũi nhất đối với chúng ta. Mệnh đề là một khẳng định, một phát biểu mà giá trị của nó chỉ có thể hoặc là đúng hoặc là sai. Ví dụ : phát biểu "1+1=2" có giá trị đúng. phát biểu "Mọi loại cá có thể sống trên bờ" có giá trị sai. Giá trị của mệ nh đề không chỉ phụ thuộc vào bản thân mệnh đề đó. Có những mệnh đề mà giá trị của nó luôn đúng hoặc sai bất chấp thời gian nhưng cũng có những mệnh đề mà giá trị của nó lại phụ thuộc vào thời gian, không gian và nhiều yếu tố khác quan khác. Chẳng hạn như mệnh đề : "Con người không thể nhảy cao hơn 5m với chân trần" là đúng khi ở trái đất , còn ở những hành tinh có l ực hấp dẫn yếu thì có thể sai. Ta ký hiệu mệnh đề bằng những chữ cái la tinh như a, b, c, . Có 3 phép nối cơ bản để tạo ra những mệnh đề mới từ những mệnh đề cơ sở là phép hội (Ú ), giao(Ù ) và phủ định (Ø ) Bạn đọc chắn hẳn đã từng sử dụng logic mệnh đề trong chương trình rất nhiều lần (như trong cấu trúc lệnh IF . THEN . ELSE) để biểu diễn các tri thức "cứng" trong máy tính ! Bên cạnh các thao tác tính ra giá trị các mệnh đề phức từ giá trị những mệnh đề con, chúng ta có được một cơ chế suy diễn như sau : Modus Ponens : Nếu mệnh đề A là đúng và mệnh đề A® B là đúng thì giá trị của B sẽ là đúng. Modus Tollens : Nếu mệnh đề A® B là đúng và mệnh đề B là sai thì giá trị của A sẽ là sai. Các phép toán và suy luận trên mệnh đề đã được đề cập nhiều đến trong các tài liệu về toán nên chúng ta sẽ không đi vào chi tiết ở đây. VI. LOGIC VỊ TỪ Biểu diễn tri thức bằng mệnh đề gặp phải một trở ngại cơ bản là ta không thể can thiệp vào cấu trúc của một mệnh đề. Hay nói một cách khác là mệnh đề không có cấu trúc .   . so với chương trình truyền thống (được cấu tạo từ hai "chất liệu& quot; cơ bản là dữ liệu và thuật toán), chương trình trí tuệ nhân tạo được cấu tạo. chính là loại nhiên liệu đặc biệt để vận hành loại động cơ này ! Cơ sở tri thức cũng gặp phải những vấn đề tương tự như những cơ s ở dữ liệu khác như sự trùng

Ngày đăng: 15/12/2013, 02:15