Vous êtes sur la page 1sur 34

Algorithmique

avancée
Ahmed Harbaoui
Introduction
La large diffusion des ordinateurs dans le monde, leur omniprésence
dans quasiment toutes les sphères de l’activité humaine, de la
conquête spatiale à la cuisine en passant par la médecine fait que tout
ce qui concerne l’informatique en ses fondements concerne aussi de
nombreux domaines (les disciplines et champs social, individuel,
biologique et psychologique, technique et organisationnel,
économique, politique, artistique...)
Ahmed Harbaoui @ ISAMM 2
Introduction (suite)
Les différents domaines sont régis par des lois communes . Plus
précisément, pour appréhender cette diversité dans son unité, les
hommes ont inventé les concepts, des théories, la science. Pour agir
dessus ils ont inventé des outils, les techniques afférentes et la
technologie.

Ahmed Harbaoui @ ISAMM 3


Centre d’intérêt
En ce qui nous concerne ici, la théorie centrale est l’algorithmique qui
est basée sur les mathématiques et qui comprend la théorie de la
complexité et de la calculabilité.
Ces théories expliquent de façon logique comment fonctionnent les
ordinateurs hors des aspects purement techniques, et quelles sont les
limites de ce qui est faisable avec ceux-ci, et plus généralement pour ce
qui est de la calculabilité, ce qui est calculable et ce qui ne l’est pas et
pourquoi. Ahmed Harbaoui @ ISAMM 4
Objectifs du cours
Montrer quelles sont les voies qui permettent de prévoir les moyens à
mettre en œuvre, voire même les coûts, pour résoudre tel ou tel
problème posé par le monde réel et d’indiquer les champs de
recherches possibles.

Ahmed Harbaoui @ ISAMM 5


Position des machines
L’ordinateur est l’instrument adéquat pour étudier la complexité et
l’affronter quand c’est possible.
L’ordinateur n’est à aucun degré un " cerveau électronique " ou une
"machine intelligente ", mais bien au contraire un outil sur lequel
l’homme se décharge de tâches qui, justement, se sont avérées non
intelligentes.

Ahmed Harbaoui @ ISAMM 6


Position des machines (suite)
Des tâches dont on est capable de réduire la complexité à celle d’un
programme qui les résout, et surtout qui résout tous les problèmes de
la classe . La classe étant réputée infinie et le programme codé en un
nombre fini de caractères.

Ahmed Harbaoui @ ISAMM 7


Attitudes possibles faces à un problème
• Chercher directement à le résoudre
• Se demander si c’est bien un problème
• Considérer que c’est bien un problème
• Se contenter de savoir si le problème est résolvable ou pas
• Vouloir une solution et chercher moyens à mettre en œuvre pour pouvoir le
résoudre, c’est-à-dire combien ça va coûter, en temps, en espace, en argent.

Dans la dernière hypothèse, on peut être amené à montrer qu’il n’est


pas raisonnable de vouloir écrire un programme de résolution du dit
Ahmed Harbaoui @ ISAMM 8
Problèmes intraitables
Dire que votre problème est intraitable (untraçable) en temps
raisonnable signifie qu’on ne peut pas écrire un programme permettant
de résoudre ce problème dans des délais acceptables, dès lors que le
dit problème atteint une taille relativement modeste.
Autrement dit, on ne connaît pas d’algorithme dont le temps de calcul
varie en fonction polynomiale de la taille des données pour résoudre ce
problème.
Ahmed Harbaoui @ ISAMM 9
Une stratégie de résolution
Pour aborder un problème, il faut :
• Renoncer à écrire un programme dont le temps de calcul varie au plus en
fonction polynomiale de la taille des données du problème dans le cas général
• Essayer d’autres méthodes de résolution
‒ Rechercher un algorithme efficace (i.e. polynomial en temps)
• pour un problème proche par relaxation de certaines contraintes
• résolution de cas particuliers
• approximation en lieu et place de la solution optimale
• solution approchée
• solution "acceptable"
• utilisation d’arguments probabilistes pour atteindre l’optimum avec une
certaine probabilité (méthodes de Monte-Carlo, ou de Las Vegas)
‒ Utiliser quand même l’algorithme de résolution du cas général, mais sur des
tailles de données suffisamment petites pour que le temps de calcul ne
devienne pas prohibitif @ ISAMM 10
Exemple d’un algorithme polynomial en
temps
Soit à résoudre le problème suivant :
Étant donnée une liste de nombres entiers, rechercher si 1838987 fait
partie de la liste.
On imagine facilement un algorithme dont le temps de calcul est
linéaire en temps par rapport à la taille de la liste.
Il s’agit de comparer un à un tous les éléments de la liste à 1838987 et
de répondre oui si on le trouve, non sinon.

