Hotline: 024.62511017

024.62511081

  Trang chủ   Sản phẩm   Phần mềm Dành cho nhà trường   Phần mềm Hỗ trợ học tập   Kho phần mềm   Liên hệ   Đăng nhập | Đăng ký

Tìm kiếm

School@net
 
Xem bài viết theo các chủ đề hiện có
  • Hoạt động của công ty (726 bài viết)
  • Hỗ trợ khách hàng (498 bài viết)
  • Thông tin tuyển dụng (57 bài viết)
  • Thông tin khuyến mại (80 bài viết)
  • Sản phẩm mới (216 bài viết)
  • Dành cho Giáo viên (549 bài viết)
  • Lập trình Scratch (3 bài viết)
  • Mô hình & Giải pháp (156 bài viết)
  • IQB và mô hình Ngân hàng đề kiểm tra (127 bài viết)
  • TKB và bài toán xếp Thời khóa biểu (242 bài viết)
  • Học tiếng Việt (183 bài viết)
  • Download - Archive- Update (289 bài viết)
  • Các Website hữu ích (70 bài viết)
  • Cùng học (92 bài viết)
  • Learning Math: Tin học hỗ trợ học Toán trong nhà trường (78 bài viết)
  • School@net 15 năm (154 bài viết)
  • Mỗi ngày một phần mềm (7 bài viết)
  • Dành cho cha mẹ học sinh (124 bài viết)
  • Khám phá phần mềm (122 bài viết)
  • GeoMath: Giải pháp hỗ trợ học dạy môn Toán trong trường phổ thông (36 bài viết)
  • Phần mềm cho em (13 bài viết)
  • ĐỐ VUI - THƯ GIÃN (363 bài viết)
  • Các vấn đề giáo dục (1210 bài viết)
  • Bài học trực tuyến (1037 bài viết)
  • Hoàng Sa - Trường Sa (17 bài viết)
  • Vui học đường (275 bài viết)
  • Tin học và Toán học (220 bài viết)
  • Truyện cổ tích - Truyện thiếu nhi (180 bài viết)
  • Việt Nam - 4000 năm lịch sử (97 bài viết)
  • Xem toàn bộ bài viết (8223 bài viết)
  •  
    Đăng nhập/Đăng ký
    Bí danh
    Mật khẩu
    Mã kiểm traMã kiểm tra
    Lặp lại mã kiểm tra
    Ghi nhớ
     
    Quên mật khẩu | Đăng ký mới
     
    Thành viên có mặt
    Khách: 9
    Thành viên: 0
    Tổng cộng: 9
     
    Số người truy cập
    Hiện đã có 89581624 lượt người đến thăm trang Web của chúng tôi.

    Biểu diễn không gian trạng thái

    Ngày gửi bài: 20/01/2006
    Số lượt đọc: 5351

    Bước đầu để giải quyết các bài toán Trí Tuệ Nhân Tạo Trước hết ta cần định nghĩa 'Biểu diễn không gian trạng thái (KGTT)' là gì. Biểu diễn KGTT, đó là chọn lựa một vài cách để biểu diễn trạng thái của bài toán được rõ ràng. Có 2 cách để biểu diễn KGTT:

    - Biểu diễn theo cây: các bài toán 8-puzzle, cờ vua, rót nước, tích phân, di chuyển khối...

    - Biểu diễn theo đồ thị:

    các bài toán chơi cờ, rót nước, hành trình người bán hàng, hành trình con mã...

    Các bước để biểu diễn KGTT:

    - Biểu diễn trạng thái ban đầu.

    - Biểu diễn một cách chính xác khi một trạng thái thỏa mãn đích của bài toán.

    - Kích hoạt các luật sinh từ trạng thái ban đầu và các trạng thái tiếp theo cho đến khi trạng thái đích được tìm thấy.

    Các vấn đề nảy sinh và thỏa hiệp:

    - Lựa chọn các luật sinh như thế nào?

    - Khi có quá nhiều trạng thái được sinh ra, rõ ràng ta không thể lưu trữ được các trạng thái.

    Những trường hợp như vậy gọi là ẩn. Vậy chúng ta nên tìm kiếm trên cây ẩn hay trên đồ thị ẩn?< /p>

    - Cần một lời giải tối ưu hay chỉ là lời giải bất kỳ?

    - Nên thu gọn bài toán hay phân rã nó ra.

    - Nên tìm kiếm theo hướng tiến từ trạng thái khởi đầu, hay theo hướng lùi từ trạng thái đích.

    Ta xét các ví dụ sau:

    Ví dụ 1: Bài toán rót nước.

    Cho 2 bình nước: 4(L) và 3(L). Hãy rót vào bình 4(L) một lượng 2(L) nước.

    Giải: Ta biểu diễn một trạng thái như sau:

    [nội dung của bình lớn, nội dung của bình nhỏ]

    - Trạng thái ban đầu: [0,0]

    - Trạng thái đích : [2,0].

    Cây biểu diễn của bài toán:

    Ta phát biểu các luật sinh cho bài toán như sau:

    - Làm đầy bình lớn: [x,y]&x<4 →[4,y]

    - Làm đầy bình nhỏ: [x,y]&y<3 →[x,3]

    - Làm rỗng bình lớn: [x,y]&x>0 → [0,y]

    - Làm rỗng bình nhỏ: [x,y]&y>0 → [x,0]

    - Làm đầy bình lớn từ bình nhỏ: [x,y]&y>4-x → [4,x+y-4]

    - Làm đầy bình nhỏ từ bình lớn: [x,y]&x>3-y → [x+y-3,3]

    - Rót hết nước từ bình nhỏ sang bình lớn: [x,y]&y>0&y ≤ 4 - x→ [0,x+y]

    - Rót hết nước từ bình lớn sang bình nhỏ: [x,y]&y>0&y ≤ 3 - y→ [0,x+y]

    Các luật trên là các luật tối thiểu nhưng cũng đúng nhất cho bài toán rót nước. Có thể còn nhiều cách rót nữa, nhưng chúng ta dễ dàng nhận thấy, chúng đều dẫn đến không gian dư thừa.

    Ví dụ 2: Phát triển một chương trình có thể chơi cờ được.

    Giải:

    Ta có thể biểu diễn một trạng thái của bàn cờ bằng một danh sách liên kết, mà mỗi phần tử gồm có cấu trúc như sau:

    [tên quân cờ, hàng ngang, hàng dọc]

    Danh sách cho trạng thái bàn cờ trên như sau:

    ([H_den, 8, B],

    [M_den, 7, A],

    [T1_den, 7, H],

    [T2_den, 5, E],

    [H_trang, 1, F],

    [X_trang, 2, D],

    [T1_trang, 2, H])

    Ta tiếp tục mô tả các luật để biểu diễn di chuyến: Giả sử, ta muốn di chuyển một tốt trắng từ hàng 2 lên hàng 4, ta thực hiện:

    ([Tốt_trắng, 2, x], [ô_trống, 3, x], [ô_trống, 4, x])

    Thêm([Tốt_trắng, 4, x])+Xóa([Tốt_trắng,2, x]).

    Tương tự như vậy, ta có thể biểu diễn di chuyển cho các quân cờ khác.

    Để xác định một trạng thái đích, ta có thể biểu diễn:

    Thắng (quân_đen) ← Tấn_công (hậu_trắng)

    Không_di_chuyen_hop_le (hau_trang)

    Một cách tương tự, ta có thể biểu diễn cho các trạng thái thắng quân cờ.

    Thắng(quân_cờ) ← Tấn_công(quân_cờ) +

    Không_di_chuyen_hop_le(quân_cờ)

    Đối với các bài toán chơi cờ, số không gian trạng thái được tạo ra từ một nước đi là rất lớn, vì vậy, ta không thể lưu toàn bộ không gian này vào bộ nhớ. Trong các chương trình chơi cờ, người ta chỉ lưu KGTT này sau một vài bước đi, rồi tiếp tục xử lý và lưu chồng lên. Ta thấy rằng, nếu số nước đi càng sâu, thì chương trình càng chơi hay.

    Rõ ràng, với các cách biểu diễn như trên, ta rất dễ dàng để viết mã cho bài toán bằng bất kỳ thuật toán tìm kiếm nào (rộng, sâu, hoặc các thuật toán thông minh khác). Bạn chỉ cần so sánh trạng thái hiện thời với các luật để sinh ra trạng thái kế tiếp. Các trạng thái này có thể được lưu vào một QUEUE (tống quát) nào đó chẳng hạn, cho đến khi tìm được trạng thái đích, và lần ngược về để tìm ra các bước đi. Nếu first > last trong QUEUE nghĩa là bài toán không có lời giải.

    Bài 1: Bài toán người nông dân, con cáo, con ngỗng và bó lúa.

    Một người nông dân muốn qua sông với một con cáo, một con ngỗng và một bó lúa. Chiếc thuyền nhỏ của ông ta chỉ có thể chở ông ta với một trong ba vật sở hữu trên. Nếu sơ suất, con cáo sẽ ăn con ngỗng và con ngỗng sẽ ăn bó lúa.

    a. Tìm một phương pháp để biểu diễn tốt cho bài toán.

    b. Tìm các luật để người nông dân và các vật sở hữu qua sông được an toàn.

    Bài 2: Bài toán 3 tu sĩ và 3 kẻ cướp

    Có 3 tu sĩ và 3 kẻ cướp đang ở trên cùng một bờ sông và đều muốn sang bờ bên kia. Trên bờ sông có một chiếc thuyền nhỏ chỉ chở được 2 người. Biết rằng, nếu số kẻ cướp nhiều hơn số tu sĩ thì các tu sĩ sẽ bị kẻ cướp ăn thịt.

    a. Tìm một phương pháp biểu diễn tốt cho bài toán.

    b. Tìm các luật để tất cả bọn họ qua sông được an toàn.

    Hoàng Anh Vũ



     Bản để in  Lưu dạng file  Gửi tin qua email


    Những bài viết khác:



    Lên đầu trang

     
    CÔNG TY CÔNG NGHỆ TIN HỌC NHÀ TRƯỜNG
     
    Phòng 804 - Nhà 17T1 - Khu Trung Hoà Nhân Chính - Quận Cầu Giấy - Hà Nội
    Phone: 024.62511017 - 024.62511081
    Email: kinhdoanh@schoolnet.vn


    Bản quyền thông tin trên trang điện tử này thuộc về công ty School@net
    Ghi rõ nguồn www.vnschool.net khi bạn phát hành lại thông tin từ website này
    Site xây dựng trên cơ sở hệ thống NukeViet - phát triển từ PHP-Nuke, lưu hành theo giấy phép của GNU/GPL.