DFS (parcours en profondeur) adaptation
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

DFS (parcours en profondeur) adaptation



  1. #1
    alakaabar

    DFS (parcours en profondeur) adaptation


    ------

    Bonsoir ,

    j´ai un peu de mal a adapter un algorithme censé faire un Depth first search avec des entree/sorties comme suit :

    Nom : Converted_file_8f1d0bbf.jpg
Affichages : 149
Taille : 32,8 Ko

    et voici le code utilisé:
    Code:
    #include<stdio.h>
      
    typedef struct node
    {
        struct node *next;
        int vertex;
    }node;
      
    node *G[20];  
    //heads of linked list
    int visited[20];
    int n;
    void read_graph();
    //create adjacency list
    void insert(int,int); 
    //insert an edge (vi,vj) in te adjacency list
    void DFS(int);
      
    void main()
    {
        int i;
        read_graph();
        //initialised visited to 0
        
        for(i=0;i<n;i++)
            visited[i]=0;
      
        DFS(0);
    }
      
    void DFS(int i)
    {
        node *p;
        
        printf("\n%d",i);
        p=G[i];
        visited[i]=1;
        while(p!=NULL)
        {
           i=p->vertex;
            
           if(!visited[i])
                DFS(i);
            p=p->next;
        }
    }
      
    void read_graph()
    {
        int i,vi,vj,no_of_edges;
        printf("Enter number of vertices:");
        
        scanf("%d",&n);
      
        //initialise G[] with a null
        
        for(i=0;i<n;i++)
        {
            G[i]=NULL;
            //read edges and insert them in G[]
            
            printf("Enter number of edges:");
               scanf("%d",&no_of_edges);
      
               for(i=0;i<no_of_edges;i++)
            {
                printf("Enter an edge(u,v):");
                scanf("%d%d",&vi,&vj);
                insert(vi,vj);
            }
        }
    }
      
    void insert(int vi,int vj)
    {
        node *p,*q;
         
        //acquire memory for the new node
        q=(node*)malloc(sizeof(node));
        q->vertex=vj;
        q->next=NULL;
      
        //insert the node in the linked list number vi
        if(G[vi]==NULL)
            G[vi]=q;
        else
        {
            //go to end of the linked list
            p=G[vi];
            
            while(p->next!=NULL)
                p=p->next;
            p->next=q;
        }
    }

    mais le probleme c´est que j´ai aucune idee de comment le changer pour qu´il soit bien conforme au tableau d´en haut .. quelqu´un peut me donner un conseil ou une petite idee svp ?



    Merci !

    -----

  2. #2
    imoca

    Re : DFS (parcours en profondeur) adaptation

    Bonjour,

    La fonction read_graph() a 2 boucles en la variables i.

  3. #3
    alakaabar

    Re : DFS (parcours en profondeur) adaptation

    y´a un truc que je capte pas dans ce code , si je lui donne cet input :
    Nom : C+Program+to+implement+DFS+traversal+on+a+graph+represented+using+an+adjacency+list.jpg
Affichages : 215
Taille : 56,8 Ko

    Normalement quand on arrive au 7 , y´a la condition de while n´est plus valable et donc on sert de cet boucle la mais apres je ne sais pas ca marche le backtracking pour afficher les autres valeurs de la liste d´adjacence
    Dernière modification par alakaabar ; 06/11/2015 à 14h25.

  4. #4
    imoca

    Re : DFS (parcours en profondeur) adaptation

    Le résultat est bon, après avoir atteins le sommet 7, la fonction dfs(7) s'arrête et retourne a dfs(5) qui s'arrete ...dfs(0) poursuit avec 2...

  5. A voir en vidéo sur Futura
  6. #5
    alakaabar

    Re : DFS (parcours en profondeur) adaptation

    Bin je comprend pas comment ca retourne a dfs(5) vu que y´a aucune instruction apres la boucle while .... sinon y´a un autre probleme c´est que si je commence par 1 en tant que premier vi , on a le G[0]->vertex == NULL ce qui fait que la boucle while s´arrete tout de suite et n´affiche que 0

  7. #6
    imoca

    Re : DFS (parcours en profondeur) adaptation

    Logique, si tu demande le parcours en profondeur depuis le sommet 0 et que ton graphe commence à 1.

  8. #7
    alakaabar

    Re : DFS (parcours en profondeur) adaptation

    Est ce que tu aurais une idee de comment adapter ce code la avec les inputs du tableau en haut ? parce que je bloque des que je pense a l implementer en liste d´ádjacence

Discussions similaires

  1. Profondeur de fondation
    Par framana dans le forum Bricolage et décoration
    Réponses: 2
    Dernier message: 01/11/2015, 23h51
  2. Réponses: 2
    Dernier message: 11/01/2015, 20h33
  3. Parcours en profondeur d'abord (DFS)
    Par Mcflys dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 13/06/2012, 02h29
  4. Profondeur de la CCD
    Par Josquin dans le forum Géologie et Catastrophes naturelles
    Réponses: 0
    Dernier message: 09/06/2009, 09h51
  5. Profondeur?
    Par ericdu54 dans le forum Habitat bioclimatique, isolation et chauffage
    Réponses: 0
    Dernier message: 09/02/2009, 09h13