Ahmed Harbaoui @ ISAMM 11


Exemple d’n algorithme polynomial en temps
(1)
DEBUT RECH_LIST
POUR i DE 1 A n
SI Liste(i) = 1838987
ECRIRE oui
STOP
FINSI
FINPOUR
ECRIRE non
FIN RECH_LIST

Ahmed Harbaoui @ ISAMM 12


Exemple d’n algorithme polynomial en temps
(2)
Cet algorithme génère au plus a x n itérations élémentaires
n ∈ IN* : le nombre d’éléments de la liste
a ∈ IR* : constante liée au temps de calcul élémentaire associé aux
opérations élémentaires en question s’exécutant en temps constant,
que l’algorithme calcule en temps polynomial.

Ahmed Harbaoui @ ISAMM 13


Exemple d’un algorithme non polynomial en temps

Soit à résoudre le problème suivant :


Étant donnée une expression booléenne dite sous forme canonique
(toute expression booléenne peut s’y ramener) du type suivant :

dire s’il existe une affectation de valeurs {0, 1} aux variables de cette
fonction telle que l’expression prenne la valeur 1. Il n’y a, dans le cas
général, pas d’autre solution connue que d’essayer toutes les
affectations possibles des valeurs {0, 1} aux variables dans le pire des
cas. Ahmed Harbaoui @ ISAMM 14
Exemple d’un algorithme non polynomial en temps (1)

Pour que l’expression soit satisfaite (c.-à-d. sa valeur soit égale à 1), il
faut et il suffit que chaque clause soit satisfaite, mais les affectations de
valeurs sur une clause retentissent sur les autres. dans le pire des cas,
toutes les possibilités doivent être examinées.
L’algorithme nécessite 2 n opérations élémentaires et on ne connaît pas
de meilleur algorithme pour résoudre ce problème connu sous le nom
SAT, abréviation de SATisfiabilité dans le cas général.
Ahmed Harbaoui @ ISAMM 15
Plan du cours
1.Modèles de calcul, classes de complexité
2.Complétude NP
3.Complexité et efficacité
4.Des algorithmes pour problèmes NPC
5.L’algorithmique probabiliste
6.Le modèle quantique

Ahmed Harbaoui @ ISAMM 16


1. Modèles de calcul, classes de complexité
• La Machine de Turing comme modèle de calcul
• Langages et fonctions
• Autres modèles de calcul
• Complexité en temps
• Complexité en espace
• Relation entre les complexités
• La classe P
• La classe NP
• La classe NP∩Co−NP

Ahmed Harbaoui @ ISAMM 17


1.1 La Machine de Turing comme modèle de calcul

C’est le modèle le plus simple pour introduire le concept de classe de


