def search(self):
     pq = pque.IndexedPriorityQLow(self.costToThisNode,
                                   len(self.graph.nodes))
     pq.insert(self.source)
     while not pq.empty():
         nextClosesNode = pq.pop()
         self.shortestPathTree[nextClosesNode] = self.searchFrontier[
             nextClosesNode]
         #if nextClosesNode == self.target:
         #	return
         if self.isSatisfied(nextClosesNode):
             self.target = nextClosesNode
             return
         for edge in self.graph.edges[self.graph.nodes[nextClosesNode]]:
             newCost = self.costToThisNode[nextClosesNode] + edge.cost
             if self.searchFrontier[edge.to.id] == None:
                 self.costToThisNode[edge.to.id] = newCost
                 pq.insert(edge.to.id)
                 self.searchFrontier[edge.to.id] = edge
             elif newCost < self.costToThisNode[
                     edge.to.id] and self.shortestPathTree[
                         edge.to.id] == None:
                 self.costToThisNode[edge.to.id] = newCost
                 pq.changePriority(edge.to.id)
                 self.searchFrontier[edge.to.id] = edge
     print "pq empty"
     self.target = self.source
 def search(self):
     pq = pque.IndexedPriorityQLow(self.fCosts, len(self.graph.nodes))
     pq.insert(self.source)
     while not pq.empty():
         nextClosesNode = pq.pop()
         self.shortestPathTree[nextClosesNode] = self.searchFrontier[
             nextClosesNode]
         if nextClosesNode == self.target:
             return
         for edge in self.graph.edges[self.graph.nodes[nextClosesNode]]:
             hcost = self.calculateHeuristicCost(self.target, edge.to.id)
             gcost = self.gCosts[nextClosesNode] + edge.cost
             if self.searchFrontier[edge.to.id] == None:
                 self.fCosts[edge.to.id] = gcost + hcost
                 self.gCosts[edge.to.id] = gcost
                 pq.insert(edge.to.id)
                 self.searchFrontier[edge.to.id] = edge
             elif gcost < self.gCosts[edge.to.id] and self.shortestPathTree[
                     edge.to.id] == None:
                 self.fCosts[edge.to.id] = gcost + hcost
                 self.gCosts[edge.to.id] = gcost
                 pq.changePriority(edge.to.id)
                 self.searchFrontier[edge.to.id] = edge