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

Thực hành trí tuệ nhân tạo

43 1,6K 6

Đ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 43
Dung lượng 402,6 KB

Nội dung

Thực hành trí tuệ nhân tạo

Trang 1

PHẦN I: THUẬT TOÁN

I Cờ ta canh

1 Đề bài.

Tám (8) quân cờ được chỉ ra trong hình, gồm một bảng kích thước 3x3 với 8

quân cờ dược đánh số từ 1 đến 8 và một ô trống Một quân cờ đứng cạnh ô trống có

thể đi vào ô trống Mục tiêu là luôn luôn tiến tới vị trí các quân cờ như ở trong hình

bên phải (trạng thái đích)

Trạng thái đầu Trạng thái đích

Hãy trình bày thuật toán và viết chương trình demo để di chuyển các quân cờ

sao cho số bước di chuyển là thấp nhất (tối ưu) Dữ liệu được đọc từ file là ma trận

vuông 3x3

2 Thuật toán A* giải quyết bài toán

Trò chơi 8 số ở mức độ khó vừa phải nên là một trò chơi rất thú vị một giải

pháp điển hình gồm khoảng 20 bước, mặc dù con số này biến đổi phụ thuộc vào

trạng thái đầu Hệ số rẽ nhánh khoảng bằng 3 (khi ô trống ở giữa, có bốn khả năng

Một ví dụ khác để minh họa cho sự mềm dẻo của Logic mờ là việc xác định

Trang 2

di chuyển; khi nó ở góc có hai khả năng di chuyển; và khi nó ở trên các cạnh, có ba

khả năng đi) Để giải bài toán này ta cần tìm một hàm Heuristic tốt Ta có hai hàm

ước lượng:

- H1 = số lượng các số sai vị trí

- H2 = tổng số khoảng cách của các số so với vị trí mục tiêu, là tổng

khoảng cách theo chiều ngang và theo chiều dọc

Bài toán tacanh khi được giải bằng thuật toán A* sẽ thực hiện theo các bước sau:

Từ trạng thái ban đầu ta xác định được trạng thái đích

- Gọi G là số bước đã di chuyển ô trống

- H là hàm heuristic, ước tính số hao tổn để tới trạng thái đích, tính bằng tổng

các quãng đường của các ô ở vị trí sai để về tới vị trí đúng F=G+H

Có hai danh sách Open và Close,

- Open chứa các trạng thái chưa xét,

- Close chứa các trạng thái đã xét

Ban đầu ta thêm trạng thái khởi đầu vào Open, sau đó chọn trạng thái có f

= g + h nhỏ nhất, lúc này danh sách Open chứa duy nhất trạng thái khởi đầu nên ta

lấy trạng thái khởi đầu khỏi Open, và đưa vào danh sách Close các trạng thái đã xét

Từ trạng thái đang xét ta xác định được trạng thái tiếp theo, dựa vào các hướng di

chuyển của ô trống Đưa tất cả các trạng thái mới mà chưa có trong Close và Open

vào danh sách Open Ta tiếp tục chọn trạng thái có f = g + h nhỏ nhất khỏi Open

như bước đầu tiên cho đến khi tìm ra trạng thái đích thì dừng lại Từ trạng thái đích

vừa tìm được đi ngược lại danh sách ta sẽ tìm được đường đi từ trạng thái khởi đầu

đến trạng thái đích

Ví dụ: cho hình sau:

Một ví dụ khác để minh họa cho sự mềm dẻo của Logic mờ là việc xác định

Trang 3

N= 1+6+1+2+1=11 nên trạng thái đích là

• Các bước giải bài toán như sau:

 Đầu tiên ta xác định trạng thái tiếp theo của bài toán trên:

Có ba trường hợp xảy ra:

Đối với trường hợp 1 có g= 1, h= 4,f= h+g=5

Đối với trường hợp 2 có g= 1, h= 5,f= h+g=6

Đối với trường hợp 2 có g= 1, h= 6,f= h+g=7

So sánh các f với nhau ta thấy f của trường hợp 1 nhỏ nhất nên trạng thái tiếp theo

là trạng thái 1

 Từ 1 ta có ba trạng thái:

Một ví dụ khác để minh họa cho sự mềm dẻo của Logic mờ là việc xác định

Trang 4

Đối với trường hợp 1.1 có g= 2, h= 3,f= h+g=5

Đối với trường hợp 1.2 có g= 2, h= 5,f= h+g=7

Đối với trường hợp 1.3 có g= 2, h= 5,f= h+g=7

So sánh các f với nhau ta thấy f của trường hợp 1 nhỏ nhất nên trạng thái tiếp theo

là trạng thái 1.1

 Từ 1.1 có hai trạng thái:

Đối với trường hợp 1.1.1 có g= 3, h= 2,f= h+g=5

Đối với trường hợp 1.1.2 có g= 3, h= 4,f= h+g=7

So sánh các f với nhau ta thấy f của trường hợp 1 nhỏ nhất nên trạng thái tiếp theo

