def Dijkstra(graph, source):
    """
    Implementa el algoritmo de Dijkstra
    Args:
        graph: El grafo de busqueda
        source: El vertice de inicio

    Returns:
        Un nuevo grafo vacío
    Raises:
        Exception
    """
    try:
        search = initSearch(graph, source)
        while not iminpq.isEmpty(search['iminpq']):
            v = iminpq.delMin(search['iminpq'])
            edges = g.adjacentEdges(graph, v)
            if edges is not None:
                edgesiter = it.newIterator(edges)
                while (it.hasNext(edgesiter)):
                    edge = it.next(edgesiter)
                    relax(search, edge)
        return search
    except Exception as exp:
        error.reraise(exp, 'dks:dijkstra')
Esempio n. 2
0
def prim(graph, search, v):
    """
    Args:
        search: La estructura de busqueda
        v: Vertice desde donde se relajan los pesos
    Returns:
        El grafo con los arcos relajados
    Raises:
        Exception
    """
    try:
        map.put(search['distTo'], v, 0.0)
        pq.insert(search['pq'], v, 0.0)
        while (not pq.isEmpty(search['pq'])):
            min = pq.delMin(search['pq'])
            scan(graph, search, min)
        return search
    except Exception as exp:
        error.reraise(exp, 'prim:prim')
def test_empty(iminpq):
    assert pq.isEmpty(iminpq) is False