complexité.
La machine la plus générale étant la Machine de Turing Universelle
(MTU) mais il en existe bien d’autres comme les machines de Turing à
plusieurs rubans dont le concept permet d’inférer celui de calculateur,
les machines «tout à droite» ou «tout à gauche», les machines de
Turing alternantes, ou même le concept de machine de Turing non-
déterministe. Ahmed Harbaoui @ ISAMM 18
Machine de Turing (MT)
Une MT à un ruban est un quintuplet : M=< Q, Σ, q0, t, F >
• Q = {q0, ..., qn}, n ∈ IN∗ : un ensemble fini d’états (ou alphabet intérieur); q0 étant l’état initial;
F ⊆ Q , F : ensemble des états finaux, c-à-d pour un problème de décision : F = {q oui; qnon}
• Σ : alphabet extérieur , un ensemble de symboles / Q et Σ sont totalement disjoints, c-à-d :
Q ∩ Σ = ∅. De plus, Σ contient toujours le symbole vide , noté s ou Λ indiquant où doit
commencer la lecture des symboles sur le ruban mais si on donne la position de la tête de
lecture-écriture en position de départ, ce symbole n’est plus nécessaire
• t est la fonction de transition; t : Q × Σ → Q × Σ × {G,D,N} . t peut être considéré en fait comme
le "programme" de la machine . On utilise aussi le terme de dérivation pour une transition
simple ou un pas de calcul.

Ahmed Harbaoui @ ISAMM 19


La donnée de la MT
C’est une chaîne uv ∈ Σ∗
La chaîne uv est placée dans des cases contigües du ruban, à raison
d’un symbole par case, dans l’ordre induit par uv. Initialement, les cases
contiennent le symbole blanc.
L’état dans lequel se trouve la machine au départ est toujours, par
convention, q0. La position de départ, (le premier symbole placé sous la
tête de lecture de la machine) doit être spécifiée au départ. Ce n’est
pas nécessairement le premier symbole de u.

Ahmed Harbaoui @ ISAMM 20


Le fonctionnement de la MTU
Etant le programme de la machine, la fonction t spécifie pour toute
paire formée d’un état q ∈ Q, et un symbole de l’alphabet extérieur, σ
∈ Σ un et un seul triplet : t(q, σ) = (p, τ, m) avec p ∈ Q
• p : le nouvel état courant atteint par la machine
• τ ∈ Σ est le symbole qui est écrit dans la case considérée par la machine en
remplacement de σ, et on a : τ, σ ∈ Σ. On peut évidemment avoir τ = Λ dans
ce cas, cela signifie que la machine efface le contenu de la case considérée.
• m précise le déplacement, ou non, de la tète de lecture/écriture de la
machine; m ∈ {G, D, N}.

Ahmed Harbaoui @ ISAMM 21


La donnée de la MT
C’est une chaîne uv ∈ Σ∗
La chaîne uv est placée dans des cases contigües du ruban, à raison
d’un symbole par case, dans l’ordre induit par uv. Initialement, les cases
contiennent le symbole blanc.
L’état dans lequel se trouve la machine au départ est toujours, par
convention, q0. La position de départ, (le premier symbole placé sous la
tête de lecture de la machine) doit être spécifiée au départ. Ce n’est
pas nécessairement le premier symbole de u.

Ahmed Harbaoui @ ISAMM 22


Configuration d’une MTU

Conf = uqiv u, v ∈ Σ∗
où qi est l’état courant de la machine. Le mot uv est écrit sur le
ruban et toutes les autres cases du ruban sont vides (ou
occupées par le caractère "blanc"; Λ).

Ahmed Harbaoui @ ISAMM 23


Transition élémentaire
C’est le passage d’une configuration à une autre
(Confj = uqv) → (Confj+1 = u’q’v’)
avec éventuellement q = q’.
On suppose que :
uv = wστw’ avec u = w σ où w ∈ Σ ∗ est une suite de lettres (un
mot), σ ∈ Σ une lettre v = τ w’ où τ ∈ Σ est une lettre et w’ ∈ Σ ∗ est
un mot.

Ahmed Harbaoui @ ISAMM 24


Transition élémentaire
uv = wστw’
On a donc :

1.{t (q, τ) → t(q’, τ’, G)} ⇒ {u’ = w et v’ = στ’w’}


