ilsordo / SAT-SMT-Solver

A SAT/SMT solver in OCaml
2 stars 2 forks source link

Sortie de color si pas de coloriage #5

Closed yhamoudi closed 10 years ago

yhamoudi commented 10 years ago

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 :

yhamoudi commented 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 ?

ilsordo commented 10 years ago

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.

yhamoudi commented 10 years ago

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

yhamoudi commented 10 years ago

et voilà : maintenant ça fait des jolis graphes colorés :)

Pour utiliser le prg :

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

Remarques :

Améliorations ?

ilsordo commented 10 years ago

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
yhamoudi commented 10 years ago

les qqs corrections à apporter encore :

ilsordo commented 10 years ago

Je suis en train de regarder à quel point on peut déléguer ça à un script.

ilsordo commented 10 years ago

C'est bon, il s'appelle colorie et fait tout le travail