Esempio n. 1
0
    def test_subgraphIsomorphism(self):
        """
        Check the subgraph isomorphism functions.
        """

        vertices1 = [Vertex() for i in range(6)]
        edges1 = [
            Edge(vertices1[0], vertices1[1]),
            Edge(vertices1[1], vertices1[2]),
            Edge(vertices1[2], vertices1[3]),
            Edge(vertices1[3], vertices1[4]),
            Edge(vertices1[4], vertices1[5]),
        ]
        vertices2 = [Vertex() for i in range(2)]
        edges2 = [
            Edge(vertices2[0], vertices2[1]),
        ]

        graph1 = Graph()
        for vertex in vertices1:
            graph1.addVertex(vertex)
        for edge in edges1:
            graph1.addEdge(edge)

        graph2 = Graph()
        for vertex in vertices2:
            graph2.addVertex(vertex)
        for edge in edges2:
            graph2.addEdge(edge)

        self.assertFalse(graph1.isIsomorphic(graph2))
        self.assertFalse(graph2.isIsomorphic(graph1))
        self.assertTrue(graph1.isSubgraphIsomorphic(graph2))

        mapList = graph1.findSubgraphIsomorphisms(graph2)
        self.assertTrue(len(mapList) == 10)

        for mapping in mapList:
            self.assertTrue(graph1.isMappingValid(graph2, mapping))
            self.assertTrue(graph1.isMappingValid(graph2, mapping))
Esempio n. 2
0
    def test_subgraphIsomorphism(self):
        """
        Check the subgraph isomorphism functions.
        """

        vertices1 = [Vertex() for i in range(6)]
        edges1 = [
            Edge(vertices1[0], vertices1[1]),
            Edge(vertices1[1], vertices1[2]),
            Edge(vertices1[2], vertices1[3]),
            Edge(vertices1[3], vertices1[4]),
            Edge(vertices1[4], vertices1[5]),
        ]
        vertices2 = [Vertex() for i in range(2)]
        edges2 = [Edge(vertices2[0], vertices2[1])]

        graph1 = Graph()
        for vertex in vertices1:
            graph1.addVertex(vertex)
        for edge in edges1:
            graph1.addEdge(edge)

        graph2 = Graph()
        for vertex in vertices2:
            graph2.addVertex(vertex)
        for edge in edges2:
            graph2.addEdge(edge)

        self.assertFalse(graph1.isIsomorphic(graph2))
        self.assertFalse(graph2.isIsomorphic(graph1))
        self.assertTrue(graph1.isSubgraphIsomorphic(graph2))

        mapList = graph1.findSubgraphIsomorphisms(graph2)
        self.assertTrue(len(mapList) == 10)

        for mapping in mapList:
            self.assertTrue(graph1.isMappingValid(graph2, mapping))
            self.assertTrue(graph1.isMappingValid(graph2, mapping))