TD8 : Complexité :

EX 1

1.

Remarquons déjà que : comme il y a $2^n$ valuations possibles, s’il existe une suite d’applications d’opérations qui conduise de $s_{initial}$ à $s_{final}$, alors il en existe une de longueur inférieure à $2^n$ (à chaque opération, on modifie au moins une variable).

Étant donnée une suite d’applications d’opérations, on exécute les opérations de la numéoro $1$ à la numéro $2^n$, puis on renvoie True ssi elle convient.

2.

On réduit les MT calculant en espace $n^k$.

  • Variables :

    • $∀a∈𝛴, ∀p∈⟦1, n^k⟧, a_p$ : “Il y a un $a$ à la $p$-ième case de la bande”.
    • $∀p∈⟦1, \vert Q \vert⟧, q_p$ : “On est dans l’état $q_p$”
    • $∀p∈⟦1, n^k⟧, l_p$ : “La tête de lecture est la position $p$”.
  • $s_{init}$ : $w[0]0, w[1]_1, ⋯, w[\vert w \vert]{\vert w \vert}, l_0, q_{init}$ sont à True

    Le reste est à False.

  • $s_{final}$ : On suppose que la MT a une seule configuration acceptante.

    ex : $$0∧l_0∧q_f$

  • Opérations : Pour tout transition $q, a \mapsto q’, b, →$ et

    $∀p∈⟦1, n^k⟧$,

    • Condition : $l_p∧a_p∧q$
    • Mise à jour :

      • $l_p, a_p, q ← False$
      • $l_{p+1}, b_p, q ← True$

Les opérations sont de taille cste.

  • Taille des opérations : $\vert M \vert × n^k × cste$ : polynomial en $n$

  • Nb de variables : $\vert 𝛴 \vert × n^k + n^k + \vert Q\vert$ : polynomial.

  • $s_{init}, s_{final}$ : taille polynomiale.

PREUVE DE CORRECTION :

Th :

∀s, s_{init} ⟶^\ast s ⟺ \widetilde{s_{init}} \vdash_M \widetilde{s}

Preuve : Par induction sur $⟶^\ast$.

Lemme :

∀s, s_{init} ⟶^\ast s ⟹ ∀p∈⟦1, n^k⟧, ∃!a; s(a_p) = True ∧ ∃!i∈⟦1, n^k⟧; p_i = True ∧ ∃!i∈⟦1, n^k⟧; q_i = True

Preuve : Par induction sur la longueur de la réduction de $s_{init}$ vers $s$.

EX 2

3.

Un automate déterministe concurrent a un nombre fini $M = \prod_i^n M_i$ d’états (où $M_i$ est le nombre d’états de $A_i$)

L(A_1, A_2, ⋯, A_n) ≠ ∅ ⟺ ∃ w∈L(A_1, ⋯, A_n); \vert w\vert≤M

On ne peut pas simplement deviner un mot $w$ et tester s’il est dans $L(A_1, A_2, ⋯, A_n)$, car si $M$ est exponentiel, on n’est pas dans PSPACE.

Taille du compteur :

\log(M) ≤ \sum_i M_i

Taille mémorisation des états.

$q ⟵ q_{init}^N$

En posant

m ≝ 2^{\sum \vert M_i \vert}
For i=1 to m:

    Deviner une lettre a
    Si transition a possible:
        q ⟵ delta(q, a)
    Sinon :
        reject

Si q=q_final:
    Accept
Sinon:
    Reject

4.

  • $\lbrace x_i \rbrace_{i∈⟦1, n⟧}$
  • $\lbrace c_i \rbrace_{i∈⟦1, n⟧}$

$c_k =$

  • $\bigwedge_{i∈I_k}(x_i = 𝛼_{k,i})$
  • $\lbrace (x_i ⟵ 𝛽_{k,i})\rbrace_{i∈I’_k}$
digraph{
V_i -> {F_i, Puits_i}
F_i -> {V_i, Puits_i}
}
  • Si $i∈I_k∩I’_k$ :

    $𝛼_{k,i}⟶𝛽_{k,i}$

    $\overline{𝛼}_{k,i}⟶P_i$

  • Si $i∈I_k\backslash I’_k$ :

    $𝛼_{k,i}⟶P_i$

  • Si $i∈I’_k\backslash I_k$ :

    $V_i⟶𝛽_{k,i}$

    $F_i⟶𝛽_{k,i}$

  • $s_{init}, s_{final}$

  • $q_{i, initial} = s_{init}(i)$
  • $q_{i, final} = s_{final}(i)$

Nb d’arêtes : $2×\sum_k \vert I_k \vert$

Nb de sommets : $3×n$

Par construction, si on a une suite $(c_{k_i}){i∈⟦1,N⟧}$ d’opérations telle que $s{init} ⟶^{(c_{k_i})i} s{final}$.

Si $A$ accepte $k_1, ⋯, k_N$, $q_{initial} ⟶^{k_1, ⋯, k_N} q_{final}$

$∀i<N, q_{initial} ⟶^{k_1, ⋯, k_i} q_i$

Invariant :

$s_{initial} ⟶^{c_{k_1}, ⋯, c_{k_i}} s_i$, avec :

  • $s_{init} = \widetilde{q_{init}}$
  • $s_i = \widetilde{q_i}$
  • $q_N = q_{final}$
  • $s_N = s_{final}$

5.

$G=(V,E)$.

f(V', v, P) =
    Pour v'∈V\V':
        Si (v,v')∈E:
            Si f(V'∪{v'}, v', P') = Faux:
                retourner Vrai
    retourner Faux

Complexité spatiale en pire cas :

Au plus $\vert V \vert$ appels emboîtés.

Chaque appel utilise au plus $\vert V \vert + 2 + \lceil \log \vert V \vert \rceil$

⟶ en $O(\vert V\vert^2)$

Leave a Comment