Exemplo n.º 1
0
def main(s):
    file_name = '../resources/tinyG.txt'
    with open(file_name) as f:
        ints = list()
        for line in f.read().split('\n'):
            ints.append(line)
        vertices, edges = int(ints[0]), int(ints[1])
    graph = Graph(vertices)
    print(graph)
    inp = ints[2:]  # skip first     lines vertices and edges

    for i in range(edges):
        v, w = inp[i].split(' ')
        graph.add_edge(int(v), int(w))
    print(graph)

    search = DepthFirstSearch(graph, int(s))
    for v in range(graph.get_V()):
        if search.marked(v):
            print(f'{v} ')
    print()
    if search.count() != graph.get_V():
        print('Not connected.')
    else:
        print('Connected')
Exemplo n.º 2
0
def main():
    g = Graph(6)
    print(g)
    g.add_edge(0, 5)
    g.add_edge(2, 4)
    g.add_edge(2, 3)
    g.add_edge(1, 2)
    g.add_edge(0, 1)
    g.add_edge(3, 4)
    g.add_edge(3, 5)
    g.add_edge(0, 2)

    print(g)
    s = 0
    dfs = DepthFirstPaths(g, s)
    print(dfs)
    for v in range(g.get_V()):
        if dfs.has_path_to(v):
            print(f'{s} to {v}')
            for x in reversed(dfs.path_to(v)):
                if x == s:
                    print(x, end="")
                else:
                    print(f' - {x}', end="")
            print()
        else:
            print(f'{s} to {v}: not connected\n')
Exemplo n.º 3
0
def main():
    g = Graph(4)
    g.add_edge(0, 1)
    g.add_edge(0, 2)
    g.add_edge(1, 2)
    g.add_edge(2, 3)
    cc = CC(g)
    print(cc)
    m = cc.get_count()
    print(f'{m} components')
    components = deque([deque() for _ in range(m)])

    for v in range(g.get_V()):
        components[cc.id(v)].append(v)
    for i in range(m):
        for v in components[i]:
            print(f'{v} ')
        print()
Exemplo n.º 4
0
def main():
    s = 0
    g = Graph(4)
    g.add_edge(0, 1)
    g.add_edge(0, 2)
    g.add_edge(1, 2)
    g.add_edge(2, 3)
    bfs = BreadthFirstPaths(g, s)
    print(bfs)
    for v in range(g.get_V()):
        if bfs.has_path_to(v):
            print(f'{s} to {v} ({bfs.distance_to(v)})')
            for x in reversed(bfs.path_to(v)):
                if x == s:
                    print(x, end="")
                else:
                    print(f' - {x}', end="")
            print()
        else:
            print(f'{s} to {v} (-): not connected.\n')