当前位置: 首页>>代码示例>>Python>>正文


Python PriorityQueue.updatePriority方法代码示例

本文整理汇总了Python中PriorityQueue.PriorityQueue.updatePriority方法的典型用法代码示例。如果您正苦于以下问题:Python PriorityQueue.updatePriority方法的具体用法?Python PriorityQueue.updatePriority怎么用?Python PriorityQueue.updatePriority使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在PriorityQueue.PriorityQueue的用法示例。


在下文中一共展示了PriorityQueue.updatePriority方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: primsAlgorithm

# 需要导入模块: from PriorityQueue import PriorityQueue [as 别名]
# 或者: from PriorityQueue.PriorityQueue import updatePriority [as 别名]
def primsAlgorithm(graph, start, surface):
    
    for v in graph:
        v.setStatus(0)
        v.setParent(None)
        
    pq = PriorityQueue()
    #heapq.heappush(pq, (0, start))
    pq.enQueue((0, start))
    while (not pq.isEmpty()):
        current = pq.deQueue()[1]
        current.setStatus(2)
        if(current.getParent() != None):
            graph.drawEdge(current.getParent(), current, surface, "yellow")
            time.sleep(0.5)
            #print(str(current.getParent().getId()) + "->" + str(current.getId()))
        for neighbour in current.getNeighbours():
                    if (neighbour.getStatus() == 0):        
                        neighbour.setStatus(1)
                        neighbour.setParent(current)
                        neighbour.setpqWeight(current.neighbours[neighbour])
                        #print(str(neighbour.getpqWeight()))
                        pq.enQueue((neighbour.getpqWeight(), neighbour))
                    elif (neighbour.getStatus() == 1):
                        if (neighbour.getpqWeight() > current.neighbours[neighbour]):
                            old = (neighbour.getpqWeight(), neighbour)
                            neighbour.setpqWeight(current.neighbours[neighbour])
                            pq.updatePriority(old, (neighbour.getpqWeight(), neighbour))
                            neighbour.setParent(current)    
    """
开发者ID:KarlParkinson,项目名称:Graphs,代码行数:32,代码来源:Graphing.py

示例2: prims

# 需要导入模块: from PriorityQueue import PriorityQueue [as 别名]
# 或者: from PriorityQueue.PriorityQueue import updatePriority [as 别名]
 def prims(self, graph, start, canvas):
     for v in graph:
         v.setStatus(0)
         v.setParent(None)
             
     pq = PriorityQueue()
     pq.enQueue((0, start))
     while (not pq.isEmpty()):
         current = pq.deQueue()[1]
         current.setStatus(2)
         if(current.getParent() != None):
             graph.drawEdge(current.getParent(), current, canvas, "yellow")
             canvas.update()
             time.sleep(0.5)
         for neighbour in current.getNeighbours():
             if (neighbour.getStatus() == 0):  
                 # Encountered a new vertex
                 neighbour.setStatus(1)
                 neighbour.setParent(current)
                 neighbour.setpqWeight(current.neighbours[neighbour])
                 pq.enQueue((neighbour.getpqWeight(), neighbour))
             elif (neighbour.getStatus() == 1):
                 if (neighbour.getpqWeight() > current.neighbours[neighbour]):
                     # Found smaller weight, update accordingly
                     old = (neighbour.getpqWeight(), neighbour)
                     neighbour.setpqWeight(current.neighbours[neighbour])
                     pq.updatePriority(old, (neighbour.getpqWeight(), neighbour))
                     neighbour.setParent(current)
开发者ID:KarlParkinson,项目名称:Graphs,代码行数:30,代码来源:AlgorithmHandler.py

示例3: dijkstrasAlgorithm

# 需要导入模块: from PriorityQueue import PriorityQueue [as 别名]
# 或者: from PriorityQueue.PriorityQueue import updatePriority [as 别名]
def dijkstrasAlgorithm(graph, start, surface):
    pq = PriorityQueue()
    for v in graph:
        v.setStatus(0)
        v.setDistance(float("inf"))
        #print((v.getDistance(), v))
        pq.enQueue((v.getDistance(), v))
            
        #start.setStatus(2)
    start.setDistance(0)
    pq.updatePriority((float("inf"), start), (0, start))
    #heapq.heappush(pq, (0, start))
    #pq.enQueue((0, start))
    #while (not pq.isEmpty()):
    for i in range(0, graph.order):
        current = pq.deQueue()[1]
        current.setStatus(2)
        if(current.getParent() != None):
            graph.drawEdge(current.getParent(), current, surface, "blue")
            time.sleep(0.5)            
            #if(current.getParent() != None):
                #  print(str(current.getParent().getId()) + "->" + str(current.getId()))
        for neighbour in current.getNeighbours():
            """
            if (neighbour.getStatus() == 0):        
                neighbour.setStatus(1)
                neighbour.setParent(current)
                #neighbour.setpqWeight(current.neighbours[neighbour])
                neighbour.setDistance(current.getDistance() + current.neighbours[neighbour])
                pq.enQueue((neighbour.getDistance(), neighbour))
            """
            #elif (neighbour.getStatus() == 1):
            if (neighbour.getDistance()) > (current.getDistance() + current.neighbours[neighbour]):
                old = (neighbour.getDistance(), neighbour)
                        #neighbour.setpqWeight(current.neighbours[neighbour])
                        #pq.updatePriority(old, (neighbour.getpqWeight(), neighbour))
                neighbour.setParent(current)
                neighbour.setDistance(current.getDistance() + current.neighbours[neighbour]) 
                pq.updatePriority(old, (neighbour.getDistance(), neighbour))
    
    """
