IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Détection boucle filiation


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Novembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 6
    Par défaut Détection boucle filiation
    Bonjour,

    alors je vous expose mon problème, dans le logiciel sur lequel je travaille nous traitons des données (jobs) qui peuvent être affiliées entre elles. Or je rencontre un soucis, sur certaines données les filiations sont incorrectes et provoquent des boucles infinies. La solution la plus simple serait de supprimer ces boucles mais le but de mon programme n'est pas là, dans mon cas je veux simplement ignorer les données où il y des boucles.
    J'ai fait plusieurs tentatives mais je ne rentre pas dans tous les cas.

    Voici un exemple de données :
    Cas 1 : (Boucle entre JOB1 et JOB2)
    JOB1 : JOB2 | JOB3
    JOB2 : JOB1 | JOB3

    Cas 2 : (double Boucle entre JOB4 et JOB1 et job 4 et job 2)
    JOB1 : JOB2|JOB3
    JOB2 : JOB4|JOB5
    JOB4 : JOB1|JOB2

    Cas 3 : (Pas de boucle)
    JOB 1 : JOB2|JOB3
    JOB 2 : JOB4|JOB5
    JOB 3 : JOB6|JOB7
    JOB 4 : JOB3

    Je vous joins un schéma pour bien comprendre le système de hiérarchie.
    Le boucles apparaissent en rouge. (voir pièces jointes)


    Le but est donc de déterminer s'il existe au moins une boucle dans ces filiations.

    Je vous remercie d'avance pour votre aide !
    Images attachées Images attachées  

  2. #2
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Bonjour,

    pour détecter une boucle dans ton graphe le plus simple est d'en faire un parcours en profondeur d'abord (par exemple) en marquant chaque noeud visité, si tu rencontres un noeud marqué alors il y a une boucle.

  3. #3
    Membre du Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Novembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 6
    Par défaut
    Citation Envoyé par kwariz Voir le message
    Bonjour,

    pour détecter une boucle dans ton graphe le plus simple est d'en faire un parcours en profondeur d'abord (par exemple) en marquant chaque noeud visité, si tu rencontres un noeud marqué alors il y a une boucle.
    OK je vois bien pour les cas 1 et 2 où j'ai des boucles, par contre pour le cas 3 où je n'en ai pas, si je parcours ma hiérarchie, je vais passer deux fois sur le JOB3 et pourtant je n'ai pas de boucle...

  4. #4
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    J'ai effectivement répondu un peu vite ...
    Dans le cas orienté on peut utiliser un algorithme du type, avec L la liste des jobs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    cycle_existe(L)
    début
      tant que L n'est pas vide
        si L contient une feuille F // = un job sans fils
          supprimer F et tous les liens entrants
        sinon
          retourner Vrai // il y a au moins un cycle
        fin si
      fin tant que
      retourner Faux // il n'y a aucun cycle
    fin

  5. #5
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par francois83 Voir le message
    OK je vois bien pour les cas 1 et 2 où j'ai des boucles, par contre pour le cas 3 où je n'en ai pas, si je parcours ma hiérarchie, je vais passer deux fois sur le JOB3 et pourtant je n'ai pas de boucle...
    Il faut traiter chaque parcours indépendamment.

    Il y a une boucle si et seulement si, pour un parcours donné, tu repasses par un noeud déjà marqué. Si le noeud a été marqué par un autre parcours, ca ne compte pas.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

Discussions similaires

  1. Pb boucle détection de données
    Par simonlagaffe dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/09/2008, 21h42
  2. [Optimisation]Détection de collisions, boucles imbriquées
    Par Rafy dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 05/03/2006, 18h42
  3. Détections avec WebBrowser
    Par Wazo_Sportive dans le forum Composants VCL
    Réponses: 4
    Dernier message: 11/08/2002, 19h32
  4. Détection de 2 touches appuyées
    Par cyrose dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/07/2002, 16h25
  5. Réponses: 2
    Dernier message: 29/05/2002, 20h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo