コード例 #1
0
class TestGrafo(unittest.TestCase):
    def setUp(self):
        self.r5 = Grafo([], [])
        self.vertices = [
            "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
            "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
            "a", "b", "c", "d", "e", "f", "g"
        ]
        self.arestas = [
            'A-B', 'A-C', 'A-D', 'B-E', 'B-I', 'C-G', 'D-C', 'D-H', 'E-F',
            'F-B', 'F-J', 'G-F', 'G-J', 'G-K', 'H-G', 'H-L', 'I-M', 'J-I',
            'J-N', 'K-O', 'L-P', 'M-Q', 'M-S', 'N-R', 'N-S', 'N-T', 'O-S',
            'P-T', 'Q-U', 'R-Q', 'R-V', 'S-R', 'S-X', 'U-Y', 'U-Z', 'V-b',
            'V-Z', 'V-W', 'W-S', 'X-c', 'X-d', 'Y-a', 'a-e', 'c-e', 'c-W',
            'e-f', 'e-g', 'T-S'
        ]
        for i in self.vertices:
            self.r5.adiciona_vertice(i)
        for i in self.arestas:
            self.r5.adiciona_aresta(i)

    def test_dijkstra(self):
        self.assertEqual(
            self.r5.dijkstra(self.r5.N, self.r5.aresta_com_peso(), "G", "X", 2,
                             ['S', 'F']), "G --> F --> J --> N --> S --> X")
        self.assertEqual(
            self.r5.dijkstra(self.r5.N, self.r5.aresta_com_peso(), "B", "S", 1,
                             ['I', 'E']), "B --> I --> M --> S")
        self.assertEqual(
            self.r5.dijkstra(self.r5.N, self.r5.aresta_com_peso(), "A", "g", 3,
                             ['L', 'S', 'U', 'a']),
            "A --> D --> H --> L --> P --> T --> S --> X --> c --> e --> g")

        self.assertFalse(
            self.r5.dijkstra(self.r5.N, self.r5.aresta_com_peso(), "A", "g", 2,
                             ['L', 'S', 'U', 'a']))
        self.assertFalse(
            self.r5.dijkstra(self.r5.N, self.r5.aresta_com_peso(), "A", "g", 1,
                             ['L', 'S', 'U', 'a']))
        self.assertFalse(
            self.r5.dijkstra(self.r5.N, self.r5.aresta_com_peso(), "A", "g", 1,
                             ['L', 'S', 'U', 'a']))

        self.assertEqual(
            self.r5.dijkstra(self.r5.N, self.r5.aresta_com_peso(), "A", "H", 3,
                             ['D', 'G']), "A --> D --> H")
        self.assertEqual(
            self.r5.dijkstra(self.r5.N, self.r5.aresta_com_peso(), "I", "b", 4,
                             ['L', 'O', 'S', 'W', 'b']),
            "I --> M --> S --> R --> V --> b")
コード例 #2
0
        'F-G', 'F-J', 'F-K', 'G-B', 'G-J', 'H-G', 'I-P', 'J-I', 'J-O', 'K-N',
        'L-M', 'M-Q', 'N-R', 'O-5', 'O-R', 'O-Q', 'Q-R', 'P-R', 'P-T', 'R-5',
        'R-Y', 'T-U', 'U-7', 'U-W', 'V-2', 'V-W', 'V-X', 'X-R', 'Y-Z', 'Y-1',
        '1-3', '1-X', '3-4', '3-S', '5-T', '5-V', '6-3', '7-6'
]:
    g_challenger.adiciona_aresta(i)

lista_carga = ['L', 'R', 'U', '6']

n = Grafo([], [])
for i in ['a', 'b', 'c', 'd', 'e']:
    n.adiciona_vertice(i)
for i in ['a-b', 'b-c', 'c-d', 'd-e']:
    n.adiciona_aresta(i)
l = ['a']
print(n.dijkstra(4, 4, l, 'a', 'e'))
c2 = Grafo([], [])

for i in ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']:
    c2.adiciona_vertice(i)
for i in ['h-f', 'h-b', 'f-g', 'g-e', 'e-d', 'b-c', 'c-a', 'a-d']:
    c2.adiciona_aresta(i)

r = ['g']

#print(c2.dijkstra(2,2,r,'h','d'))
#g_challenger.dijkstra('A','J')
#print(g_challenger.dijkstra(3, 5,lista_carga, 'A','S'))

g_18 = Grafo([], [])