là trạng thái 1.1.1

 Từ 1.1.1 có một trạng thái:

Một ví dụ khác để minh họa cho sự mềm dẻo của Logic mờ là việc xác định

Trang 5

Hai người chơi với nhau trò chơi như sau: với 1 số a đang có sẵn, đến lượt mình

chơi, người đó sẽ viết số a+1 hay 2a với điều kiện số mới viết này không vượt qua

số nguyên dương N cho trước Với số bắt đầu là 1, ai viết được số N trước thì xem

như thắng

Xem như máy là người đi sau Trình bày thuật toán và viết chương trình mô tả

trò chơi sao cho khả năng thắng của máy cao Dữ liệu được đọc từ bàn phím

2 Thuật toán giải quyết(Mimax).

Giả sử cả các người chơi đều lựa chọn chiến thuật chơi tối ưu, thì khi một người

viết số x, ta có thể biết người đó sẽ chắc chắn thắng hay thua

Một ví dụ khác để minh họa cho sự mềm dẻo của Logic mờ là việc xác định

Trang 6

Với n không quá lớn, và bạn là một trong hai người chơi, bạn có thể lập bảng

trạng thái cho trò chơi này

Trong bài này, bảng trạng thái thực chất là mảng A[] với A[i] = 0 hoặc 1, tương ứng

với khả năng thắng chắc hoặc thua chắc

Khởi tạo : A[n] = 1 (thắng)

Bạn sẽ phải suy nghĩ tiếp công thức để điền được đầy đủ trạng thái cho bảng

Sau đó, khi chơi ta chỉ việc cố gắng viết một số có khả năng thắng chắc đã được chỉ

ra trong bảng trạng thái, tất nhiên nếu đối thủ đi trước, luôn chọn một chiến lược đi

tối ưu, và A[1] == 1, thì ta vẫn không thể thắng được

3 Cài đặt thuật toán

4 Kết quả Demo

III Bài toán phân việc

1 Đề bài:

Có n chi tiết máy J1, J2, , Jn cần gia công lần lượt trên 3 máy A, B, Cvới thời

gian hoàn thành tương ứng của 1 chi tiết là TA, TB, TC Các chi tiết từ J1, J2, , Jn có

thể gia công theo thứ tự bất kỳ tuy nhiên một chi tiết Ji phải được gia công lần lượt

theo thứ tự trên máy A  máy B  máy C

Trình bày thuật toán và viết chương trình mô tả sao cho tổng thời gian gia công

hoàn thành n chi tiết là thấp nhất (tối ưu) Dữ liệu được đọc từ file có dạng như sau:

DULIEU.INP

J1A, J2A, , JnA //thời gian gia công các chi tiết trên máy A

J1B, J2B, , JnB //thời gian gia công các chi tiết trên máy B

J1C, J2C, , JnC //thời gian gia công các chi tiết trên máy C

Kết quả xuất ra là thứ tự các công việc

2 Thuật toán giải quyết bài toán

Một thuật toán hết sức nổi tiếngđể giải bài toán trên đó là thuật toán Johnson

Thuật toán gồm các bước nhưsau:

Chia các chi tiết thành 2 nhóm: Nhóm N1 gồm các chitiết Di thoả mãn ai < bi và

nhóm N2gồm các chi tiết Di thoả mãn ai > bi Cácchi tiết Di thoả mãn ai = bi xếp vào

nhóm nàocũng được

Sắp xếp các chi tiết trong N1 theo chiều tăng của cácai và sắp xếp các chi tiết

trong N2 theo chiều giảm củacác bi

Nối N2 vào đuôi N1 Dãy thu được (đọc từtrái sang phải) sẽ là lịch gia công tối

ưu

Một ví dụ khác để minh họa cho sự mềm dẻo của Logic mờ là việc xác định

Trang 7

Như vậy với ví dụ sau:

Bước 1: Ta có:N1 = {3, 5}; N2 = {1, 2, 4}

Bước 2: Sau khisắp xếp thì N1 = {3, 5}; N2= {2, 4, 1};

Bước 3: Lịchgia công là: 3 -> 5 -> 2 -> 4 ->1

Thuật toán Johnson đã được chứng minhvà cách làm trên sẽ cho ta được lịch

gia công tối ưu thoả mãn yêu cầu đề bài.Tuy nhiên, ở đây tôi muốn giới thiệu với

các bạn một thuật toán tham ăn kháccũng có độ chính xác cao (gần như tuyệt đối)

mà có phần đơn giản hơn và ứngdụng của nó cũng khá rộng rãi Thuật toán như sau:

Bước 1: Lập mảng Cvới Ci = ai / bi (i = 1, 2, , n)

Bước 2: Sắp xếp mảng Ctăng dần theo giá trị các phần tử cùng với sự thay

đổi thứ tự các chi tiết máy.Thứ tự các chi tiết mấy cuối cùng chính là thứ tự gia

công cần tìm

Như vậy với ví dụ trước ta có vớithuật toán trên thì:

