Write a program which performs a-star search to find the solution to any given board position for 15 puzzle using two types of heuristics: 1. Number of misplaced tiles 2. Manhattan Distance

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

Use python 
This is also with the question 

# please specify manhattan distance or misplaced tiles as the heuristic function

class Search:

    def goal_test(self, cur_tiles):
        return cur_tiles == ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '0']

    def solve(self, initial_state, heuristic = "manhattan"): # Format : "1 0 2 4 5 7 3 8 9 6 11 12 13 10 14 15"
        initial_list = initial_state.split(" ")
        """ 
        Please use this as a reference.
        if heuristic == "manhattan":
            solution_moves = run_bfs_manhattan_distance(initial_list)
        if heuristic == "misplaced tiles":
            solution_moves = run_bfs_manhattan_distance(initial_list)
        """
        print("Moves: " + " ".join(path))
        print("Number of expanded Nodes: " + str(""))
        print("Time Taken: " + str(""))
        print("Max Memory (Bytes): " + str(""))
        return "".join(path) # Get the list of moves to solve the puzzle. Format is "RDLDDRR"

if __name__ == '__main__':
    agent = Search()

Write a program which performs a-star search to find the solution to any given board
position for 15 puzzle using two types of heuristics:
1. Number of misplaced tiles
2. Manhattan Distance
Pseudocode from the textbook:
Figure 3.7
function BEST-FIRST-SEARCH(problem. f) returns a solution node or failure
node+NODE(STATE=problem.INITIAL)
frontiera priority queue ordered by f, with node as an element
reached a lookup table, with one entry with key problem. INITIAL and value node
while not IS-EMPTY(frontier) do
node POP(frontier)
if problem.IS-GOAL(node.STATE) then return node
for each child in EXPAND(problem, node) do
schild.STATE
if s is not in reached or child.PATH-COST < reached[s].PATH-COST then
reached[s] child
add child to frontier
return failure
function EXPAND(problem, node) yields nodes
s-node.STATE
for each action in problem.ACTIONS (s) do
sproblem.RESULT(s, action)
cost-node.PATH-COST + problem.ACTION-COST(s, action, s')
yield NODE(STATE=s', PARENT=node, ACTION=action, PATH-COST=cost)
The best-first search algorithm, and the function for expanding a node. The data structures used here are
described in Section 3.3.2, See Appendix B for yield.
Transcribed Image Text:Write a program which performs a-star search to find the solution to any given board position for 15 puzzle using two types of heuristics: 1. Number of misplaced tiles 2. Manhattan Distance Pseudocode from the textbook: Figure 3.7 function BEST-FIRST-SEARCH(problem. f) returns a solution node or failure node+NODE(STATE=problem.INITIAL) frontiera priority queue ordered by f, with node as an element reached a lookup table, with one entry with key problem. INITIAL and value node while not IS-EMPTY(frontier) do node POP(frontier) if problem.IS-GOAL(node.STATE) then return node for each child in EXPAND(problem, node) do schild.STATE if s is not in reached or child.PATH-COST < reached[s].PATH-COST then reached[s] child add child to frontier return failure function EXPAND(problem, node) yields nodes s-node.STATE for each action in problem.ACTIONS (s) do sproblem.RESULT(s, action) cost-node.PATH-COST + problem.ACTION-COST(s, action, s') yield NODE(STATE=s', PARENT=node, ACTION=action, PATH-COST=cost) The best-first search algorithm, and the function for expanding a node. The data structures used here are described in Section 3.3.2, See Appendix B for yield.
With f(x) = g(x) + h(x).
Input
The input should be given in form of sequence of numbered tiles for initial board configuration,
'0' indicating the empty space (see example below)
Output
1. Moves
2. Number of Nodes expanded
3. Time Taken
4. Memory Used
Transcribed Image Text:With f(x) = g(x) + h(x). Input The input should be given in form of sequence of numbered tiles for initial board configuration, '0' indicating the empty space (see example below) Output 1. Moves 2. Number of Nodes expanded 3. Time Taken 4. Memory Used
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 4 steps with 4 images

Blurred answer
Knowledge Booster
Time complexity
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education