Liu-YT / AStar

Solve 8-Puzzle problems with A* algorithm

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

A* 算法



介绍

使用 A* 算法解决八数码问题


启发式搜索

估价函数 f(n) = g(n) + h(n)

  • 估价函数h1 放错位置数目的数字的个数
  • 估价函数h2 所有数字当前位置以最短路径走到正确位置的步数之和

拓展

解决九数码问题

此处将空格变成0,在计算估值的时候包含,移动规则与八数码相同


使用

编译

g++ ./src/main.cpp ./src/astar.hpp -o a -std=c++11

运行

a.exe [估价函数] [八数码问题or九数码问题]
  • 使用估价函数h1解决八数码问题
    # 方式1
    a.exe
    
    # 方式2
    a.exe h1
    
    # 方式2
    a.exe h1 8
    
  • 使用估价函数h1解决八数码问题
    # 方式1
    a.exe h2
    
    # 方式2
    a.exe h2 8
    
  • 使用估价函数h1解决九数码问题
    a.exe h1 9
    
  • 使用估价函数h2解决九数码问题
    a.exe h2 9
    

注意

  • 输入的检查比较少,请按照提示输入,否则可能出现神奇的bug

About

Solve 8-Puzzle problems with A* algorithm


Languages

Language:C++ 100.0%