Bước 1: Mảng C = [2,7/6, 1/9, 7/3, 2/5].

Thứ tựcác chi tiết giữ nguyên là: D1 -> D2 -> D3 -> D4 -> D5

Bước 2: Sau khi sắp xếptăng dần thì

C = [1/9, 2/5, 7/6, 2, 7/3]

Thứ tự cácchi tiết là: D3 -> D5 -> D2 -> D4 -> D1

Thứ tự trên chính là thứ tự giacông phải tìm Chúng ta có thể dễ dàng thấy

được lịch trình gia công ở đây hoàntoàn giống với lịch trình gia công nếu như

chúng ta giải quyết bài toán vớithuật toán Johnson Các bạn có thể kiểm tra độ đúng đắn của thuật toán vớinhiều bộ test khác, tôi xin đưa ra một ví dụ nữa:

Thứtự gia công sẽ là: D1 -> D4 -> D2-> D5-> D3

Hoặc:D4 -> D1 -> D5 -> D2 -> D3

Thuật toán lập tỉ số như trên cònđược ứng dụng khá rộng rãi ở một số bài

toán có chủ đề tương tự Chúng ta hãyxét bài toán sau: Bắt đầu từ thời điểm 0, một

người làm n công việc đánh sốhiệu từ 1 -> n(n ≤ 200) Với 1 ≤ i ≤ N, việc i cần làm

trong T[i] đơn vị thời gian.Từ thời điểm 0 đến lúc bắt đầu làm công việc nào đó,

người đó bị phạt một lượngtiền C[i] cho mỗi đơn vị thời gian Khi đã làm một việc

nào thì phải làm xongviệc ấy sau đó mới được chuyển sang làm việc khác Hãy thu

xếp trình tự làmviệc sao cho tổng số tiền phạt là ít nhất Giả sử dữ liệu cho trong tệp

có dạngnhư ví dụ sau:

Một ví dụ khác để minh họa cho sự mềm dẻo của Logic mờ là việc xác định

Trang 8

3 1 1 6 4 7

4 3 4 2 1 3

Với dòng đầu đó là số lượng công việc (ở đâyn=6), dòng thứ 2 ghi thứ tự số

lượng thời gian cần thiết cho từng công việc.Dòng thứ 3 ghi số tiền phạt cho mỗi

đơn vị thời gian ở các công việc tương ứng

Để giải quyết bài toán trên ta có thể sử dụng thuậttoán lập dãy tỉ số như trên

Giả sử mảng A gồm các phần tử A[i] = T[i] / C[i] (i =1, 2, , n) Khi đóta có các

bước giải như sau:

Bước 1: mảng A là 3/4 ; 1/3 ; 1/4 ; 6/2 ;4/1 ; 7/3.

Thứ tự công việc vẫn giữ nguyên

Bước 2: Sắp xếp mảng Atăng dần: 1/4 ; 1/3 ; 3/4 ; 7/3 ; 6/2 ; 4/1 Thứ tự công

Một người khách du lịch muốn đi thăm n thành phố được đánh số từ 1 n và quay

lại thành phố xuất phát Mạng lưới giao thông giữa n thành phố này là hai chiều và

được cho bởi ma trận A[i,j] trong đó A[i,j]=1 nếu có đường đi từ thành phố i đến

thành phố j, A[i,j]=0 trong trường hợp ngược lại

Hãy thiết lập lộ trình cho người khách hay thông báo không tồn tại lời giải Dữ liệu

được đọc từ file có dạng như sau:

DULIEU.INP

Dòng 1: Ghi số nguyên n (n<=20)

Dòng i+1 (1<=i<=n) ghi n số nguyên không âm (0 hoặc 1)

Kết quả xuất ra chu trình đường đi (Chu trình HAMILTON)

Một ví dụ khác để minh họa cho sự mềm dẻo của Logic mờ là việc xác định

Trang 9

2 Thuật toán giải quyết bài toán.

Thuật toán đàn kiến giải bài toán người du lịch

Để bắt chước hành vi của các con kiến thực, Dorigo xây dựng các con kiến

nhân tạo (artificial ants) cũng có đặc trưng sản sinh ra vết mùi để lại trên đường đi

và khả năng lần vết theo nồng độ mùi để lựa chọn con đường có nồng độ mùi cao

hơn để đi Với bài toán Người du lịch trên đồ thị trong không gian hai chiều với

trọng số là khoảng cách Euclide giữa hai đỉnh bất kỳ, Dorigo gắn với mỗi cạnh (i, j) ngoài trọng số d(i, j) trên là nồng độ vết mùi trên cạnh đó, đặt là Ban đầu, các

nồng độ mùi trên mỗi cạnh được khởi tạo bằng một hằng số c nào đó

Phương pháp tìm đường đi mô phỏng hành vi con kiến

Các con kiến sẽ tiến hành tìm đường đi từ đỉnh xuất phát qua một loạt các

