AUS Solving Tile 8 Puzzle Using a Star Search Algorithm & Uniform Cost Search Code

Question Description

I am writing an algorithm to solve the 8 puzzle. https://en.wikipedia.org/wiki/15_puzzle

I have a sample code, but don’t know how to elaborate on to make it work.

It should solve it using Uniform Cost Search, A* with the misplaced tiles heuristic, and A* with the total Manhattan distance heuristic. I need to create initial states of varying difficulty: either take a solution and add a certain number of random moves to it, or take a random state and make sure to get the difficulty level from one the optimal solution. The implementation should also solve the general N x N tile problem.

Code:

class PuzzleState:    def __init__(self, matrix=None, goal=False, init=False, size=3):        ## ** add code that generates puzzle states of varying difficulty        self.size = size        if not matrix is None: ## 0 represents empty spot            self.matrix = matrix        else: ## defining init or goal state            ## this is too hard for the benchmark, change this!            ## *** Your code here ***            permutation = np.array(range(size*size))            if init:                random.shuffle(permutation)             self.matrix = permutation.reshape((size, size))    def successors(self):        pass        ## *** Your code here ***        ## return a list of successors        ## each successor is a tuple of         ## 1. a string, describing the action,         ## 2. action cost (here 1),         ## 3. and the new state    def __hash__(self):        pass        ## return a hash code, if you have a matrix, you can uncomment this:        #return hash(tuple(self.matrix.flatten()))    def __eq__(self, other):        pass        ## this function defines equality between objects, if you have a matrix, you can uncomment this:        ##return np.alltrue(other.matrix == self.matrix)class PuzzleProblem:    def __init__(self, size=3): #size 3 means 3x3 field        self.size = size                self.initial = PuzzleState(init=True, size=size)  ## init state is shuffled         self.goal = PuzzleState(goal=True, size=size)  ## goal state is unshuffled     def successors(self, state):        return state.successors()        ## Successors can be "outsourced", you can also calculate successor states here    def goal_test(self, state):        # *** your code here ***        return False ## change this as appropriate!!class Node:    def __init__(self, state=None, parent=None, action=None, path_cost=0):        self.state = state        self.parent = parent        self.action = action        self.path_cost = path_cost            def getPath(self):        """getting the path of parents up to the root"""        currentNode = self        path = [self]        while currentNode.parent: ## stops when parent is None, ie root            path.append(currentNode.parent)            currentNode = currentNode.parent        path.reverse() #from root to this node        return path    def expand(self, problem):        successors = problem.successors(self.state)        return [Node(newState, self, action, self.path_cost+cost) for (action, cost, newState) in successors]    def __gt__(self, other): ## needed for tie breaks in priority queues        return True    def __repr__(self):        return (self.state, self.action, self.path_cost)    class FIFO:    def __init__(self):        self.list = []    def push(self, item):        self.list.insert(0, item)      def pop(self):        return self.list.pop()class LIFO:  ## fill out yourself!     def __init__(self):        pass    def push(self, item):        pass    def pop(self):        passclass PriorityQueue:    def __init__(self, f):        self.list = []        self.f = f    def push(self, item):        priority = self.f(item)        bisect.insort(self.list, (priority, random.random(), item))    def pop(self):        return self.list.pop(0)[-1]        def graph_search(problem, frontier):    """Search through the successors of a problem to find a goal.    The argument frontier should be an empty queue."""    closed = set() ## sets can store hashable objects, thats why we need to define a hash code for states    frontier.push(Node(problem.initial))    explorationHistory = []    while frontier:        node = frontier.pop()        explorationHistory.append(node)        if problem.goal_test(node.state):             return node, explorationHistory        if node.state not in closed:            closed.add(node.state)            successors = node.expand(problem)            for snode in successors:                frontier.push(snode)def tree_search(problem, frontier):    frontier.push(Node(problem.initial))    while frontier:        node = frontier.pop()        if problem.goal_test(node.state):            return node        successors = node.expand(problem)        for snode in successors:            frontier.push(snode)    def breadth_first_graph_search(problem):    return graph_search(problem, FIFO())def depth_first_graph_search(problem):    return graph_search(problem, LIFO())def astar_graph_search(problem, f):    return graph_search(problem, PriorityQueue(f))

Some of this code is already used to solve graph search for Map of Romania problem. The code for Romania problem is complete and works fine. I can provide the full .py file which contain both problems for you to see how it works on the other problem.

Get 20% Discount on This Paper
Pages (550 words)
Approximate price: -

Try it now!

Get 20% Discount on This Paper

We'll send you the first draft for approval by at
Total price:
$0.00

How it works?

Follow these simple steps to get your paper done

Place your order

Fill in the order form and provide all details of your assignment.

Proceed with the payment

Choose the payment system that suits you most.

Receive the final file

Once your paper is ready, we will email it to you.

Our Services

Ace Writing Center has stood as the world’s leading custom essay writing services providers. Once you enter all the details in the order form under the place order button, the rest is up to us.

Essays

Essay Writing Services

At Ace Writing Center, Nowadays, students normally have extremely busy schedules. You will note that some of them have to take on some evening or weekend jobs in order to get some income that can help them to sustain in college or in the university. This can deny them a chance to write all the essays given. Others usually get bombarded with a lot of work by their lecturers. This can still delay such students from working on all their essays. However, some of them usually try to work on all these essays but end up delivering their work late. This can prevent them from graduating since most lecturers are strict on deadlines. If you want to write a business essay, the wise way is to hire an outstanding essay writing service like us, so that you can get the best results. If you are keen, you will note that many companies usually overcharge their customers. Some of them are there only to make money. And in reality, they really don’t care to build a long term commitment with students. You should not choose such companies. You should take your time and choose a reliable company to work with. Ace Writing Center is the ultimate solution for you. We have been offering our writing service for more than 7 years. This is a clear indication that you will get quality essay writing service. We have a wide range of writers who can work on any business essay that you might have. We believe in doing extensive research so that we can provide quality work to all our clients. .

Admissions

Admission and Business Papers

Have you ever had to write an admission essay for college? The majority of students face the same issues when applying to a university or college and many in such situations decide they need professional help to cope with this matter. They get in a situation when the deadline keeps coming closer but lack motivation to start because they are just not sure if their writing skills are strong enough. We have a solution for you! Ace Writing Center is the best admission essay writing service with a large professional team and years of experience in providing high-quality papers to students of all levels and faculties. The mission of our team is to help students make their dreams of entering a good college come true and that’s what we offer!.

Editing

Editing and Proofreading

Sometimes all the words for your paper just flow out of your mind and into your fingers. You type quickly at your keyboard and there they are, your beautiful words right there on the screen. But you have no idea how to polish it up. You may be wishing there was a paper writing service that offered this type of writing service. Look no more! Here at Ace Writing Center, we offer you an editing and proofreading option that you can't find anywhere else..

Coursework

College Essay Writing

In case you are familiar Ace Writing Center, you know the way to distinguish a better company from a cheap one exactly. First of all, poor service website does not have a sufficient support. We think support team is an essential part of success; it has to answer all clients’ questions and be a connecting link between clients and their writers. On our web-service you will get answers about anything you need and your writer will receive all your instructions, assignments and requirements exactly and swiftly. A writing service that we run has got a flexible pricing system that will save you from senseless wastes and many bonus systems that let you sparing money for something important for you.