Пример #1
0
    def graph_from_file(self, file_name):
        file = open(file_name, "r")
        first_line = [int(x) for x in file.readline().split()]
        self.nb_sommets = first_line[0]
        self.nb_arcs = first_line[1]
        self.oriente = (first_line[2] == 1)

        # ajout de tous les sommets
        for i in range(self.nb_sommets):
            line = [a for a in file.readline().split()]
            sommet_cur = Sommet(line[0],
                                lat=float(line[1]),
                                long=float(line[2]))
            self.sommets[line[0]] = sommet_cur

        # ajout de tous les arcs
        for i in range(self.nb_arcs):
            line = [a for a in file.readline().split()]
            if len(line) == 0:
                print(i)
            else:
                s_source = self.sommets[line[0]]
                s_cible = self.sommets[line[1]]
                arc_cur = Arc(s_source, s_cible, value=float(line[2]))
                self.arcs['%s%s' % (s_source.name, s_cible.name)] = arc_cur
                # si le graphe n'est pas orienté, on ajoute l'inverse de chaque arc
                if not self.oriente:
                    self.arcs['%s%s' % (s_cible.name,
                                        s_source.name)] = arc_cur.inverse()

        file.close()