You are on page 1of 3

Complexité et Calculabilité

Correction Série 6 - Rappels Complexité


et Calculabilité

28 Mars 2023

Pensez à justifier vos réponses.

1. Pour chacun des problèmes suivants, décrivez une machine de Turing


résolvant le problème, puis analysez sa complexité en temps et en espace.
(a) Calculer la soustraction de deux nombres binaires.
(b) Déterminer si un nombre entier décimal est un multiple de 3.

Réponse :

(a) Pour calculer la soustraction, on utilise la machine suivante (n est


la longueur totale de l’entrée). On suppose sans perte de généralité
le premier nombre plus grand que le deuxième (pas forcément plus
long):
ˆ On copie le premier nombre sur T1 et le second sur T2. ( n étapes)
ˆ On commence donc la soustraction depuis la droite sur ces deux
bandes, comme on pose une soustraction. On a donc 4 cas, selon
si on a 1-0, 1-1, 0-0, ou 0-1 :
i. Si on a 1-1 ou 0-0, on écrit 0 sur T3, on efface les valeurs
sur T1 et T2, et on bouge à gauche sur les trois bandes. (1
étape)
ii. Si on a 1-0, on écrit 1 sur T3, on efface les valeurs sur T1 et
T2, et on bouge à gauche sur les trois bandes. (1 étape)
iii. Si on a 0-1, on écrit 1 sur T3, on efface les valeurs sur T1 et
T2, et on bouge à gauche sur les trois bandes. Il faut alors
traiter la retenue. Pour cela, on se déplace à gauche sur T1,
jusqu’à trouver un 1. On le remplace alors par un 0, puis on
revient à droite sur T1 en remplaçant tous les 0 sur le chemin
par des 1 (Il s’agit de l’application d’une retenue en binaire).
Voir complexité en temps ci-après

1
ˆ Quand on arrive au bout des deux nombres (donc du premier
nombre, qui est au moins aussi long que le deuxième), on a ter-
miné, et la réponse est le contenu sur T3 (1 étape)
On obtient donc les complexités suivantes :
Pour le temps, les retenues ne peuvent pas rallonger de plus que 2n,
car la longueur du premier nombre est au plus n, donc aller-retour,
2n (et on ne peut pas faire de retenue plusieurs fois sur les mêmes
chiffres). On obtient donc T(n) = 4n + 1 (”n” pour la copie, ”n”
pour la somme, et au pire ”2n” pour les retenues, et ”1” pour la
confirmation d’avoir fini).
Et en espace, on a le max des deux nombres, donc S(n) = n.
Donc on a les deux complexités qui sont d’ordre θ(n).
(b) On utilise la machine suivante, en se rappelant d’une astuce : un nom-
bre entier est divisible par 3 si la somme de ses chiffres est divisible
par 3.
ˆ Pour chaque chiffre lu en entrée, on le somme sur T1. (Pour une
entrée de taille n, cela fait n sommes, et la valeur obtenue est
au maximum de longueur log10 (n). Comme une somme prend un
temps linéaire par rapport à la longueur de l’entrée (ici log10 (n)),
on a donc nlog10 (n) étapes au maximum.)
ˆ On a maintenant un nombre de longueur log10 (n) au lieu de n.
On applique le même raisonnement dessus, en construisant le
résultat sur T2 (qui prend donc log10 (n) étapes, et au maximum
2 2
log10 (n) par étape, donc log10 (n)log10 (n) en tout).
ˆ Et ainsi de suite jusqu’à atteindre une longueur d’un seul chiffre
(Pour conserver un nombre de bandes fini et fixé, on alterne
les résultats sur T1 et T2). (Ces éventuelles étapes prennent
2 3 3 4
log10 (n)log10 (n), puis log10 (n)log10 , etc... Ces valeurs sont complètement
négligeables par rapport à nlog10 (n).
ˆ Si ce chiffre est 9, 6 ou 3, on accepte, sinon on refuse (1 étape).
On obtient donc T (n) = θ(nlog10 (n)) étapes en temps, et S(n) =
θ(log10 (n)) en espace (La première somme est la plus grande, de taille
log10 (n) + 1, plus une case vide pour vérifier qu’on soit au bout, on
arrive à log10 (n) + 2. Soit de l’ordre de log10 (n)).

2. Soit L1 un langage fini non vide. Les langages définis par les propriétés
suivantes sont-ils récursifs ? récursivement énumérables ? Aucun des deux
?
(a) L ∩ L1 ̸= ∅
(b) L ∪ L1 ̸= Σ∗

Réponse :
Il s’agit donc d’appliquer les théorèmes de Rice :

2
(a) L ∩ L1 ̸= ∅.
Clairement, LP ∈ / R car P n’est pas triviale (L1 respecte la propriété,
L1 ne la respecte pas).
LP ∈ RE car les trois propriétés sont respectées :
Si l’intersection de L avec L1 est non vide, alors n’importe quel L′ ⊇ L
aura aussi une intersection non vide.
Si L est infini et que son intersection avec L1 est non vide, alors il
suffit d’enlever un mot de L qui n’est pas dans L1 pour avoir un L’
qui a toujours la même intersection non vide avec L1 .
Et les langages finis respectant cette propriété sont dénombrables (on
peut aisément construire leur intersection avec L1 qui est fini).
(b) L ∪ L1 ̸= Σ∗ .
Clairement, LP ∈/ R car P n’est pas triviale (L1 respecte la propriété,
L1 ne la respecte pas).
LP ∈/ RE car la première propriété n’est pas respectée (Exemple :
L = L1 , L′ = Σ∗ ).

3. Soit le problème du Sous-Graphe Isomorphe :


Soit deux graphes en entrée : un graphe G=(V,E), et un second graphe
G’=(V’,E’). Est-ce qu’il existe un sous-graphe G”=(V”,E”) dans G (un
sous-graphe, c’est à dire tel que V ′′ ⊆ V et E ′′ ⊆ {e ∈ E|e = (x, y) x, y ∈
V ′′ ), tel que le sous-graphe G” soit isomorphe à G’ ?
(C’est à dire, un graphe identique à G’ à une permutation près)
Montrez que ce problème est décidable.
On construit une machine qui décide ce problème :

ˆ On copie les noeuds de G’ sur T1.


ˆ Pour chaque noeud de G’, on choisit par non-déterminisme un noeud
dans G, qu’on note sur T2.
ˆ On copie les arêtes de G’ sur T3.
ˆ On choisit par non-déterminisme un certain nombre d’arêtes de G
parmi celles qui contiennent uniquement des paires de noeuds parmi
ceux choisis sur T2.
ˆ Pour chaque arête sur T3, on regarde si l’arête équivalente existe sur
T4 (c’est à dire, si l’arête sur T3 relie les i-ème et j-ème noeuds de G’
sur T1, alors on cherche une arête sur T4 qui relie les i-ème et j-ème
noeuds choisis sur T2). Si cette arête n’existe pas, on refuse. Si cette
arête existe, alors on supprime les deux arêtes (celle sur T3 et celle
équivalente sur T4).
ˆ Lorsque T3 est vide, si T4 est également vide, on accepte.

Les 4 premières étapes sont simplement la copie de G’ sur T1/T3, et le


choix du sous-graphe G” dans G. L’étape 5 vérifie que les arêtes sont les
mêmes.

You might also like