1. Trang chủ >
  2. Luận Văn - Báo Cáo >
  3. Công nghệ thông tin >

ÁP DỤNG MÔ HÌNH VÀO BÀI TOÁN

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (173.84 KB, 13 trang )


Công nghệ phần mềm



GVHD: Ts. Lê Văn Hưng



v:

1



2



3



0



1



2



3



4



5



6



7



4



5



6



7



8



9



A



B



8



9



A



B



0



D



E



F



C



D



E



F



C



1



1



2



3



4



5



6



0



7



9



A



B



8



D



E



F



0



1



C



Các giá trị 0 và 1 ở trên chính là các hàm đánh giá f(v) được tính

bằng cách đếm số ô lệch so với vị trí đích của ô vừa mới di chuyển

Tiếp theo ta đặt v vào danh sách L sao cho danh sách L tăng dần theo

f(v) đã được tính ở trên

L:

1



2



3



4



1



2



3



0



5



6



7



8



5



6



7



4



9



A



B



0



9



A



B



8



D



E



F



C



D



E



F



C



0



1



2



3



4



5



6



0



7



9



A



B



8



D



E



F



1



1



C



Tiếp đến ta xét trạng thái đầu tiên có f(v) nhỏ nhất trong danh sách L

Trang



6



Công nghệ phần mềm



GVHD: Ts. Lê Văn Hưng



Xét u <-



# đích

1



2



3



4



5



6



7



8



9



A



B



0



D



E



F



C



Tiếp tục liệt kê các trạng thái con của trạng thái vừa xét ở trên

v:

1



2



3



4



5



6



7



9



A



D



E



0



1



2



3



4



8



5



6



7



8



B



C



9



A



0



B



F



0



D



E



F



1



C



Các giá trị f(v) được tính như trên hình vẽ, tiếp theo đưa các v vào

danh sách L và lại sắp xếp theo thứ tự tăng dần của hàm f(v)

L:

1



2



3



4



5



6



7



9



A



D



E



0



1



2



3



4



8



5



6



7



8



B



C



9



A



0



B



F



0



D



E



F



C



Xét u <-



1



≡ Đích

1



2



3



4



5



6



7



8



9



A



B



C



D



E



F



0



-> Tìm kiếm thành công với đường đi 8C.

Trang



7



Công nghệ phần mềm



GVHD: Ts. Lê Văn Hưng



Cứ như vậy, áp dụng thuật toán tìm kiếm IDS-A* mô hình bài toán

15-Puzzle bắt đầu từ trạng thái đầu sẽ tìm ra trạng thái đích như hình dưới:

1



2



3



4



5



6



7



8



9



A



B



C



D



E



F



0



Trang



8



Công nghệ phần mềm



GVHD: Ts. Lê Văn Hưng



CHƯƠNG III: CHƯƠNG TRÌNH



1. 15-PUZZLE CHƠI VỚI SỐ

2. 15-PUZZLE CHƠI VỚI ẢNH



3. 15-PUZZLE ÁP DỤNG THUẬT TOÁN

3.1. MÃ HÓA BÀN CỜ THÀNH SỐ KIỂU INT64 BIT



- Bàn cờ 16 ô sẽ được mã hóa thành một dãy số có độ dài 64bít. Khởi

tạo:

public Int64 board;

3.2. BIỂU DIỄN TRẠNG THÁI



- Trạng thái ban đầu của chương trình sẽ được sinh ra dưới dạng các

chữ số từ 0-9 và từ A-F sử dụng hệ hex:



Hình 7

- Tương ứng với mỗi kí tự trong ô text mà bàn cờ sẽ mã hóa thành

các vị trí có giá trị tương ứng trên bàn cờ bằng thuật toán sau:

public void setValue(ref Int64 board, int index, int value)

{

board |= (Int64)value << index * 4;

}

Trang



9



Công nghệ phần mềm



GVHD: Ts. Lê Văn Hưng



State initialState; // Khởi tạo trạng thái ban đầu

initialState.board = 0; // trạng thái ban đầu =0

for (int i=0; i < 16; ++i)

{

if (initialBoard[i] <= '9')

setValue(ref initialState.board, i, initialBoard[i] - '0');

else

setValue(ref initialState.board, i, initialBoard[i] - 'A' + 10);

}

- Tương ứng với trạng thái bắt đầu ở hình 7 ta hiển thị trạng thái bắt

đầu trên chương trình như sau:



Trang 10



Xem Thêm
Tải bản đầy đủ (.doc) (13 trang)

×