Buy Royal UI Officially! Contact Us Buy Now!

Đề tài: Ứng dụng thuật toán BFS và A* vào giải bài toán xếp hình N-Puzzle

Mahmudul Hasan


Nếu bạn mới làm quen với AI hoặc mới học nhập môn AI tại trường thì có lẽ bài
toán N-Puzzle không còn quá xa lạ với các bạn nữa!



align="center"
cellpadding="0"
cellspacing="0"
class="tr-caption-container"
style="margin-left: auto; margin-right: auto;"
>



href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_pcGjkcBdk2fvr6lq6cNsmwEKI28aHaS2HPF_-8Kr82KOEzNqulEvo11HOCHawUZfVDP4mjx3e2D2B0o8-5X298UBWKWCxvxArY-UfjHMWlhBvvjWIA2Ei-92bKwyVpnkVX9N8_8bgbQ/s0/n-puzzle-ai.png"
style="margin-left: auto; margin-right: auto;"
> border="0"
data-original-height="1000"
data-original-width="1635"
src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_pcGjkcBdk2fvr6lq6cNsmwEKI28aHaS2HPF_-8Kr82KOEzNqulEvo11HOCHawUZfVDP4mjx3e2D2B0o8-5X298UBWKWCxvxArY-UfjHMWlhBvvjWIA2Ei-92bKwyVpnkVX9N8_8bgbQ/s0/n-puzzle-ai.png"
/>




Đề tài: Ứng dụng thuật toán BFS và A* vào giải bài toán xếp hình
N-Puzzle




Giới thiệu


Đề tài


Ứng dụng thuật toán BFS và A* vào giải bài toán xếp hình N-Puzzle



Bài toán ban đầu đặt ra một ma trận vuông kích thước N*N với các ô số ngẫu
nhiên, nhiệm vụ của người chơi là di chuyển ô trống sao cho đưa được tất cả
các ô số về đúng trạng thái đích.


Tác giả

























Tên Mã sinh viên
Phạm Văn Linh 20194094
Nguyễn Văn Đức 20194023
Bùi Tiến Đạt 20194012
Vũ Đức Anh 20193985

Giáo viên hướng dẫn



class="extL"
href="https://soict.hust.edu.vn/pgs-ts-le-thanh-huong.html"
target="_blank"
>PGS.TS. Lê Thanh Hương - SOICT - HUST
>


Tính năng



Các tính năng của trò chơi sẽ được chia thành 2 nhóm chứ năng đó là chắc năng
người chơi và chức năng giải bằng AI


Chức năng của người chơi:



  • Người chơi có thể sử dụng button Trộn để xáo các ô số trên màn hình.


  • Có 2 chế độ dành cho người chơi: chơi bằng bảng ô số hoặc
    thêm ảnh từ thiết bị.


  • Người chơi có thể chọn 3 mức độ chơi dễ, trung bình
    khó tương đương với các kích thước 3*3, 4*4
    5*5.

  • Người chơi có thể tùy chọn 2 trạng thái đích.


  • Khi chơi, người chơi thực hiện di chuyển các ô số thông qua các nút
    W, A, S, D trên bàn phím hoặc click chuột.


Chức năng giải bằng AI:



  • Người chơi có thể để AI tự giải bằng button Giải, sau khi giải xong
    người chơi có thể lựa chọn tự chạy lời giải hoặc không.


  • Chức năng thứ 2 đó là so sánh các Heuristic, AI sẽ tự chạy lần lượt
    các Heuristic để tìm lời giải sau đó so sánh kết quả các lần
    chạy.


Thuật toán


Trong trò chơi này bọn mình dùng 2 thuật toán để tìm lời giải đó là:



  • Tìm kiếm theo chiều rộng - BFS


  • Tìm kiếm với tri thức bổ sung - A* với 6 heuristic sẽ được giới thiệu
    ở phần sau.


Heuristic


6 heuristic được bọn mình sử dụng với thuật toán A* đó là:



  • H1: Tổng số ô sai vị trí.


  • H2: Khoảng cách Manhattan - Khoảng cách ngắn nhất để các ô về đúng vị
    trí đích.


  • H3: Khoảng cách Euclid giữa các ô và vị trí đích(lấy phần nguyên).

  • H4: Tổng số ô sai hàng cộng số ô sai cột.


  • H5: Linear conflict - Khoảng cách manhattan + số ô linear conflict


  • H6: H5 + số ô không thể về đích(các ô mà vị trí xung quanh trạng thái
    đích của nó đều đúng).


Demo


Video









alt="Youtube video"
class="lazy loaded"
data-src="https://img.youtube.com/vi/FVGLKZnQj4k/sddefault.jpg"
lazied=""
src="https://img.youtube.com/vi/FVGLKZnQj4k/sddefault.jpg"
/>

Hình ảnh




alt="Hình ảnh khởi tạo trò chơi"
class="lazy loaded"
data-src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1tz92RwxPN8PLO73kxgdkDnFKyvvyIaG9kQq91SRDSOfygAlUWKkPhRO7P6-p0h1ZkFVgeUxcd5G6BeWVhgpf7XuI4gu89ZILgSACQYfY7TkK0lX0mjthhla7zLpvA0ZIH5RJRe4wBhU/s0/main.png"
lazied=""
onclick="return false"
src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1tz92RwxPN8PLO73kxgdkDnFKyvvyIaG9kQq91SRDSOfygAlUWKkPhRO7P6-p0h1ZkFVgeUxcd5G6BeWVhgpf7XuI4gu89ZILgSACQYfY7TkK0lX0mjthhla7zLpvA0ZIH5RJRe4wBhU/s0/main.png"
/>


