Vertex cover randomisé
Bonjour,
je dois résoudre un problème et je me demandais si mon raisonnement est correct et vous sollicite ainsi pour vos retours.
Le problème est le suivant:
soit $G = (V, E)$ un graph. Afin de construire un vertex cover $S$ pour $G$, on considère l'algorithme suivant:
On initialise $S = \emptyset$
On itère sur chaque arête $e = \{u,v\} \in E$. Si aucun sommet dans $S$ ne couvre $e$ alors on sélectionne avec une probabilité $p= 0.5$ le sommet $u$, sinon le sommet $v$. On ajoute ce sommet à $S$.
Soit $S_i$ l'ensemble des sommets sélectionnés après la $i$-ème itération et soit $S^*$ la solution optimale. Montrer que l'inégalité
\mathbb{E}[|S_i \cap S^*|] \geq \mathbb{E}[|S_i \setminus S^*|]
$$
est toujours vraie.
Voici ma solution :
Preuve par induction sur $i$:
Case de base (BC): $i=1$ On considère une arête $\{u,v\} \in E$
Il faut montrer que $\mathbb{E}[|S_1 \cap S^*|] \geq \mathbb{E}[|S_1 \setminus S^*|]$ avec
$\mathbb{E}[|S_1 \cap S^*|] = 1 \cdot \mathbb{P}(|S_1 \cap S^*| = 1)$
Notons que $|S_1 \setminus S^*| = 1 \iff |S_1 \cap S^*| = 0$
$\mathbb{E}[|S_1 \setminus S^*|] = 1 \cdot \mathbb{P}(|S_1 \setminus S^*| = 1) = 1-\mathbb{P}(|S_1 \cap S^*| = 1)$
Par définition, dans un vertex cover une arête est couverte par au minimum un de ses sommets. Ainsi:
$\mathbb{P}(\{u,v\} \subset S^*) \geq 0$ donc $\mathbb{P}(u \in S^*) \geq 0.5$ et $\mathbb{P}(v \in S^*) \geq 0.5$
Ainsi
\begin{align*} \mathbb{P}(|S_1 \cap S^*| = 1) &= \mathbb{P}\underbrace{(\underbrace{\{u\in S_1, \,u\in S^*\}}_{\text{indépendance}} \sqcup \underbrace{\{v \in S_1 ,\, v \in S^*\}}_{\text{indépendance}})}_{\text{disjoints}} \\[5pt] & = \mathbb{P}(u\in S_1)\cdot \mathbb{P}(u\in S^*) + \mathbb{P}(v\in S_1)\cdot \mathbb{P}(v\in S^*)\\[5pt] & \geq 0.5 \cdot 0.5 + 0.5 \cdot 0.5 = 0.5 \end{align*}
$$
$\implies$
\mathbb{E}[|S_1 \cap S^*|] = \mathbb{P}(|S_1 \cap S^*| = 1) \geq 0.5 \\[10pt] \mathbb{E}[|S_1 \setminus S^*|] = \mathbb{P}(|S_1 \setminus S^*| = 1) = 1 - \mathbb{P}(|S_1 \cap S^*| = 1) \leq 0.5
$$
Hypothèse de l'induction (IH)
Pour tout itération $k, k \in \mathbb{N}$ l'inégalité $\mathbb{E}[|S_k \cap S^*|] \geq \mathbb{E}[|S_k \setminus S^*|]$ est vraie
$k \leadsto k+1$
il faut montrer que $\mathbb{E}[|S_{k+1} \cap S^*|] \geq \mathbb{E}[|S_{k+1} \setminus S^*|]$
Cas: l'arête considérée lors de l'itération $k+1$ est déjà couverte par un sommet dans $S_{k}$
$S_{k+1} = S_{k}$
\implies \mathbb{E}[|S_{k+1} \cap S^*|] = \mathbb{E}[|S_{k} \cap S^*|] \stackrel{\text{(IH)}}{\geq}\mathbb{E}[|S_k \setminus S^*|]= \mathbb{E}[|S_{k+1} \setminus S^*|]
$$
Cas: l'arête considérée lors de l'itération $k+1$ n'est pas couverte
\begin{align*} \mathbb{E}[|S_{k+1} \cap S^*|] &= \mathbb{E}[|S_{k} \cap S^*| + |S_{1} \cap S^*|]\\[5pt] &\stackrel{\text{lin.}}{=} \underbrace{\mathbb{E}[|S_{k} \cap S^*|]}_{\stackrel{\text{(IH)}}{\geq} \mathbb{E}[|S_{k} \setminus S^*|]} + \underbrace{\mathbb{E}[|S_{1} \cap S^*|]}_{\stackrel{\text{(BC)}}{\geq} \mathbb{E}[|S_{1} \setminus S^*|]} \\[5pt] &\geq \mathbb{E}[|S_{k}\setminus S^*| + |S_{1}\setminus S^*|] = \mathbb{E}[|S_{k+1}\setminus S^*|] \end{align*}
$$
Je me demande en particulier si la première étape $i=1$ est correcte ou s'il eut plutôt fallu faire au cas par cas avec d'abord:
- $u \in S^* \land v \notin S^*$
- ensuite $u \notin S^* \land v \in S^*$
- et enfin $u \in S^* \land v \in S^*$
Réponses
-
Pour $i = 0$, c'est encore plus simple car $S_0 = \varnothing$ donc les 2 espérances sont nulles.Tu peux initialiser à 1 si tu préfères mais cela te force à faire 2 fois la preuve d'hérédité.
-
Merci pour la réponse, je crois que $i$ est défini dans l'énoncé comme étant un naturel non nul. Je viens de voir que j'avais initialisé à $i=0$ et j'ai corrigé.
Merci pour la remarque.
-
Mais tu te ferais beaucoup moins suer en initialisant à $i = 0$ justement...
-
Quelque chose doit m'échapper, je ne vois pas comment je pourrais utiliser l'inégalité
$$
\mathbb{E}[|S_1 \cap S^*|] \geq \mathbb{E}[|S_i \setminus S^*|]
$$
lors de l'hérédité $k \leadsto k+1$ si je ne l'ai pas auparavant montré. Or c'est justement ce que je montre en initialisant $i=1$.
-
Ce que je dis, c'est que tu commences par montrer $H(0) \Rightarrow H(1)$ pour l'initialisation (donc l'hérédité dans le cas particulier $k= 0$) puis tu montres $\forall k, H(k) \Rightarrow H(k+1)$.Une méthode qui te ferait gagner du temps et de la place serait de montrer $H(0)$ (qui est trivial) puis de montrer $\forall k, H(k) \Rightarrow H(k+1)$. Cela conclut également et t'évite de faire 2 fois une preuve d'hérédité.
-
J'ai enfin compris! Merci bien
Bonjour!
Catégories
- 165.1K Toutes les catégories
- 59 Collège/Lycée
- 22.1K Algèbre
- 37.5K Analyse
- 6.3K Arithmétique
- 58 Catégories et structures
- 1.1K Combinatoire et Graphes
- 13 Sciences des données
- 5.1K Concours et Examens
- 20 CultureMath
- 51 Enseignement à distance
- 2.9K Fondements et Logique
- 10.7K Géométrie
- 83 Géométrie différentielle
- 1.1K Histoire des Mathématiques
- 79 Informatique théorique
- 3.9K LaTeX
- 39K Les-mathématiques
- 3.5K Livres, articles, revues, (...)
- 2.7K Logiciels pour les mathématiques
- 24 Mathématiques et finance
- 337 Mathématiques et Physique
- 5K Mathématiques et Société
- 3.3K Pédagogie, enseignement, orientation
- 10.1K Probabilités, théorie de la mesure
- 801 Shtam
- 4.2K Statistiques
- 3.8K Topologie
- 1.4K Vie du Forum et de ses membres