Hello Tiago,

Thanks for the quick reply . 
I don't have time for opening the issues right now, but I'll try to do so later 
today or tomorrow. Regardless, below you'll find a minimal example for the 
first issue I mentioned, for if you want to try it in the meantime.

Best regards,
JA

_

from graph_tool import Graph
from graph_tool.topology import shortest_distance


if __name__ == '__main__':
    """In this example we have a 4 vertices/ 3 edges graph with the following 
topology:
    
         (2) <----- (1) ----> (3) ----> (4)
     
     where each edge has weight=5.
     Shortest distance is calculated from vertex (1).
    """

    # Create graphs
    g = Graph(directed=True)

    # Add vertices
    g.add_vertex()
    g.add_vertex()
    g.add_vertex()
    g.add_vertex()

    # Edge weight property
    w = g.new_edge_property("float")

    # Add edges
    e1 = g.add_edge(1, 2)
    w[e1] = 5
    e2 = g.add_edge(1, 3)
    w[e2] = 5
    e3 = g.add_edge(3, 4)
    w[e3] = 5


    # Tests:

    # Case 1: max_dist = 1, so only the source should be reached.
    dist, reached = shortest_distance(g, source=g.vertex(1), weights=w, 
max_dist=1, return_reached=True)
    print(f"\nCase 1 (source=1, max_dist=1): \n\t- Reached: {reached}\n\t- 
Dist.: {dist.a}")
    # Result: reached has vertex 1 (the only reached), but also the neighbours 
2 and 3 which have dist == inf

    # Case 2: max_dist = 6, so 1,2,3 should be reached but not 4
    dist, reached = shortest_distance(g, source=g.vertex(1), weights=w, 
max_dist=6, return_reached=True)
    print(f"\nCase 2 (source=1, max_dist=6): \n\t- Reached: {reached}\n\t- 
Dist.: {dist.a}")
    # Result: reached has all vertices, despite 1 -> 4 having total distance of 
10 (path 1 -> 3 -> 4, two edges with w=5)
_______________________________________________
graph-tool mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to