alt="Trò chơi sau khi trộn"
class="lazy loaded"
data-src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpRLrFhs8B4Xkmi9ucN5GkS4BxAcK7eGBeJip6tMfa0xB2WU4IyG_GzDO5kGQvwtsCUHxkfETKUa9tGk4lRw17ZL2rr2GAnK-uVCeDcDwAKvZGLqT1TuE7Xz5QL_p9VGXGFeP68m1XTuw/s0/jumb.png"
lazied=""
onclick="return false"
src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpRLrFhs8B4Xkmi9ucN5GkS4BxAcK7eGBeJip6tMfa0xB2WU4IyG_GzDO5kGQvwtsCUHxkfETKUa9tGk4lRw17ZL2rr2GAnK-uVCeDcDwAKvZGLqT1TuE7Xz5QL_p9VGXGFeP68m1XTuw/s0/jumb.png"
/>


alt="Thêm ảnh và trò chơi mức trung bình"
class="lazy loaded"
data-src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJfnQbevDYKhClMpDIp_rSJgxzh41dxz1elLG2LwF2w_4_Fc4Uk7RTusRy_6h9v3iU3CFfI-gZ-KtDn7V7oPgGkc3jyx5mWOBUkQRK1M1CpQc-fw-HgWpRbThO8Ux5897NkLJ5-HTKFUk/s0/img.png"
lazied=""
onclick="return false"
src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJfnQbevDYKhClMpDIp_rSJgxzh41dxz1elLG2LwF2w_4_Fc4Uk7RTusRy_6h9v3iU3CFfI-gZ-KtDn7V7oPgGkc3jyx5mWOBUkQRK1M1CpQc-fw-HgWpRbThO8Ux5897NkLJ5-HTKFUk/s0/img.png"
/>


alt="Hình ảnh khi người chơi giải được"
class="lazy loaded"
data-src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilzJkAz-MWy6vcxVYMDfnN0GbQGMk4ofY4xXEiYoKJcCKaCMAjg3JbEc_kfFSm4p5a0_i27oZROqZlYtr-csqS4UeyA_sVBom3ZoruePnGNwC46vXuo-Ddb2BPOxhUiiBOLbtqJVbiflQ/s0/play.png"
lazied=""
onclick="return false"
src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilzJkAz-MWy6vcxVYMDfnN0GbQGMk4ofY4xXEiYoKJcCKaCMAjg3JbEc_kfFSm4p5a0_i27oZROqZlYtr-csqS4UeyA_sVBom3ZoruePnGNwC46vXuo-Ddb2BPOxhUiiBOLbtqJVbiflQ/s0/play.png"
/>


alt="Hiển thị lời giải khi tìm được đáp án"
class="lazy loaded"
data-src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4edEYdvG7ABHRZCuW5FScGmYyX2y5AsTBhvCoIuNkxD-oc80aflUopuvoiHwFLyd3uq4YyE9Txc_URvAbbEJUk3tpg975RKP4BNh2Qz9-RYjjWLj-g-tW9mnHAJ9VyD9J9Sp2mridu3Q/s0/ket-qua.png"
lazied=""
onclick="return false"
src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4edEYdvG7ABHRZCuW5FScGmYyX2y5AsTBhvCoIuNkxD-oc80aflUopuvoiHwFLyd3uq4YyE9Txc_URvAbbEJUk3tpg975RKP4BNh2Qz9-RYjjWLj-g-tW9mnHAJ9VyD9J9Sp2mridu3Q/s0/ket-qua.png"
/>


alt="Hiển thị kết quả so sánh heuristic"
class="lazy loaded"
data-src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8cuIvDBvbkEDwkv_AKHwXZVFAPTGu6aloPmnGjSJjQEMd1yI8qb8yfHPSa2_faXw_c3HYFtWDBE8LLzDelX0V9-WIr-s17VnPpp0ZccVXzw9IiinF4QBlC7Yh0UjyG3vty7FJeAV8684/s0/so-sanh.png"
lazied=""
onclick="return false"
src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8cuIvDBvbkEDwkv_AKHwXZVFAPTGu6aloPmnGjSJjQEMd1yI8qb8yfHPSa2_faXw_c3HYFtWDBE8LLzDelX0V9-WIr-s17VnPpp0ZccVXzw9IiinF4QBlC7Yh0UjyG3vty7FJeAV8684/s0/so-sanh.png"
/>


Phụ lục




  • Source code:
    class="extL"
    href="https://github.com/phamvanlinhxyz/N-Puzzle-AI"
    target="_blank"
    >https://github.com/phamvanlinhxyz/N-Puzzle-AI
    >


  • Báo cáo:
    class="extL"
    href="https://drive.google.com/file/d/1gBWbTK4GK_m73iyomaOFbRzZ1Nv1EIkZ/view?usp=sharing"
    target="_blank"
    >https://drive.google.com/file/d/1gBWbTK4GK_m73iyomaOFbRzZ1Nv1EIkZ/view?usp=sharing
    >


Lời kết



Trong bài viết này mình đã chia sẻ cho các bạn bài tập lớn nhập môn AI của bọn
mình. Nếu có bất kì thắc mắc hay góp ý nào hãy để lại cho mình 1 comment ở bên
dưới. Chúc các bạn một ngày tốt lành!



Copyright ©
Phạm Văn Linh


إرسال تعليق

  • A-
  • A+

© Techypremium.Com. All rights reserved.

Cookie Consent
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.