2.{t (q, τ) → t(q’, τ’, N)} ⇒ {u’ = u et v’ = τ’w’}
3.{t (q, τ) → t(q’, τ’, D)} ⇒ {u’ = uτ’ et v’ = w’}

Dans une MTU, on a au plus simple, Σ = {0,1}, et donc σ, τ ∈ {0,1} et


u, u’, v, v’, w, w’ ∈ {0,1}k, k ∈IN∗

Ahmed Harbaoui @ ISAMM 25


Transition : Définition

{Conf0 → Confn} ⇔ {∃i : 0≤ i ≤ n; Confn = uqfv; qf ∈ F


et ∀i ∈1..n, Confi → Confi+1}

Cette définition suppose que n ∈ N, c’est-à-dire que la machine M


considérée s’arrête

Ahmed Harbaoui @ ISAMM 26


1.2 Langages et fonctions
Une machine de Turing M peut être vue comme calculant une fonction
{Σ* − Λ}  {Σ* − Λ} ou comme reconnaissant un langage.
Le mot u ∈ Σ* − Λ est dit reconnu par la machine M si, démarrant sur
une configuration initiale u, q0 la machine s’arrête au bout d’un temps
fini dans une configuration de type qoui, v.
C’est ce qui permet de définir un langage reconnu par M :
LM={u ∈ {Σ − Λ}*| u, q0  u’, qoui, v}

Ahmed Harbaoui @ ISAMM 27


Définition formelle des langages récursifs
Etant donné une MT M=< Q, Σ, q0, t, F >, et le langage L

On note L=LM qui se lit : le langage L est reconnu par la machine M


Le langage L est alors dit récursif

Ahmed Harbaoui @ ISAMM 28


Si la machine termine dans l’état qoui, pour la donnée u, on dit qu’elle
accepte u.
Dans le cas contraire, si la machine termine dans l’état qnon pour la
donnée u, la donnée u est dite rejetée.

Ahmed Harbaoui @ ISAMM 29


Résolution des problèmes de décision
La correspondance entre reconnaissance de langage et résolution de
problème de décision est la suivante :

Un programme M de MTU résoud le problème de décision Π avec le


codage e si M s’arrête pour toute séquence finie de symboles de
l’alphabet extérieur, et LM=L(Π, e)

Ahmed Harbaoui @ ISAMM 30


Fonction récursive
Si f est une fonction {Σ − Λ}* → Σ* et M une machine d’alphabet
extérieur Σ, on dira que
M calcule f si et seulement si pour tout mot u ∈ {Σ − Λ}* M(u) = f (u)
Si une telle machine M existe, alors f est dite fonction récursivement
calculable ou simplement fonction récursive.

Ahmed Harbaoui @ ISAMM 31


Exemple : Fonction récursive
Soit le programme de MT suivant :
Σ = {0, 1, Λ}; Q = {q0; q1; q2; q3; qoui; qnon} et la fonction de transition δ :

Avec, pour position initiale :

Ahmed Harbaoui @ ISAMM 32


Exemple : Fonction récursive (suite)
Dans cet exemple, le calcul s’arrête après huit itérations ; le symbole !
Signifiant l’arrêt de la machine.
Ici, la donnée étant 11100, le calcul s’arrête en l’état q oui donc la
réponse est oui.
Le schème de la MT, ou programme, M, est donné par la table. C’est la
fonction de transition δ qui à 11100 fait correspondre qoui
δ(11100) = qoui

Ahmed Harbaoui @ ISAMM 33


Exemple : Fonction récursive (suite)
Dans l’exemple la position initiale de la machine est le premier 1 à
gauche, mais ce n’est pas une obligation générale. Il serait plus simple
de faire démarrer le calcul sur le dernier symbole (0 ou 1) à droite, la
modification du schème serait facile pour ce faire et conduit à un
schème beaucoup plus simple.

Avec, pour position de départ

Ahmed Harbaoui @ ISAMM 34

Vous aimerez peut-être aussi