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 :

Coloration d'un graphe et conjecture des 4 couleurs


Sujet :

Algorithmes et structures de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 44
    Points : 22
    Points
    22
    Par défaut Coloration d'un graphe et conjecture des 4 couleurs
    Bonjour,
    Je recherche plusieurs algorithmes pour la coloration d'un graphe non orienté pour une application qui est censée appliquer la conjecture des 4 couleurs:
    http://fr.wikipedia.org/wiki/Théorèm...uatre_couleurs

    Pour résumer le problème, tous les sommets doivent être colorés de tel façon que 2 sommets voisins n'aient pas la même couleur.

    Dans cette application, il est déjà prevu d'implanter l'algorithme du BackTracking (résolution par rebroussement). je recherche donc d'autre algo^^

    merci d'avance.

    PS: j'ai bien fait des recherches sur internet et la FAQ avant mais je ne trouve pas d'algo juste des définitions ou vocabulaire sur les graphes.

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Une technique pour trouver une solution assez bonne dès le départ, consiste à affecter à chaque sommet un coefficient de "difficulté" qui tient compte du nombre de points adjacents, puis du nombre d'adjacence des adjacents, et ainsi de suite. Puis, on trie les sommets par coeff de difficulté décroissant avant d'esayer de leur trouver une couleur. Ainsi, on devrait arriver à une solution quasi correcte.

    Pour le calcul du coeff, on peut procéder ainsi :
    • on détermine le nombre maxi N_Max_Adj de sommets adjacents à un sommet sur l'ensemble du graphe.
    • On l'initialise à 1 les coeff de chaque sommet,
    • On itère le calcul sur N étapes (N à determiner en fonction de la précision du coeff et de NmaxAdj) qui consiste à faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            NouveauCoeff(i) = AncienCoeff(i) +
                    somme_pour_tous_les_j_adjacents(AncienCoeff(j)) /
                         ((N_Max_Adj+1) <puissance> N°_d'étape)
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 44
    Points : 22
    Points
    22
    Par défaut
    j'aime bien cet algo mais c'est pas un peu lourd? La complexité doit pas etre magnifique.
    De plus ca garantie de trouver une solution? ou juste une grande probabilité de trouver une bonne solution?

  4. #4
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Pour info, la conjecture n'est plus une conjecture mais un théorème et ne fonctionne qu'avec des graphes planaires
    Je ne répondrai à aucune question technique en privé

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 44
    Points : 22
    Points
    22
    Par défaut
    non c'est bien une conjecture car il n'a jamais vraiment été démontré correctement. Sauf erreur la seul "démonstration" a été une démonstration informatique en générant un nombre astronomique de cas. Ce qui n'est pas super rigoureux

  6. #6
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Ca a tout de même étant prouvé formellement par des systèmes de preuves formelles (même si la preuve est vraiment dégueulasse, je te l'accorde ^^) (désolé d'avoir fait un HS)
    Je ne répondrai à aucune question technique en privé

  7. #7
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Jai,
    Citation Envoyé par Schpountz42 Voir le message
    non c'est bien une conjecture car il n'a jamais vraiment été démontré correctement. Sauf erreur la seul "démonstration" a été une démonstration informatique en générant un nombre astronomique de cas. Ce qui n'est pas super rigoureux
    La preuve a été acceptée par la communauté des mathématiciens, c'est donc bien un théorème, quoi que tu puisses en penser.
    Si les cons volaient, il ferait nuit à midi.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 44
    Points : 22
    Points
    22
    Par défaut
    C'est justement pas ce que j'ai entendu.
    Mais de toute façon on s'en fout, ca me donne pas des algo pour autant^^

  9. #9
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    De plus ca garantie de trouver une solution? ou juste une grande probabilité de trouver une bonne solution?
    Comme l'a suggéré millie tu pourrais peut être commencer par faire un test de planarité ?
    (à moins que tu te fiches de la planarité)
    Du même auteur: mon projet, le dernier article publié, le blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 44
    Points : 22
    Points
    22
    Par défaut
    oui la planarité du graphe n'est pas le problème. On part du principe qu'il l'est. (en théorie je ne devrais même pas savoir ce que c'est lol)

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 55
    Points : 61
    Points
    61
    Par défaut
    En ce qui concerne le probleme de coloration d'un graphe, la modelisation en SAT ou CSP s'y prete bien. D'ailleurs, il y a eu enormement de travaux fait dessus (en fait ce ne sont que des contraintes de differences) et les meilleurs algos sur ce genre de probleme sont ceux qui detectent les symetries. En fait, dans ce genre de probleme, il y a enormement de symetrie en general (1 couleur n'est pas differente d'une autre mais dans la modelisation elle seront considerees comme differente, ce qui fait que lalgo risque dessayer toutes les couleurs alors quen fait il pourrait voir que si avec une ca marche pas, les autre non plus -> elagage dans l'espace de recherche !).

    En tout cas (sans me rappeler du nom des algos de tete la), cherche des algos qui exploitent des symetries dans les problemes avec contraintes de differences.

  12. #12
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    A: De plus ca garantie de trouver une solution?
    ou
    B: juste une grande probabilité de trouver une bonne solution?
    A: non
    B: c'est l'objectif, avec en cas de problème un minimum de back-tracking.

    En fait, un meilleur algo consisterait à recalculer le coefficient de difficulté après chaque affectation de couleur. Mais, je n'arrive pas à formaliser un coeff qui tiennent compte des sommet auquels on a dèjà affecté une couleur.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 44
    Points : 22
    Points
    22
    Par défaut
    L'algo dont tu me parles ne serait pas le DSATUR?

    http://fr.wikipedia.org/wiki/Dsatur

    Celui ci me parait intéressant car il n'a pas l'air de faire un rebroussement de chemin.

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 55
    Points : 61
    Points
    61
    Par défaut
    C'est un des algorithmes dont je te parlais mais il en existe beaucoup d'autres (d'ailleurs je crois que dans mon labo certains ont travaille dessus...).

    C'est normal qu'il n'y ai pas de retour arriere (backtrack) puisque pour cet algo il est supposé que tu as autant de couleurs que tu veux (quand tu colorie le sommet a l'étape 4 de l'algo, tu choisis la plus petite couleur qui ne rentre pas en conflit avec une couleur d'un sommet voisin, donc tu peux toujours choisir une couleur).

    Par contre, si tu cherches un algo pour colorier un graphe avec un nombre de couleurs limité au depart alors cet algo ne marche plus sans y rajouter une operation de backtrack.

    Donc tout dépend de ton probleme au depart... est-ce que tu imposes un nombre de couleurs ou alors tu peux en choisir tant que tu veux ?

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 44
    Points : 22
    Points
    22
    Par défaut
    Je vais emmerder le monde mais... les 2

    Ca dépend de l'option que choisit l'utilisateur de l'application final. Il me faut des algorithmes dans les 2 cas.
    Mais je retient déjà le DSATUR et l'algorithme de Welsh et Powell.

    http://fr.wikipedia.org/wiki/Coloration_de_graphe

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 55
    Points : 61
    Points
    61
    Par défaut
    Ben deja le truc c'est que c'est completement different !

    Dans un cas (celui ou l'on n'impose pas le nombre de couleurs), le problème est "simple" (pas de backtracking).

    Dans le 2eme cas (avec un nombre k de couleurs), savoir s'il existe une solution pour colorier le graphe avec k couleurs est un probleme NP-Complet !!! (donc il n'existe pas d'algorithme polynomial CONNU pour résoudre ce probleme). C'est pour ce cas la que je préconisai l'utilisation de CSP (avec par exemple du Forward-Checking dessus ou toute autre technique).

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 44
    Points : 22
    Points
    22
    Par défaut
    Désolé de l'inactivité mais je finissait le reste de l'application. Maintenant il me reste qu'à implanter d'autres algorithmes.

    Donc pour résumé ce que j'ai pour le moment:
    - Si on impose le nombre de couleurs max :
    + Back-Tracking (avec CSP?)

    - Si on impose PAS le nombre de couleur max :
    + DSATUR
    + RLF (Recursive Largest-First)


    D'autre idée?

  18. #18
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Citation Envoyé par Schpountz42 Voir le message
    Sauf erreur la seul "démonstration" a été une démonstration informatique en générant un nombre astronomique de cas. Ce qui n'est pas super rigoureux
    Je ne me suis jamais penché réellement dans la théorie, je n'en sais donc que ce que l'on en dit sur les articles de vulgarisation, mais il me semble que, d'une part, le problème avait été ramené à 1478 cas critiques, ce qui n'a rien d'astronomique et que, d'autre part, les ordinateurs ont été utilisés pour vérifier ces cas, soit faire la validation.

    Le problème avait alors été déplacé au fait qu'il fallait valider l'algorithme ainsi que le programme qui l'implémentait. Ce sont des problèmes devenus courants avec le développement de l'informatique, aujourd'hui.

    Par ailleurs, il paraît que cela avait nécessité 1200 heures de calcul en 1976. On peut raisonnablement penser qu'il n'en faudrait qu'une pour faire le même travail de nos jours. On aurait pu trouver aussi 500 personnes motivées de par le monde pour vérifier chacune 3 cas de figure, mais les embûches seraient restées les mêmes (fiabilité de l'ensemble des vérificateurs), tout comme la difficulté principale, qui résidait dans la quantité de travail à mener.

  19. #19
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par Schpountz42 Voir le message
    C'est justement pas ce que j'ai entendu.
    Mais de toute façon on s'en fout, ca me donne pas des algo pour autant^^
    En fait si, si les systèmes de preuve formelles ont été utilisé alors la preuve est un algorithme de coloriage. Grosso modo, démontrer le théorème dans un système de preuve formelle consiste à construire un programme de type "g :: Graph -> Planar(g) -> exists c :: Coloring-4(g) . NeverTwoSameColorAdjacent(c)". Donc à la fin on peut exécuter ce programme sur un graphe et obtenir un coloriage correct. Mais bon, je ne garantis pas les performances !

    --
    Jedaï

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

Discussions similaires

  1. Colorer graph en fonction des abscisses
    Par aubrespinj dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/09/2011, 16h38
  2. Graphe d'adjacence des regions
    Par Darkcristal dans le forum Traitement d'images
    Réponses: 4
    Dernier message: 27/07/2007, 16h52
  3. vba Graph Excel (valeur des axes)
    Par maxtin dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 20/12/2006, 21h50
  4. [Graphes] Pour faire des graphiques ?
    Par Kyti dans le forum 2D
    Réponses: 3
    Dernier message: 29/03/2005, 15h55
  5. Ajusté les Axes d'un graphe en fonction des données rentrée!
    Par Ma2thieu dans le forum Composants VCL
    Réponses: 5
    Dernier message: 09/07/2004, 01h34

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