Enonc du projet

publicité
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
Téléchargement