DM

bonjour j'ai un DM a faire mais je n'y arrive pas !
j'aimerais avoir de l'aide pour le faire...

voila le dm :

mport networkx as nx

class Graphe():

    def __init__(self):
        self.dico_graph={}

    def ajout_noeud(self, nd:str):
        '''ajoute un noeud au graphe'''
        self.dico_graph[nd_1] = []
        
    def ajoute_arete(self, nd_1:str,nd_2:str):
        '''ajoute une arête entre les noeud nd_1 et nd_2 '''
        self.dico_grpah[nd_1].append(nd_2)
        self.dico_grpah[nd_2].append(nd_1)
        pass

    def list_noeud(self) -> list:
        '''affiche la liste des noeuds'''
        
        pass

    def est_liee_2(self, nd_1: str, nd_2: str) -> bool:
        '''renvoie vrai si les deux noeuds sont reliés de nd_1 vers nd_2'''
        pass

    def est_liee_3(self, nd_1: str, nd_2: str, nd_3: str) -> bool:
        '''renvoie vrai si les trois noeuds sont reliés de nd_1 vers nd_2 puis nd_3'''

    def est_liee_symetriquement(self, nd_1: str, nd_2: str) -> bool:
        '''renvoie vrai si les deux noeuds sont reliés dans les deux sens'''
        pass

    def est_symetrique(self) -> bool:
        '''renvoie vrai si toutes les liaisons se font dans les deux sens'''
        pass



    def successeurs_list(self, nd: str) -> list:
        '''renvoie la liste des successeurs de à nd'''
        pass


    def predecesseurs_list(self, ville: str) -> list:
        '''renvoie la liste des predecesseurs de à ville'''
        pass

    def degre_sortant(self, nd: str) -> int:
        '''renvoie le degré sortant du noeud nd'''
        pass

    def degre_entrant(self, nd: str) -> int:
        '''renvoie le degré entrant du noeud nd'''
        pass

    def est_puits(self, nd: str) -> bool:
        '''renvoie vrai si aucun chemin ne part de nd: degré sortant nul'''
        pass

    def est_source(self, nd: str) -> bool:
        '''renvoie vrai si aucun n'arrive à nd : degré entrant nul'''
        pass

    def est_isole(self, nd: str) -> bool:
        '''renvoie vrai si nd est isolé'''
        pass

    def est_relie_a_tous_les_autres_noeuds(self, nd: str) -> bool:
        '''renvoie vrai si nd est relié à toutes les autres noeuds'''
        pass
    
    def matrice_adjacence(self):
        '''renvoie la matrice d'adjacence du graphe'''
    
    @staticmethod
    def creer_from_matrice(m:list):
        '''instancie un graphe de Graphe à partir de la matrice d'adjacence au format du TP précédent'''
        
    def dessine_graph(self):
        D = nx.DiGraph()
        for i in self.dico_graph.keys():
            D.add_node(i)
            for j in self.dico_graph[i]:
                D.add_edge(i, j)
        nx.draw(D, with_labels=True)

