INFO-F-302 - Logique Informatique Projet d'année Prof. Jean-François Raskin Année aadémique 2008-2009 Introdution Un graphe est une paire de paires {v1 , v2 } ⊆ V ave hV, Ei où V est un ensemble ni de sommets v1 6= v2 . Une telle paire est appelée un ar. 1 3 2 3 (a) Un graphe ave 7 sommets et 12 ars. 2 et E est un ensemble 4 1 (b) Un oloriage ave 4 ouleurs. Fig. 1 Exemple Un graphe G = hV, Ei est oloriable ave k ouleurs si on peut assoier à haque sommet V un nombre (appelé ouleur ) entre 1 et k de manière à e que deux sommets reliés par un ar de E n'aient jamais la même ouleur. Il faut don qu'il existe une fontion (appelée oloriage ) f : V → {1, . . . , k} telle que f (v1 ) 6= f (v2 ) pout tout {v1 , v2 } ∈ E . Par exemple, le graphe de la de Figure 1(a) est oloriable ave 4 ouleurs. La Figure 1(b) donne un tel oloriage. Le problème de oloriage de graphe demande, étant donné un graphe turel k, de dire si G est oloriable ave k G et un nombre na- ouleurs. 1 Énoné On vous demande de réaliser un programme permettant de déterminer le nombre minimum de ouleurs néessaires pour olorier un graphe donné. Pour e faire, vous utiliserez la logique propositionnelle an d'enoder le problème de oloriage de graphe. Vous donnerez une preuve de orretion de et enodage ainsi qu'une aratérisation de la taille de la formule pour k ouleurs et un graphe à n sommets et m ars. Votre programme devra onstruire une formule de logique propositionnelle (en forme normale onjontive) utilisant des propositions atomiques judiieusement hoisies. Vous utiliserez ensuite l'outil zCha dérit i-dessous pour déterminer si ette formule de logique est satisable et ainsi déter- miner le nombre minimum de ouleurs néessaires pour olorier le graphe donné en entrée. Le programme devra alors aher un oloriage du graphe utilisant le minimum de ouleurs (pour une formule satisable, zCha vous fournira une valuation qui satisfait la formule). 1 Pratiquement, votre programme prendra en entrée un hier ontenant une suite de nombres entiers représentant le graphe. Le premier nombre est la taille du graphe (le nombre de sommets |V |), les suivants sont les extrémités des ars du graphe. Le graphe de la Figure 1(a) sera fourni de la manière suivante : 7 1 1 1 2 2 3 3 3 4 4 5 6 2 5 7 3 4 4 5 6 6 7 6 7 Votre programme devra ensuite aher le nombre minimal de ouleurs permettant de olorier le graphe en entrée, et donner un tel oloriage (par exemples sous la forme d'une partition de l'ensemble des sommets). 2 zCha zCha [1℄ est un sat solver, 'est-à-dire un programme qui permet de tester la satisabilité de formules de logique propositionnelle en forme normale onjontive. Un exemple d'utlisation de zCha est fourni dans le hier exemple.py exéuter et exemple, vous devez exéuter la ommande ontenant les hiers 1 disponible sur la page Web du ours . Pour python exemple.py dans un répertoire zhaff.py et _zhaff.so également disponibles sur la page Web du ours. 3 Modalités Ce projet est à réaliser par groupe de 2 personnes. Votre programme (érit en Python [2℄), ainsi qu'un rapport dérivant votre solution, est à remettre au serétariat étudiant pour le 24/04/2009 au plus tard. De plus, et e pour la même date, vous enverrez votre implémentation, ainsi qu'une version életronique du rapport, à l'adresse ldoyenulb.a.be, omme sujet Projet logique et dans le orps du mail les membres du groupe. Référenes zCha. http://www.prineton.edu/~haff/zhaff.html. [1℄ [2℄ Python. 1 http://www.python.org/. http ://www.ulb.a.be/di/info-f-302/ 2 en mentionnant