Closed yhamoudi closed 10 years ago
j'ai réussi à obtenir le format voulu, mais un problème subsiste : dans print_answer (dans color.ml), on a besoin d'afficher toutes les arêtes du graphes (avec le format dot ça donne des trucs de la forme : a -- b). Le pb c'est qu'il n'est pas facile de récupérer les arêtes : l'idéal c'est à la sortie du parser où on a exactement la liste des arêtes ; après il y a plein de clauses ajoutées.
Du coup je vois 2 manières de faire :
Est-ce que la 2ème manière te convient ?
Est ce que ça coûte vraiment très cher de tout parcourir? Sinon on peut intégrer une méthode print_answer à renommage (Du coup le module mériterait d'être renommé lui même) qui n'attend que answer. Je peux l'écrire demain si tu veux.
j'essaye de tout re-parcourir et je regarde la vitesse (pour n sommets, m arêtes et k couleurs, il y a n+k*m clauses). on améliorera éventuellement, ça me permet déjà de tester si ma distribution des couleurs est bonne
et voilà : maintenant ça fait des jolis graphes colorés :)
Commande habituelle (ça donne "s Pas de coloriage à %d couleurs" ou une coloriage au format dot) ./resol -color 5 tests/color/myciel3.col
Pour visualiser le graphe colorié : ./resol -color 5 tests/color/myciel3.col > col.dot dot -Tpdf col.dot -o col.pdf Puis ouvrir le pdf
Je pense que tout est bon. On pourra éventuellement automatiser la partie affichage dans le script shell par un
./resol -color $@ | dot -Tpdf > tmp
evince tmp
rm tmp
les qqs corrections à apporter encore :
Je suis en train de regarder à quel point on peut déléguer ça à un script.
C'est bon, il s'appelle colorie et fait tout le travail
D'après ce que j'ai compris, il faut une "vraie" sortie lorsqu'un graphe est coloriable, càd produire un fichier au format graphviz qui contient un graphe colorié (avec des vraies couleurs).
Le prof à mis ces 2 trucs en exemple :
Je pense que pour une k coloration, on pourrait générer k couleurs au hasard (s'assurer qu'elles soient bien distinguables : ne pas générer que des nuances de vert) puis colorier le graphe grâce à l'algo. Quelques infos ici :