Example #1
0
def challenge_2():
    from_vert = sys.argv[2]
    to_vert = sys.argv[3]
    vertex_list = []
    edges = []
    counter = 0
    with open(sys.argv[1], 'r') as f:
        #graph_data = f.readlines()
        for line in f:
            x = line.strip('()\n').split(',')
            # counter at 1 indicates the input list or the vert list
            if counter == 1:
                vertex_list = x
            counter += 1
            # counter > 2 indicates the edges
            if counter > 2:
                edges.append(x)

    g = Graph()

    for vertex in vertex_list:
        g.add_vertex(vertex)

    for edge in edges:
        # print(edge)
        g.add_edge(edge[0], edge[1])
    # print('{} {}'.format(from_vert, to_vert))
    print(g.bfs(from_vert, to_vert))
def gen_shimmer(n: int):
    nodes = [Node(x) for x in range(n)]  # start with 1

    nodes_dict = {}

    for node in nodes:
        nodes_dict[node.id] = node

    finished_nodes = []

    for x in range(n - 10):
        x = x
        node = nodes_dict[x]
        for i in range(4 - node.num_in()):
            added = 0
            nid = 0
            while added != 1:
                added, nid = node.add_in(random.choice(list(
                    nodes_dict.keys())))
            nodes_dict[nid].add_out(node.id)
        for i in range(4 - node.num_out()):
            added = 0
            nid = 0
            while added != 1:
                added, nid = node.add_out(
                    random.choice(list(nodes_dict.keys())))
            nodes_dict[nid].add_in(node.id)

        finished_nodes.append(node)
        del nodes_dict[node.id]

    edges = []
    nodes_ = []
    for node in finished_nodes:
        for in_ in node.inn:
            if not (node.id, in_) in edges:
                edges.append((node.id, in_))
        for out in node.out:
            if not (out, node.id) in edges:
                edges.append((out, node.id))
        nodes_.append(node.id)

    g = Graph()
    for edge in edges:
        g.addEdge(edge[0], edge[1])

    bfs_ordered = []
    g.BFS(0, bfs_ordered)

    result = Result([x.id for x in nodes], edges)

    return result
Example #3
0
 def test_bfs_ssp(self):
     graph = Graph()
     a = Vertex(1)
     b = Vertex(2)
     c = Vertex(3)
     d = Vertex(4)
     e = Vertex(5)
     graph.add_vertex(a)
     graph.add_vertex(b)
     graph.add_vertex(c)
     graph.add_vertex(d)
     graph.add_vertex(e)
     graph.add_edge(a, b)
     graph.add_edge(a, d)
     graph.add_edge(b, c)
     graph.add_edge(b, e)
     graph.add_edge(c, e)
     assert graph.bfs(a, e) == [1, 2, 5]
Example #4
0
 def test_simple(self):
     g = Graph(3)
     self.assertEqual(g.find_all_distances(0), [-1, -1])
     g.connect(0, 1)
     self.assertEqual(g.find_all_distances(1), [6, -1])
Example #5
0
 def test_failing(self):
     g = Graph(4)
     g.connect(3, 1)
     g.connect(0, 1)
     g.connect(0, 2)
     self.assertEqual(g.find_all_distances(0), [6, 6, 12])