list or set of nodes list or set of arcs start node list or set of goal nodes (optionallya dictionary that maps node to heuristic value for that node to define search problemwe need to define the start nodethe goal predicatethe neighbors function and the heuristic function searchproblem py -(continued class search_problem_from_explicit_graph(search_problem)""" search problem consists ofa list or set of nodes list or set of arcs start node list or set of goal nodes dictionary that maps each node into its heuristic value dictionary that maps each node into its ( ,yposition "" def __init__(selfnodesarcsstart=nonegoals=set()hmap={}positions={})self neighs {self nodes nodes for node in nodesself neighs[node]=[self arcs arcs for arc in arcsself neighs[arc from_nodeappend(arcself start start self goals goals self hmap hmap self positions positions def start_node(self)"""returns start node""return self start def is_goal(self,node)"""is true if node is goal""return node in self goals def neighbors(self,node)"""returns the neighbors of node""return self neighs[node version june