开发者ID:KarlParkinson,项目名称:Graphs,代码行数:43,代码来源:Graphing.py

示例4: dijkstras

# 需要导入模块: from PriorityQueue import PriorityQueue [as 别名]
# 或者: from PriorityQueue.PriorityQueue import updatePriority [as 别名]
 def dijkstras(self, graph, start, canvas):
     pq = PriorityQueue()
     for v in graph:
         v.setStatus(0)
         v.setDistance(float("inf"))
         pq.enQueue((v.getDistance(), v))
                 
     start.setDistance(0)
     pq.updatePriority((float("inf"), start), (0, start))
     for i in range(0, graph.order):
         current = pq.deQueue()[1]
         current.setStatus(2)
         if(current.getParent() != None):
             graph.drawEdge(current.getParent(), current, canvas, "blue")
             canvas.update()
             time.sleep(0.5)            
         for neighbour in current.getNeighbours():
             if (neighbour.getDistance()) > (current.getDistance() + current.neighbours[neighbour]):
                 # Found smaller weight, update accordingly.
                 old = (neighbour.getDistance(), neighbour)
                 neighbour.setParent(current)
                 neighbour.setDistance(current.getDistance() + current.neighbours[neighbour]) 
                 pq.updatePriority(old, (neighbour.getDistance(), neighbour))
开发者ID:KarlParkinson,项目名称:Graphs,代码行数:25,代码来源:AlgorithmHandler.py

示例5: primsAlgorithm2

# 需要导入模块: from PriorityQueue import PriorityQueue [as 别名]
# 或者: from PriorityQueue.PriorityQueue import updatePriority [as 别名]
def primsAlgorithm2(graph, start):
    for v in graph:
        v.setStatus(0)
        
    pq = PriorityQueue()
    #heapq.heappush(pq, (0, start))
    pq.enQueue((0, start))
    while (not pq.isEmpty()):
        current = pq.deQueue()[1]
        current.setStatus(2)
        #if(current.getParent() != None):
          #  print(str(current.getParent().getId()) + "->" + str(current.getId()))
        for neighbour in current.getNeighbours():
                    if (neighbour.getStatus() == 0):        
                        neighbour.setStatus(1)
                        neighbour.setParent(current)
                        neighbour.setpqWeight(current.neighbours[neighbour])
                        pq.enQueue((neighbour.getpqWeight(), neighbour))
                    elif (neighbour.getStatus() == 1):
                        if (neighbour.getpqWeight() > current.neighbours[neighbour]):
                            old = (neighbour.getpqWeight(), neighbour)
                            neighbour.setpqWeight(current.neighbours[neighbour])
                            pq.updatePriority(old, (neighbour.getpqWeight(), neighbour))
                            neighbour.setParent(current)
开发者ID:KarlParkinson,项目名称:Graphs,代码行数:26,代码来源:MST.py


注:本文中的PriorityQueue.PriorityQueue.updatePriority方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。