2 years ago

#64050

test-img

user17882628

I am trying to give the heuristics using random function. Can anyone please correct me

def getNeighbors(v, adjacency_list):
    return adjacency_list[v]

import random

def h(n):
    H = {
            'A': 14,
            'B': 12,
            'C': 11,
            'D': 6,
            'E': 4,
            'F': 11,
            'Z':random.randint(0,22), 

Error message shows in this line saying invalid syntax. h('Z')=='Z', }

    return H[n]

def A_star(start_node, stop_node,adjacency_list):
    open_list = set([start_node])
    closed_list = set([])
    g = {}

    g[start_node] = 0
        
    parents = {}
    parents[start_node] = start_node

    while len(open_list) > 0:
        n = None            
        for v in open_list:
            if n == None or g[v] + h(v) < g[n] + h(n):
                n = v;
        if n == None:
            print('Path does not exist!')
            return None
                     
        if n == stop_node:
            reconst_path = []
            while parents[n] != n:
                reconst_path.append(n)
                n = parents[n]

            reconst_path.append(start_node)
            reconst_path.reverse()
            print('Path found: {}'.format(reconst_path))
            return reconst_path
            
        for (m, weight) in getNeighbors(n,adjacency_list):
            if m not in open_list and m not in closed_list:
                open_list.add(m)
                parents[m] = n
                g[m] = g[n] + weight
            else:
                if g[m] > g[n] + weight:
                    g[m] = g[n] + weight
                    parents[m] = n
                    if m in closed_list:
                        closed_list.remove(m)
                        open_list.add(m)

        open_list.remove(n)
        closed_list.add(n)

    print('Path does not exist!')
    return None
adjacency_list = {
     'A': [('B', 4), ('C', 3)],
     'B': [('E', 12),('F',5)],
     'C': [('D', 7),('E',10)],
     'D': [('E',2)],
     'E': [('Z',5)],
     'F': [('Z',16)]
     }

A_star('A', 'Z',adjacency_list)

I would like to know if there is anything wrong with my code. Here I am trying to implement the A star algorithm while giving heuristics randomly, Are there any mistakes that I have done. I know there might be a very silly one. If you find anything please correct me.

a-star

0 Answers

Your Answer

Accepted video resources