đỉnh và quay trở về đỉnh ban đầu, tại đỉnh u một con kiến sẽ chọn đỉnh v

chưa được đi qua trong tập láng giềng của u theo xác suất sau:

trong đó

.- UV(u) là tập các đỉnh láng giềng của u chưa được con kiến hiện tại đi qua

gọi là thông tin heurtistic giúp đánh giá chính xác hơn sự lựa chọn của

con kiến khi quyết định đi từ đỉnh u qua đỉnh v

Ta có thể hiểu công thức trên đơn giản như sau: quyết định lựa chọn đỉnh tiếp theo

để đi của con kiến được lựa chọn ngẫu nhiên theo xác suất (tức là đỉnh nào có xác

suất cao hơn sẽ có khả năng được chọn cao hơn, nhưng không có nghĩa là các đỉnh

có xác suất thấp hơn không được chọn mà nó được chọn với cơ hội thấp hơn mà

thôi) Ý tưởng này được thể hiện qua kỹ thuật Bánh xe xố số (Lottery Wheel) sẽ

Một ví dụ khác để minh họa cho sự mềm dẻo của Logic mờ là việc xác định

Trang 10

được trình bày sau Và xác suất này (hay khả năng chọn đỉnh tiếp theo của con kiến)

tỷ lệ thuận với nồng độ vết mùi trên cạnh được chọn (theo đặc tính của con kiến tự

nhiên) và tỷ lệ nghịch với độ dài cạnh, là những hệ số điểu khiển việc lựa chọn

của con kiến nghiêng về phía nào

Kỹ thuật bánh xe xổ số

Đây là kỹ thuật phổ biến hay sử dụng trong các phương pháp tìm kiếm dựa vào xác

suất, đặc biệt trong phép toán Chọn lọc (Selection) của thuật toán di truyền (Genetic Algorithm) Cụ thể kỹ thuật như sau:

Giả sử V={v1,v2, …, vn} là tập các láng giềng của u, p1, p2, …, pn là xác suất lựa

chọn đỉnh tiếp theo từ u của tương ứng v1,v2, …, vn, tức là chắc

chắn chọn 1 trong các đỉnh trên để đi tiếp Để đảm bảo ưu thế của những đỉnh có

xác suất lớn, nhưng vẫn đảm bảo cơ hội của các đỉnh có xác suất thấp hơn người ta

sinh ra một số ngẫu nhiên k thuộc (0, sum] rồi chọn i nhỏ nhất sao cho

Cách làm này mô phỏng hoạt động của một vòng quay xổ số (vòng được

chia làm nhiều phần không bằng nhau), rõ ràng khi quay ta không biết kim của bánh quay sẽ chỉ vào phần nào nhưng ta cũng có thể nhận thấy ngay là phần lớn hơn sẽ

nhiều khả năng kim rơi vào đó hơn Chính vì vậy kỹ thuật này được gọi là Bánh xe

xổ số

Như vậy, các con kiến từ một đỉnh xuất phát, lần lượt tới thăm các đỉnh tiếp

theo theo quy tắc trên (thăm xong đánh dấu chúng lại) cho đến thăm tới đỉnh cuối

cùng và quay về đỉnh ban đầu, kết thúc một hành trình Quá trình này được lặp đi

lặp lại, hành trình tốt hơn (có chiều dài ngắn hơn) sẽ được cập nhật cho đến một