8 réponses

  1. bonjour,

    le problème est que je ne comprends pas ca et que je ne trouve rien sur internet,

    ducoup je demande l'aide ( pas faire mon exercice) mais qu'on m'explique
    1. ok

      L'indentation étant importante en Python, merci de re poster ton code avec les balises de code
      mode d'emploi:
      https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
      Visuellement, ça doit ressembler à ceci :

      def test():
          print('test')
      
      test()
      
      1. import networkx as nx

        class Graphe():

        def __init__(self):
        self.dico_graph={}

        def ajout_noeud(self, nd:str):
        '''ajoute un noeud au graphe'''
        self.dico_graph[nd_1] = []

        def ajoute_arete(self, nd_1:str,nd_2:str):
        '''ajoute une arête entre les noeud nd_1 et nd_2 '''
        self.dico_grpah[nd_1].append(nd_2)
        self.dico_grpah[nd_2].append(nd_1)
        pass

        def list_noeud(self) -> list:
        '''affiche la liste des noeuds'''

        pass

        def est_liee_2(self, nd_1: str, nd_2: str) -> bool:
        '''renvoie vrai si les deux noeuds sont reliés de nd_1 vers nd_2'''
        pass

        def est_liee_3(self, nd_1: str, nd_2: str, nd_3: str) -> bool:
        '''renvoie vrai si les trois noeuds sont reliés de nd_1 vers nd_2 puis nd_3'''

        def est_liee_symetriquement(self, nd_1: str, nd_2: str) -> bool:
        '''renvoie vrai si les deux noeuds sont reliés dans les deux sens'''
        pass

        def est_symetrique(self) -> bool:
        '''renvoie vrai si toutes les liaisons se font dans les deux sens'''
        pass

        def successeurs_list(self, nd: str) -> list:
        '''renvoie la liste des successeurs de à nd'''
        pass

        def predecesseurs_list(self, ville: str) -> list:
        '''renvoie la liste des predecesseurs de à ville'''
        pass

        def degre_sortant(self, nd: str) -> int:
        '''renvoie le degré sortant du noeud nd'''
        pass

        def degre_entrant(self, nd: str) -> int:
        '''renvoie le degré entrant du noeud nd'''
        pass

        def est_puits(self, nd: str) -> bool:
        '''renvoie vrai si aucun chemin ne part de nd: degré sortant nul'''
        pass

        def est_source(self, nd: str) -> bool:
        '''renvoie vrai si aucun n'arrive à nd : degré entrant nul'''
        pass

        def est_isole(self, nd: str) -> bool:
        '''renvoie vrai si nd est isolé'''
        pass

        def est_relie_a_tous_les_autres_noeuds(self, nd: str) -> bool:
        '''renvoie vrai si nd est relié à toutes les autres noeuds'''
        pass

        def matrice_adjacence(self):
        '''renvoie la matrice d'adjacence du graphe'''

        @staticmethod
        def creer_from_matrice(m:list):
        '''instancie un graphe de Graphe à partir de la matrice d'adjacence au format du TP précédent'''

        def dessine_graph(self):
        D = nx.DiGraph()
        for i in self.dico_graph.keys():
        D.add_node(i)
        for j in self.dico_graph[i]:
        D.add_edge(i, j)
        nx.draw(D, with_labels=True)
    2. Ben .... pas vraiment

      Compare ton dernier envoi et ma réponse d'avant

      dans ton message, il n'y a ni couleurs, ni tabulations ....
      def test():
          print('test')
      
      test()
      


      import networkx as nx

      class Graphe():

      def __init__(self):
      self.dico_graph={}

      def ajout_noeud(self, nd:str):

      il suffit pourtant de copier le code dans ton message, sélectionner tout à la souris, cliquer l'icone "flèche pointe en bas" dans la barre d'icone, et de sélectionner Python
      Quand tu valides ton message, alors le code apparait comme le mien
      1. je vous ai envoyé le dm juste ne dessous si besoin
    3. import networkx as nx
      
      class Graphe():
      
          def __init__(self):
              self.dico_graph={}
      
          def ajout_noeud(self, nd:str):
              '''ajoute un noeud au graphe'''
              self.dico_graph[nd_1] = []
              
          def ajoute_arete(self, nd_1:str,nd_2:str):
              '''ajoute une arête entre les noeud nd_1 et nd_2 '''
              self.dico_grpah[nd_1].append(nd_2)
              self.dico_grpah[nd_2].append(nd_1)
              pass
      
          def list_noeud(self) -> list:
              '''affiche la liste des noeuds'''
              
              pass
      
          def est_liee_2(self, nd_1: str, nd_2: str) -> bool:
              '''renvoie vrai si les deux noeuds sont reliés de nd_1 vers nd_2'''
              pass
      
          def est_liee_3(self, nd_1: str, nd_2: str, nd_3: str) -> bool:
              '''renvoie vrai si les trois noeuds sont reliés de nd_1 vers nd_2 puis nd_3'''
      
          def est_liee_symetriquement(self, nd_1: str, nd_2: str) -> bool:
              '''renvoie vrai si les deux noeuds sont reliés dans les deux sens'''
              pass
      
          def est_symetrique(self) -> bool:
              '''renvoie vrai si toutes les liaisons se font dans les deux sens'''
              pass
      
      
      
          def successeurs_list(self, nd: str) -> list:
              '''renvoie la liste des successeurs de à nd'''
              pass
      
      
          def predecesseurs_list(self, ville: str) -> list:
              '''renvoie la liste des predecesseurs de à ville'''
              pass
      
          def degre_sortant(self, nd: str) -> int:
              '''renvoie le degré sortant du noeud nd'''
              pass
      
          def degre_entrant(self, nd: str) -> int:
              '''renvoie le degré entrant du noeud nd'''
              pass
      
          def est_puits(self, nd: str) -> bool:
              '''renvoie vrai si aucun chemin ne part de nd: degré sortant nul'''
              pass
      
          def est_source(self, nd: str) -> bool:
              '''renvoie vrai si aucun n'arrive à nd : degré entrant nul'''
              pass
      
          def est_isole(self, nd: str) -> bool:
              '''renvoie vrai si nd est isolé'''
              pass
      
          def est_relie_a_tous_les_autres_noeuds(self, nd: str) -> bool:
              '''renvoie vrai si nd est relié à toutes les autres noeuds'''
              pass
          
          def matrice_adjacence(self):
              '''renvoie la matrice d'adjacence du graphe'''
          
          @staticmethod
          def creer_from_matrice(m:list):
              '''instancie un graphe de Graphe à partir de la matrice d'adjacence au format du TP précédent'''
              
          def dessine_graph(self):
              D = nx.DiGraph()
              for i in self.dico_graph.keys():
                  D.add_node(i)
                  for j in self.dico_graph[i]:
                      D.add_edge(i, j)
              nx.draw(D, with_labels=True)
      
      1. Bonjour Missouh,

        OK

        Et donc tu ne comprends pas ce que fait ce code ?

        L'as-tu exécuté pour voir ?

        C'est un DM, ton prof n'a pas donné de détails ?

        Es tu allé voir sur Internet ce que fait la bibliothèque networkx ?

        "NetworkX est un module python dédié à l’analyse de réseaux. Déconseillé comme outil d’apprentissage, il pourrait s’avérer utile pour des personnes plus expertes, notamment pour l’analyse des réseaux bipartis où le choix reste limité ....."

        Pour débuter, il y a plus simple !