báo cáo đồ án trí tuệ nhân tạo : Không gian trạng thái được mô tả là trò chơi Lines, kích thước là tùy ý

5 1.1K 13
báo cáo đồ án trí tuệ nhân tạo : Không gian trạng thái được mô tả là trò chơi Lines, kích thước là tùy ý

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

Thông tin tài liệu

I. Yêu cầu bài tập Không gian trạng thái được mô tả là trò chơi Lines, kích thước là tùy ý(Các cạnh lớn hơn hoặc bằng 7). Các quân trong trò chơi có 4 màu. 5 quân cùng mầu trên đường thẳng sẽ ăn được. Hãy xây dựng chương trình cho phép tạo không gian bài toán trên. Việc di chuyển các quân theo giải thuật tìm kiếm theo chiều sâu(Depth first search). Chương trình cho phép mô tả các bước đã chọn và đường đi của quân trong trò chơi. Cho phép tính điểm với người chơi. II. Môi trường phát triển - .Net Framework - Ngôn ngữ lập trình: C# III. Các chức năng của chương trình

Phạm Tuấn Anh – Tin học 5A Artificial Intelligence Giáo viên hướng dẫn: Thầy Ngô Hữu Phúc I. Yêu cầu bài tập Không gian trạng thái được tả trò chơi Lines, kích thước tùy ý(Các cạnh lớn hơn hoặc bằng 7). Các quân trong trò chơi có 4 màu. 5 quân cùng mầu trên đường thẳng sẽ ăn được. Hãy xây dựng chương trình cho phép tạo không gian bài toán trên. Việc di chuyển các quân theo giải thuật tìm kiếm theo chiều sâu(Depth first search). Chương trình cho phép tả các bước đã chọn và đường đi của quân trong trò chơi. Cho phép tính điểm với người chơi. II. Môi trường phát triển - .Net Framework - Ngôn ngữ lập trình: C# III. Các chức năng của chương trình 1. Cho phép khởi tạo trò chơi mới với 6 quân ngẫu nhiên trên bảng 2. Cho phép người chơi lựa chọn cấp độ chơi 3. Chức năng cho phép người chơi quay lại bước đi trước 4. Chức năng tính toán điểm 5. Chức năng Save/Load IV. Thuật toán tìm kiếm theo chiều sâu(Depth first search) Ý tưởng chính của thuật toán có thể trình bày như sau. Ta sẽ bắt đầu tìm kiếm từ một đỉnh v 0 nào đó của đồ thị. Sau đó chọn u một đỉnh tuỳ ý kề với v 0 và lặp lại quá trình đối với u. Ở bước tổng quát, giả sử ta đang xét đỉnh v. Nếu như trong số các đỉnh kề với v tìm được đỉnh w chưa được xét thì ta sẽ xét đỉnh này (nó sẽ trở thành đã xét) và bắt đầu từ nó ta sẽ bắt đầu quá trình tìm kiếm còn nếu như không còn đỉnh nào kề với v chưa xét thì ta nói rằng đỉnh này đã duyệt xong và quay trở lại tiếp tục tìm kiếm từ đỉnh mà trước đó ta đến được đỉnh v (nếu v=v 0 , thì kết thúc tìm kiếm). Có thể nói nôm na tìm kiếm theo chiều sâu bắt đầu từ đỉnh v được thực hiện trên cơ sở tìm kiếm theo chiều sâu từ tất cả các đỉnh chưa xét kề với v. Quá trình này có thể mô tả bởi thủ tục đệ qui sau đây: Procedure DFS(v); (*tim kiem theo chieu sau bat dau tu dinh v; cac bien Chuaxet, Ke la bien toan cuc*) Begin Tham_dinh(v); Chuaxet[v]:=false; For uÎ Ke(v) do If Chuaxet[u] then DFS(u); End; (*dinh v da duyet xong*) Phạm Tuấn Anh – Tin học 5A Khi đó, tìm kiếm theo chiều sâu trên đồ thị được thực hiện nhờ thuật toán sau: Begin (*Initialization*) for vÎ V do Chuaxet[v]:=true; for vÎ V do if Chuaxet[v] then DFS(v); End. Rõ ràng lệnh gọi DFS(v) sẽ cho phép đến thăm tất cả các đỉnh thuộc cùng thành phần liên thông với đỉnh v, bởi vì sau khi thăm đỉnh lệnh gọi đến thủ tục DFS đối với tất cả các đỉnh kề với nó. Mặt khác, do mỗi khi thăm đỉnh v xong, bi?n Chuaxet[v] được đặt lại giá trị false nên mỗi đỉnh sẽ được thăm đúng một lần. Thuật toán lần lượt sẽ tiến hành tìm kiếm từ các đỉnh chưa được thăm, vì vậy, nó sẽ xét qua tất cả các đỉnh của đồ thị (không nhất thiết phải liên thông). Để đánh giá độ phức tạp tính toán của thủ tục, trước hết nhận thấy rằng số phép toán cần thực hiện trong hai chu trình của thuật toán (hai vòng for ở chương trình chính) cỡ n. Thủ tục DFS phải thực hiện không quá n lần. Tổng số phép toán cần phaỉ thực hiện trong các thủ tục này O(n+m), do trong các thủ tục này ta phải xét qua tất cả các cạnh và các đỉnh của đồ thị. Vậy độ phức tạp tính toán của thuật toán O(n+m). Ví dụ. Xét đồ thị cho trong hình 1 gồm 13 đỉnh, các đỉnh được đánh số từ 1 đến 13 như sau: Hình 1 Phạm Tuấn Anh – Tin học 5A Khi đó các đỉnh của đồ thị được đánh số lại theo thứ tự chúng được thăm theo thủ tục tìm kiếm theo chiều sâu tả ở trên như hình 2. Giả thiết rằng các đỉnh trong danh sách kề của đỉnh v (Ke(v)) được sắp xếp theo thứ tự tăng dần của chỉ số. Hình 2. Chỉ số mới (trong ngoặc) của các đỉnh được đánh lại theo thứ tự chúng được thăm trong thuật toán tìm kiếm theo chiều sâu. Thuật toán tìm kiếm theo chiều sâu trên đồ thị vô hướng trình bày ở trên dễ dàng có thể mô tả lại cho đồ thị có hướng. Trong trường hợp đồ thị có hướng, thủ tcụ DFS(v) sẽ cho phép thăm tất cả các đỉnh u nào mà từ v có đường đi đến u. Độ phức tạp tính toán của htuật toán O(n+m). V. tả chương trình Phạm Tuấn Anh – Tin học 5A Phạm Tuấn Anh – Tin học 5A VI. Tài liệu tham khảo - CÁC GIẢI PHÁP LẬP TRÌNH C# - Nguyễn Ngọc Bình Phương – Thái Thanh Phong - Toán rời rạc – Nguyễn Đức Nghĩa – Đại học BKHN - Lý thuyết đồ thị và ứng dụng - Đặng Huy Ruận, Nxb KHKT . qua tất cả các cạnh và các đỉnh của đồ thị. Vậy độ phức tạp tính toán của thuật toán là O(n+m). Ví dụ. Xét đồ thị cho trong hình 1 gồm 13 đỉnh, các đỉnh được đánh số từ 1 đến 13 như sau: Hình. được đánh lại theo thứ tự chúng được thăm trong thuật toán tìm kiếm theo chiều sâu. Thuật toán tìm kiếm theo chiều sâu trên đồ thị vô hướng trình bày ở trên dễ dàng có thể mô tả lại cho đồ thị. Thuật toán lần lượt sẽ tiến hành tìm kiếm từ các đỉnh chưa được thăm, vì vậy, nó sẽ xét qua tất cả các đỉnh của đồ thị (không nhất thiết phải là liên thông). Để đánh giá độ phức tạp tính toán của

Ngày đăng: 25/03/2014, 22:18

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan