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 :

[Graphe] Sommet le plus "central"


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 859
    Billets dans le blog
    1
    Par défaut [Graphe] Sommet le plus "central"
    Bonjour à tous

    J'ai un soucis d'algorithmique avec la théorie des graphes.

    Prenons par exemple un graphe où l'ensemble des arrêtes ne peut pas reboucler, comme illustré ici
    Nom : Graphe2.jpg
Affichages : 461
Taille : 23,6 Ko

    Si on part du sommet "0" et qu'on compte "1" à chaque niveau, il faudra alors 4 itérations pour atteindre l'ensemble des sommets
    Nom : Graphe3.jpg
Affichages : 456
Taille : 80,8 Ko

    Si maintenant on part du sommet "2", alors il ne faudra plus que 2 itérations
    Nom : Graphe4.jpg
Affichages : 475
Taille : 66,2 Ko

    Mon problème est de trouver ce sommet "2" permettant à un fluide qui s'en écoulerait d'atteindre tous les autres en un minimum d'itération. J'ai écrit un algorithme récursif qui pour un sommet donné me donne la profondeur maximale du graphe mais c'est trop long de tout tester. Même en optimisant en fournissant à mon algorithme la profondeur minimale déjà trouvée pour un sommet "X" et en le faisant s'arrêter dès qu'il descend plus bas en testant le sommet "Y" c'est encore trop long.

    Donc ma question: y a-t-il un autre moyen de trouver ce "sommet 2" sans tout tester ???

    Merci de votre attention
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  2. #2
    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
    Bonjour,

    si c'est juste pour franchir un niveau à CodinGame, alors je te laisse chercher.

    Si c'est une question sérieuse, alors la réponse c'est la médiane.

    la médiane est la valeur centrale qui minimise la valeur moyenne des écarts absolus => c'est celle qui est "en moyenne" la moins éloignée de toutes les autres.

    A+
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre Expert
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Par défaut
    Bonjour,
    Dans le cas d'un graphe non dirigé acyclique connexe, tu peux simplement retirer toutes les feuilles jusqu'à trouver le nœud ou les nœuds qui seront le ou les centres des graphes.
    Dans ton exemple, on commencera par supprimer les nœuds 0,4,5 et 7 et il restera les nœuds 1,2,3 et 6. Ensuite tu supprimeras les nœuds 1,3 et 6, il ne restera que le nœud 2 → le centre de ton graphe.

    Si tu avais eu un graphe :
    Nom : Graphe2.jpg
Affichages : 438
Taille : 24,0 Ko
    Alors les centres auraient été les nœuds 1 et 2.

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 297
    Par défaut
    Bonjour

    Ce rappel de CodingGame m'a donné envie de faire le "puzzle de la semaine". Facile, marrant et rapide, en bash.



  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 859
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    si c'est juste pour franchir un niveau à CodinGame, alors je te laisse chercher.
    Merci de ton intérêt à mon souci. Effectivement c'est bien pour ce site de jeux algorithmiques. Mais on n'a pas le droit d'en parler ici car c'est aussi un site marchand et Developpez ne veut pas qu'on fasse de pubs pour des sites marchands.
    Sinon effectivement c'est bien ce puzzle qui me gêne. J'ai d'ailleurs repris le même exemple (mais j'ai eu la délicatesse de refaire un dessin et non pomper le dessin d'origine). Ceci dit, je n'ai pas l'impression de tricher en venant ici car mon algorithme fonctionne et trouve le noeud central. Sauf qu'il ne le trouve pas assez rapidement et je reste bloqué à 80%...

    Citation Envoyé par pseudocode Voir le message
    Si c'est une question sérieuse, alors la réponse c'est la médiane.
    la médiane est la valeur centrale qui minimise la valeur moyenne des écarts absolus => c'est celle qui est "en moyenne" la moins éloignée de toutes les autres.
    Mouais. Je veux bien une médiane (j'avais aussi pensé au barycentre) mais une médiane de quoi ??? Du n° des noeuds ? De la distance qui sépare chaque noeud du noeud médian ? Dans le premier cas ça n'a pas de sens et dans le second il faut alors calculer chaque distance ce que je fais déjà.

    Citation Envoyé par picodev Voir le message
    Dans le cas d'un graphe non dirigé acyclique connexe, tu peux simplement retirer toutes les feuilles jusqu'à trouver le nœud ou les nœuds qui seront le ou les centres des graphes.
    Dans ton exemple, on commencera par supprimer les nœuds 0,4,5 et 7 et il restera les nœuds 1,2,3 et 6. Ensuite tu supprimeras les nœuds 1,3 et 6, il ne restera que le nœud 2 → le centre de ton graphe.
    Super !!!
    Effectivement, c'est comme l'oeuf de Colomb.

    Un grand merci pour ton aide.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    si c'est juste pour franchir un niveau à CodinGame, alors je te laisse chercher.
    Décidément, on retrouve les exos de CG partout, plus ou moins modifiés pour ne pas apparaitre trop clairement, je suis sur qu'on en trouve aussi sur S.O. en cherchant bien.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Graphe pondéré et plus court chemin
    Par CaNiBaLe dans le forum Langage
    Réponses: 1
    Dernier message: 23/05/2014, 17h41
  2. dessin de graphe sommet et arc
    Par maissaab dans le forum Excel
    Réponses: 0
    Dernier message: 04/04/2011, 12h43
  3. Réponses: 10
    Dernier message: 24/02/2011, 13h38
  4. [CR XI] graphe / Selectionner date plus récente
    Par bossun dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 23/02/2010, 15h15
  5. Requete recursive - Graphe - Chemin le plus court
    Par nicottin dans le forum SQL
    Réponses: 7
    Dernier message: 08/11/2007, 00h33

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