khoảng thời gian đủ tốt (thông thường tính toán theo số vòng lặp, với các trường

hợp nhỏ (số đỉnh <=200) số vòng lặp bằng 500 là đủ tìm ra kết quả tối ưu, còn với

các trường hợp lớn hơn ta phải thử với số lần lặp lớn hơn nhiều, tùy thuộc vào từng

bộ dữ liệu cụ thể

Sau khi và trong quá trình các con kiến tìm đường đi các vết mùi ( ) được

cập nhật lại, vì chúng bị biến đổi do quá trình bay hơi và do quá trình tích lũy của

các con kiến trên cạnh đó Có rất nhiều cách cập nhật mùi, mỗi cách có ảnh hưởn

nhất định đến chất lượng của thuật toán Trong phạm vi kiến thức phổ thông, chúng

tôi giới thiệu cách cập nhật mùi đơn giản nhất như sau:

Sau mỗi vòng lặp (các con kiến đều tìm được hành trình riêng của mình), vết mùi trên mỗi cạnh được cập nhật lại theo công thức sau:

Một ví dụ khác để minh họa cho sự mềm dẻo của Logic mờ là việc xác định

Trang 11

trong đó gọi là tham số bay hơi (sở dĩ gọi như vậy vì sau mỗi lần cập nhật

lượng mùi trên cạnh (i,j) sẽ mất đi một lượng là , thường được chọn là

0,8 trong cài đặt và chạy chương trình Ngoài lượng bay hơi mất đi đó mỗi cạnh (i,

j) còn được tích tụ thêm một lượng mùi nhất định tùy thuộc vào từng con kiến

đi qua, cụ thể được tính như sau:

trong đó Q là một hằng số, Lk là độ dài hành trình của con kiến thứ k

Nhờ việc cập nhật mùi này, sau mỗi vòng lặp (hay sau mỗi lần các con kiến đi

hết hành trình), nồng độ vết mùi trên các cạnh sẽ thay đổi (hoặc giảm hoặc tăng

dần) ảnh hưởng đến quyết định chọn của các con kiến, có thể ở bước lặp này chọn

một cạnh để đi nhưng đến bước lặp khác vẫn con kiến đó lại không đi qua cạnh đó

nữa Nhờ vậy thuật toán có khả năng tìm được lời giải tốt trong những trường hợp

Một công ty cần thay toàn bộ hệ thống dây điện cho N phòng làm việc Cho biết

sơ đồ mạng lưới điện hiện có của n căn phòng được biểu diễn bằng ma trận A[i,j]

trong đó A[i,j] chính là độ dài của dây điện nối giữa 2 phòng i và j (A[i,j]=A[j,i],

A[i,j]=0 nếu không có (không thể) dây nối giữa phòng i và j) Hãy lập trình tính độ

dài của dây dẫn cần sử dụng sao cho cả N phòng dều có điện và số lượng này là ít

nhất

Dữ liệu được đọc từ file có N+1 dòng dạng như sau: DULIEU.INP

Dòng 1: Ghi số nguyên N

Dòng i+1 (1<=i<=N) ghi N số nguyên A[i,1] A[i,2] A[i,N]

Các số ghi trên 1 dòng cách nhau ít nhất 1 dấu cách

Kết quả xuất ra màn hình cách nối và tổng độ dài nhỏ nhất

Một ví dụ khác để minh họa cho sự mềm dẻo của Logic mờ là việc xác định

Trang 12

2 Thuật toán Prim tìm cây phủ tối tiểu.

Bước 1: Xuất phát từ đỉnh k bất kỳ (thông thường chọn đỉnh đầu tiên) chọn

một cạnh có trọng số nhỏ nhất liền kề với đỉnh k (min{A[k][j]}j=1 n) ta

đánh dấu 2 đỉnh đi qua cạnh đó

và số cạnh tìm được là 1 Chuyển sang bước 2

Bước 2: Tìm cạnh nhỏ nhất của đồ thị với điều kiện cạnh tìm được phải có 1

đỉnh chưa đánh dấu và 1 đỉnh đã đánh dấu (min{A[i][j]}j=1 n, i=1 n sao

cho i đánh đấu và j chưa đánh dấu) để tránh trường hợp tạo thành chu trình

Ta tăng số cạnh tìm được lên 1 và chuyển sang bước 3

Bước 3: Nếu số cạnh tìm được bằng n-1 kết thúc thuật toán, ngược lại quay

về bước 2

3 Cài đặt thuật toán.

Ta tổ chức mảng 1 chiều D để đánh dấu Nếu D[i]=1 đỉnh i được đánh dấu và D[i]=0 nếu i chưa được đánh dấu

Bước 1: Tìm min{A[1][j]}j=1 n Sau đó gán D[1]=D[j]=1 (đánh dấu 2 đỉnh

1,j) và cho số cạnh tìm được bằng 1 (Dem=1)

Bước 2: Tìm min{A[i][j]}j=1 n, i=1 n với điều kiện D[i]=1 và D[j]=0 Sau

đó gán D[j]=1 (đánh dấu đỉnh j vừa tìm được) và tăng số cạnh lên 1 (Dem+

Cậu bé nghĩ ra 1 số (Gọi là S) gồm bỗn chữ số (không nhất thiết khác nhau)

trong sáu chữ số từu 1 đến 6 Để tìm số đó máy lần lượt đưa ra các số dự đoán (gọi

là M), mỗi số gồm 4 chữ số không nhất thiết khác nhau Với mỗi lần dự đoán, máy

nhận được 2 câu trả lời của cậ bé cho 2 câu hỏi sau

Có bao nhiêu chữ số trong M là chữ số trong S nhưng vị trí xuất hiện của

mỗi chữ số đó là sai?

Có bao nhiêu chữ số trong M là chữ số trong S và đồng thời vị trí xuất hiện

của mỗi chữ số đều đúng?

Yêu cầu: Hãy hiện lên màn hình các số máy dự đoán và nói mỗi số đó nhận 2 câu

trả lời từ bàn phím của cậu bé cho đến khi được số đúng như cậu bé nghĩ (Số lần

dự đoán không quá 6 lần)

Trang 13

Trong ngày sinh nhật Tom và Jerry nhận được N đồ chơi (N<=40) Trên đồ chơi

i có giá tiền là Xi Hai anh em quyết định mỗi người phải có trách nhiệm bảo quản 1 phần số quà và phân chia sao cho chênh lệch tổng giá trị tiền đồ chơi mà mỗi người

phải bảo quản là ít nhất Hãy giúp Tom bà Jerry phân chia trách nhiệm Dữ liệu đọc

từ file text có dạng sau:

Dòng 1 : ghi số nguyên dương N

Dòng 2 : Ghi N số nguyên dương tương ứng với giá trị N đồ vật

2 Thuật toán

Với một số M bất kì, nếu ta biếtđược có tồn tại một cách chọn các gói kẹo để

tổng số kẹo của các gói được chọnbằng đúng M không, thì bài toán được giải sẽ

quyết Vì đơn giản là ta chỉ cầnchọn số M sao cho M gần với Ai/2nhất (với i

=1,2, ,N) Sau đó xếp các gói kẹo để tổng bằng M vào phần một,phần thứ hai sẽ

gồm các gói kẹo còn lại Để kiểm tra được điều trên ta sẽ xâydựng tất cả các tổng có

Một ví dụ khác để minh họa cho sự mềm dẻo của Logic mờ là việc xác định

Trang 14

thể có của N gói kẹo bằng cách: ban đầu chưa có tổngnào được sinh ra Làm lần

lượt với các gói kẹo từ 1 đến N, với gói kẹo thứ i,ta kiểm tra xem hiện tại có các

tổng nào đã được sinh ra, giả sử các tổng đó làx1, x2, , xt vậy thì đến bước này sẽ có

thểsinh ra các tổng x1, x2, , xt và Aivà x1+Ai,x2+Ai, ,xt+Ai.Với N gói kẹo, mà mỗi

gói có không quá 100 cái kẹo vậy tổng số kẹo không vượtquá N*100 <= 10000 cái

kẹo Dùng mảng đánh dấu D, nếu có thể sinh được ratổng bằng k thì D[k] = 1

Có 1 bản đồ có N nước Mỗi nước được tô 1 màu để phân biệt Các nước liền kề

nhau không được tô cùng màu với nhau Hãy xác định số màu tối thiểu để tô bản đồ sao cho các miền kề nhau không được tô cùng màu

◊ File dữ liệu đầu vào: GRAPH.INP có cấu trúc

Trang 16

Từ đồ thị G bằng cách loại bỏ đỉnh x cùng với tất cả các cạnh nối tới đỉnh x đó

Một đồ thị trống là đồ

thị không chứa một đỉnh hay một cạnh nào Hai đỉnh gọi là kề nhau nếu có cạnh

nối với nhau

Với một đỉnh x bất kỳ, ta xây dựng một tập các bộ 3 như sau:

Trong đó đỉnh thứ nhất kề với đỉnh thứ hai, đỉnh thứ 2 kề với đỉnh thứ 3 Và

không tồn tại một bộ 3 nào mà:

đỉnh thứ nhất kề hoặc trùng với đỉnh thứ 3 Từ tập các bộ 3 đó, ta tìm các đỉnh yi sao cho có:

mi = max(m1, m2, , mn) và đặt yi = x Nếu có nhiều đỉnh y đạt max ta chọn

đỉnh đầu tiên

Ta có thể hình dung: Chọn một đỉnh trong số những đỉnh không kề với đỉnh x,

kề với đỉnh (đỉnh trung gian)

kề với đỉnh x, có số đỉnh trung gian là lớn nhất

Một ví dụ khác để minh họa cho sự mềm dẻo của Logic mờ là việc xác định

Trang 17

Các bước của thuật toán (đồ thị G là dữ liệu vào):

Bước 1: Đặt j = 1, H=G

Bước 2: Đặt vj là đỉnh có bậc cao nhất trong H

Bước 3: Từ vj xây dựng tất cả các bộ 3 như trên và tìm đỉnh x Nếu không tìm

được x, trong trường hợp

không tìm được bộ 3 nào, chọn một đỉnh có bậc lớn nhất không kề với vj

Bước 4: Nhập x vào vj và quay lại bước 3 cho tới khi không chọn được một đỉnh nào nữa thì quay lại bước 2

với : H=H-{vj}, j=j+1

Bước 5: Khi không còn một đỉnh nào còn lại trong H, dựng lại và tô màu i cho

tất cả các đỉnh được

3 Cài đặt thuật toán.

4 Kêt quả demo.

IX Người lái đò

1 Đề bài.

Viết chương trình mô phỏng bài toán người lái đò (có thể có giao diện đồ họa) Bài

toán phát biểu như sau:

Tại bến sông nọ có bắp cải, sói và dê muốn bác lái đò chở qua sông Biết rằng tại

một thời điểm thuyền của bác lái đò chỉ chở tối đa được 2 khách Nếu sói và dê

đứng riêng với nhau (không có mặt bác lái đò và bắp cải) thì sói sẽ ăn thịt dê Nếu

dê và bắp cải đứng riêng với nhau (không có mặt bác lái đò và sói) thì dê sẽ ăn bắp

cải

Ký hiệu bờ sông mà sói, dê, bắp cải và bác lái đò đang đứng là 1, bờ sông bên kia là

2 Hãy viết chương trình giải quyết bài toán trên

2 Thuật toán

Với bài toán này , cách biểu diễn tri thức tốt nhất có thể vạch ra các ràng buộc

vốn sẵn có trong bài toán đó là

Xây dựng một biểu đồ với các nút có đánh nhãn biều diễn người lái đò mang

theo thứ mà ông ta cần mang theo trên mỗi chuyến đò

Và các cạnh liên kết giữa các nút biễu diễn bằng các đường mũi tên chỉ các chuyến

đò sang sông

Một ví dụ khác để minh họa cho sự mềm dẻo của Logic mờ là việc xác định

Trang 18

Biểu đồ biễu diễn tri thức của bài toán người lái đò được mô tả như hình:

Với người lái đò và ba thứ ông ta muốn mang theo ở bên này sông hay bên kia sông , ta có 21+3 = 16 lần sắp xếp khác nhau , trong đó 6 lần sắp xếp khác qua

lại sông không an toàn đó là :

Sói , dê và bắp cải bên này sông hoặc bên kia sông

Sói và dê bên này sông hoặc bên kia sông

Dê và bắp cải bên này sông hoặc bên kia sông

Và 10 lần sắp xếp qua sông an toàn đó là ( Kí hiệu: Sói :S , Dê : D , Bắp cài : B ,

Trang 19

Khi tri thức của bài toán đã được biễu diễn , phương pháp giải bài toán trong

lĩnh vực trí tuệ nhân tạo đó là kỹ thuật tìm kiếm trong miền biểu diễn tri thức của

bài toán đó

Để giải bài toán người lái đò , kỹ thuật tìm kiếm là bằng cách bám dò tìm theo

các đường mũi tên bắt đầu từ nút khởi tạo liên kết qua các nút để đi đến đích

3 Cài đặt thuật toán.

4 Kêt quả demo.

X Qua sông

1 Đề bài.

Viết chương trình mô phỏng bài toán qua sông (có thể có giao diện đồ họa) Bài

toán phát biểu như sau:

Tại bến sông nọ có 3 thầy tu và 3 con quỷ muốn qua sông Biết rằng tại một thời điểm thuyền chỉ chở tối đa được 2 khách Nếu bất cứ ở trên bờ nào, bên này hoặc

bên kia thì số con quỷ phải bé hơn hoặc bằng số thầy tu, ngược lại quỷ sẽ ăn thịt

thầy tu

Hãy viết chương trình giải quyết bài toán trên

2 Thuật toán giải quyết.

Bài toán tập trung vào qui tắc : Nếu ở 1 "nơi" nào đó, số Quỷ(Q) nhiều hơn số

người(N) thì quỷ sẽ ăn người - nói theo ứng xử trò chơi, đây là trạng thái "thua" -

còn nói theo tập trạng thái ta đang muốn xây dựng thì đây là "trạng thái vị phạm",

và nó sẽ không được xem xét trong tập trạng thái của ta ( sẽ gọi là 1 trạng thái sai,

nếu có phát sinh trong quá trình tìm kiếm cũng sẽ bị bỏ qua, không bao giờ xét đến)

Cách thức biến đổi từ trạng thái này đến trạng thái khác là : Từ bờ bên có thuyền chất 1, 2 N/Q gì đó lên thuyền và cho chạy qua bờ bên kia Trạng thái xung đột sẽ

chỉ được

Xem xét sau khi N/Q đã sang được bên kia

Xét về “nơi” có thể xảy ra xung đột thì có tất cả ba nơi

Thuyền, bờ 1, bờ 2

Dễ thấy đối với "thuyền" thì theo mô tả bài toán này, sẽ không có xung đột trên

thuyền Đơn giản vì thuyền phải có ít nhất 1 N/Q ( Người hay quỷ) điều khiển mới

chạy, và trên thuyền cho phép chở nhiều nhất 2 N/Q Xét mọi trường hợp, ko có

xung đột trên thuyền

Một ví dụ khác để minh họa cho sự mềm dẻo của Logic mờ là việc xác định

Trang 20

Cho nên ta chỉ quan tâm đến tình trạng N/Q 2 bờ, và vị trí của thuyền ở đâu ( Bờ 1/ Bở 2 ?) 1 nhận xét nữa là nếu đã biết bờ 1 có x người, y quỉ, ta cũng biết luôn

bên bờ 2 có 3-x người, 3-y quỷ Vậy để phân biệt các trạng thái của bài này ta chỉ

Qui tắc xung đột đối với trạng thái [x,y,b] : Trạng thái là xung đột nếu?

Hoặc là (x>0 và y>x) xung đột bên bờ 1

Hoặc là (3-x>0 và 3-y>3-x) xung đột bên bờ 2

Tập các trạng thái có thể đến từ [x,y,true] (tổng quát ): [x-1,y,false], [x-2,y,

false], [x-1,y-1,false], [x,y-1,false], [x,y-2,false]

Tuơng tự, ta có thể xây dựng tập các trạng thái có thể đến từ [x,y,false]

Trạng thái đầu: [3,3,true]

Lý thuyết mờ đã được nhắc đến rất nhiều trong những năm gần đây Trên thế

giới và ở Việt Nam đã có nhiều tác giả nghiên cứu và áp dụng thành công lý thuyết

mờ trong các lĩnh vực điều khiển sản xuất công nghiệp, trong các sản phẩm gia

dụng w Tuy nhiên một bộ điều khiển mờ trong thực tế nó ra sao? Phần này tôi sẽ

trình bày về các vấn đề, thứ nhất là lý thuyết điều khiển mờ, sau đó là giới thiệu về

Một ví dụ khác để minh họa cho sự mềm dẻo của Logic mờ là việc xác định

Trang 21

quá trình xây dựng bộ điều khiển mờ trong thực tế và các ứng dụng sử dụng logic

mờ

Lôgic mờ (tiếng Anh: Fuzzy logic) được phát triển từ lý thuyết tập mờ để thực

hiện lập luận một cách xấp xỉ thay vì lập luận chính xác theo logic vị từ cổ điển

Người ta hay nhầm lẫn mức độ đúng với xác suất Tuy nhiên, hai khái niệm này

khác hẳn nhau; độ đúng đắn của lôgic mờ biểu diễn độ liên thuộc với các tập được

định nghĩa không rõ ràng, chứ không phải khả năng xảy ra một biến cố hay điều

kiện nào đó

Đe minh họa sự khác biệt, xét tình huống sau: Bảo đang đứng trong một ngôi

nhà có hai phòng thông nhau: phòng bếp và phòng ăn Trong nhiều trường hợp,

trạng thái của Bảo trong tập hợp gồm những thứ "ở trong bếp" hoàn toàn đơn giản:

hoặc là anh ta "trong bếp" hoặc "không ở trong bếp" Nhưng nếu Bảo đứng tại cửa

nối giữa hai phòng thì sao? Anh ta có thể được coi là "có phần ở trong bếp'1 Việc

định lượng trạng thái "một phần" này cho ra một quan hệ liên thuộc đối với một tập

mờ Chẳng hạn, nếu Bảo chỉ thò một ngón chân cái vào phòng ăn, ta có thể nói rằng Bảo ở "trong bếp" đến 99% và ở trong phòng ăn 1% Một khi anh ta còn đứng ở cửa thì không có một biến cố nào (ví dụ một đồng xu được tung lên) quyết định rằng

Bảo hoàn toàn "ở trong bếp" hay hoàn toàn "không ở trong bếp"

Logic mờ cho phép độ liên thuộc có giá trị trong khoảng đóng 0 và 1, và ở

hình thức ngôn từ, các khái niệm không chính xác như "hơi hơi”, "gần như", "khá

là" và "rất” Cụ thể, nó cho phép quan hệ thành viên không đầy đủ giữa thành viên

và tập họp Tính chất này có liên quan đến tập mờ và lý thuyết xác suất

Ngày đăng: 12/10/2015, 20:46

HÌNH ẢNH LIÊN QUAN

Hình 7: Mô hình đoán nhận nhiệt độ - Thực hành trí tuệ nhân tạo
Hình 7 Mô hình đoán nhận nhiệt độ (Trang 25)
Hình 8: cấu trúc và qui trình hoat động của mô hình. - Thực hành trí tuệ nhân tạo
Hình 8 cấu trúc và qui trình hoat động của mô hình (Trang 26)
Hình 9: Các mô hình đưọc sử dụng trong hệ thống Logic mò’ - Thực hành trí tuệ nhân tạo
Hình 9 Các mô hình đưọc sử dụng trong hệ thống Logic mò’ (Trang 27)
Bảng 3: Mô tả hoạt động của máy sưởi - Thực hành trí tuệ nhân tạo
Bảng 3 Mô tả hoạt động của máy sưởi (Trang 30)
Bảng dưới đây chỉ ra cụ thể luật làm việc của ví dụ trên: - Thực hành trí tuệ nhân tạo
Bảng d ưới đây chỉ ra cụ thể luật làm việc của ví dụ trên: (Trang 30)
Hình 13: Mô hình hình thang - Thực hành trí tuệ nhân tạo
Hình 13 Mô hình hình thang (Trang 32)
Hình 14 : Mô hình  CO'  bản của hệ thống phân tích kỹ thuật trong chứng  khoán - Thực hành trí tuệ nhân tạo
Hình 14 Mô hình CO' bản của hệ thống phân tích kỹ thuật trong chứng khoán (Trang 33)
Hình 15: Cách xác định xem giá lên hay xuống trong mô hình - Thực hành trí tuệ nhân tạo
Hình 15 Cách xác định xem giá lên hay xuống trong mô hình (Trang 34)
Hình 16: Quy trình thực hiện của hệ thống phân tích kỹ thuật trong chửng  khoán - Thực hành trí tuệ nhân tạo
Hình 16 Quy trình thực hiện của hệ thống phân tích kỹ thuật trong chửng khoán (Trang 42)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w