Exemplo n.º 1
0
    def test_4(self):

        graph = self.create_graph_from_edges(edges=[
            undirected_graph.Edge(vertex1=1, vertex2=2),
            undirected_graph.Edge(vertex1=2, vertex2=3),
            undirected_graph.Edge(vertex1=2, vertex2=4),
            undirected_graph.Edge(vertex1=3, vertex2=4),
        ], )

        res = list(
            undirected_graph.preorder_depth_first_iteration(vertex=1,
                                                            graph=graph))
        self.assertTrue((res == [1, 2, 3, 4]) or (res == [1, 2, 4, 3]))

        res = list(
            undirected_graph.preorder_depth_first_iteration(vertex=2,
                                                            graph=graph))
        self.assertTrue((res == [2, 1, 3, 4]) or (res == [2, 1, 4, 3])
                        or (res == [2, 3, 4, 1]) or (res == [2, 4, 3, 1]))

        res = list(
            undirected_graph.preorder_depth_first_iteration(vertex=3,
                                                            graph=graph))
        self.assertTrue((res == [3, 2, 1, 4]) or (res == [3, 2, 4, 1])
                        or (res == [3, 4, 2, 1]))
        res = list(
            undirected_graph.preorder_depth_first_iteration(vertex=4,
                                                            graph=graph))
        self.assertTrue((res == [4, 3, 2, 1]) or (res == [4, 2, 1, 3])
                        or (res == [4, 2, 3, 1]))
Exemplo n.º 2
0
    def test_1(self):

        graph = undirected_graph.Graph()
        graph.add_edge(edge=undirected_graph.Edge(vertex1=1, vertex2=1))

        self.assertEqual(
            list(undirected_graph.connected_components(graph=graph)),
            [[1]],
        )
Exemplo n.º 3
0
    def setUp(self):

        self.edges = [
            undirected_graph.Edge(vertex1=1, vertex2=2),
            undirected_graph.Edge(vertex1=2, vertex2=3),
            undirected_graph.Edge(vertex1=2, vertex2=4),
            undirected_graph.Edge(vertex1=3, vertex2=4),
        ]
        self.add_vertices = [5, 1, 6]

        self.vertices = set([1, 2, 3, 4, 5, 6])

        self.edges_from = {
            1: set([self.edges[0]]),
            2: set([self.edges[0], self.edges[1], self.edges[2]]),
            3: set([self.edges[1], self.edges[3]]),
            4: set([self.edges[2], self.edges[3]]),
            5: set(),
            6: set(),
        }
Exemplo n.º 4
0
    def test_1(self):

        graph = self.create_graph_from_edges(edges=[
            undirected_graph.Edge(vertex1=1, vertex2=1),
        ], )
        self.assertEqual(
            list(
                undirected_graph.preorder_depth_first_iteration(vertex=1,
                                                                graph=graph)),
            [1],
        )
Exemplo n.º 5
0
    def test_3(self):

        graph = self.create_graph_from_edges(edges=[
            undirected_graph.Edge(vertex1=1, vertex2=2),
            undirected_graph.Edge(vertex1=2, vertex2=3),
        ], )
        self.assertEqual(
            list(
                undirected_graph.preorder_depth_first_iteration(vertex=1,
                                                                graph=graph)),
            [1, 2, 3],
        )
        self.assertEqual(
            list(
                undirected_graph.preorder_depth_first_iteration(vertex=3,
                                                                graph=graph)),
            [3, 2, 1],
        )
        middle = list(
            undirected_graph.preorder_depth_first_iteration(vertex=2,
                                                            graph=graph))
        self.assertTrue((middle == [2, 1, 3]) or (middle == [2, 3, 1]))
Exemplo n.º 6
0
    def test_2(self):

        graph = undirected_graph.Graph()
        graph.add_edge(edge=undirected_graph.Edge(vertex1=1, vertex2=2))

        self.assertEqual(
            list(
                sorted(c)
                for c in undirected_graph.connected_components(graph=graph)),
            [[1, 2]],
        )

        graph = undirected_graph.Graph()
        graph.add_vertex(1)
        graph.add_vertex(2)

        self.assertEqual(
            sorted(undirected_graph.connected_components(graph=graph)),
            [[1], [2]],
        )
Exemplo n.º 7
0
    def test_3(self):

        graph = undirected_graph.Graph()
        graph.add_edge(undirected_graph.Edge(vertex1=1, vertex2=2))
        graph.add_edge(undirected_graph.Edge(vertex1=2, vertex2=3))
        graph.add_edge(undirected_graph.Edge(vertex1=4, vertex2=5))
        graph.add_edge(undirected_graph.Edge(vertex1=5, vertex2=6))
        graph.add_edge(undirected_graph.Edge(vertex1=5, vertex2=7))
        graph.add_edge(undirected_graph.Edge(vertex1=6, vertex2=7))

        self.assertEqual(
            sorted(
                sorted(c)
                for c in undirected_graph.connected_components(graph=graph)),
            [[1, 2, 3], [4, 5, 6, 7]],
        )