<?xml version="1.0" encoding="iso-8859-1" ?>
<rss version="0.92">
	<channel>
    <title>problemes-c-complets</title>
    <link>http://problemes-c-complets.blog2geek.com</link>
    <description>Blog specialise; geek et geek attitude.</description>
    <language>fr-FR</language><item>
        <title>Problèmes C-Complets</title>
        <link>http://problemes-c-complets.blog2geek.com/problemes-c-complets-714.html</link>
        <description>
La notion
de problème C-Complet est très
importante dans la théorie de la complexité. Nous allons donc tout d&amp;rsquo;abord voir
ce qu&amp;rsquo;est la réduction d&amp;rsquo;un problème dans une classe C, et pourquoi cette
notion est nécessaire, puis expliquer ce qu&amp;rsquo;est un problème difficile, et enfin
finir par un exemple d&amp;rsquo;un problème NP-Complet. Les problèmes de cette
classe(NP) étant de loin les plus étudiés, nous allons expliquer l&amp;rsquo;un des plus
connus, le problème SAT.



La réduction :


Une réduction d&amp;rsquo;un problème P
vers un problème P&amp;rsquo; est une transformation de toute instance de P en instance
de P&amp;rsquo;. Ainsi, il y a une relation de difficulté de résolution entre ces deux
problèmes. Si P&amp;rsquo; est facile, alors P le sera aussi, et inversement, si P est
difficile, alors P&amp;rsquo; le sera de même.


 


Néanmoins, il y a plusieurs types
de réduction. Celle de base est la réduction de Cook. C&amp;rsquo;est la transformation par
une machine de Turing polynomial &amp;lsquo;oracle&amp;rsquo; (c&amp;#39;est-à-dire qui qui peut accéder a
des informations qu&amp;rsquo;elle ne peut pas forcément calculer). Soit une réduction de
Cook d&amp;rsquo;un problème P vers un problème P&amp;rsquo;, alors il existe une machine de Turing
oracle qui peut résoudre P en se servant des informations obtenu par P&amp;rsquo;. 


 


Vient ensuite la réduction de
Karp, qui est en fait un cas particulier de celle de Cook. C&amp;rsquo;est une fonction de transformation calculable en temps
polynomial. Le plus souvent, quand le terme « réduction » sans autre
précision est utilisé, c&amp;rsquo;est pour faire référence à cette réduction. La réduction
de Cook étant plus lourde, elle est plus rarement utilisée, car ses propriétés
sont rarement intéressantes. Il y a d&amp;rsquo;autres réductions, mais ces deux la sont
les plus utilisées. 


 


Chaque classe complète considère implicitement un type de réduction. Les
problèmes NP-Complet par exemple utilisent la réduction de Karp, c&amp;#39;est-à-dire
que l&amp;rsquo;algorithme de transformation est polynomial, mais nous allons voir ça
plus loin. 


 


La réduction permet de définir
ci-dessus le problème C-Hard.


 



Problèmes C-Hard :


Soit un problème P. Si pour tout
problème P&amp;rsquo; dans la classe C, il existe une réduction de P&amp;rsquo; vers P, alors P est
un problème C-hard. 


 


Formellement, un problème est
toujours C-hard suivant un certain type de réduction, ainsi, on dira : «Ce
problème est C-Hard sous la réduction de Levin ».


 


Pour montrer qu&amp;#39;un problème P est C-hard pour une classe C donnée, il y a deux façons
de procéder: montrer que tout problème de C se réduit à P, ou bien il suffit de
montrer qu&amp;rsquo;un problème C-hard se réduit à P. C&amp;rsquo;est
très souvent la seconde méthode qui est utilisé, car il suffit de se baser sur
les problème C-hard connus et en trouver un réductible a P.


 



Problèmes
C-Complet : 


Une fois
assimilée la réduction, et les problèmes C-Hard, la définition ne posent plus
aucun problème : 


-        
Le problème doit appartenir à C.


-        
Le problème doit être C-hard suivant une
certaine réduction.


 


A savoir que la réduction n&amp;rsquo;est
pas toujours la même suivant la classe, comme cité précédemment, pour la classe
NP, par exemple, c&amp;rsquo;est la réduction de Karp qui est nécessaire.


 


Maintenant que cette notion est
définit, un exemple de problème Complet va être expliquer.


 


 



Un problème NP-Complet,
SAT :


Ce problème est l&amp;rsquo;un des plus
connus dans le domaine de la complexité, et en particulier de la NP-Complétude.
Le problème est le suivant :


 


Nous possédons une formule
algébrique booléenne, et on veut déterminer sa satisfiabilité. Par
exemple : (a and B) or (c and (not e))


 


Le but est de savoir si cette
formule peut être vraie d&amp;rsquo;après les lois booléennes classique en attribuant des
valeurs aux variables utilisés. L&amp;rsquo;exemple est évidemment très simple, mais dans
la pratique, la résolution de ce problème est extrêmement lourde. Il est
possible de prouver que ce problème est NP-Complet, mais ce n&amp;rsquo;est pas le but
ici.


 


La plus évidente des méthodes
pour résoudre ce problème est de parcourir la table de vérité du problème, mais
la complexité est alors exponentielle par rapport au nombre de variables. Des
méthodes de résolution plus efficaces que le &amp;lsquo;brute force&amp;rsquo; ont été mises au
point et ont permis de faire évoluer l&amp;rsquo;algorithmie et l&amp;rsquo;étude de la complexité.


 


Ce problème, réputé pour être
l&amp;rsquo;un des premiers à avoir été étudié, a été suivi par bon nombre de problèmes
tous aussi réputés, comme celui du voyageur de commerce, du sac a dos, ou
encore la coloration de graphe, qui sont devenus des grands classiques.  


 


 


 
</description>
		<pubDate>Sun, 20 May 2007 15:26:00 GMT</pubDate>
      </item>		</channel>
</rss> 
