\documentclass{exam} \usepackage[utf8]{inputenc} \usepackage[french]{babel} \usepackage[]{amsthm} %lets us use \begin{proof} \usepackage{amsmath,amsfonts} \usepackage[]{amssymb} %gives us the character \varnothing \usepackage{graphicx} \usepackage[langfont=caps]{complexity} \usepackage[T1]{fontenc} \usepackage{setspace} \usepackage{stmaryrd} % For llbracket && rrbracket \setstretch{1.5} \title{Algo1 - Devoir Maison} \author{Augustin LUCAS} \date\today %This information doesn't actually show up on your document unless you use the maketitle command below \begin{document} \maketitle %This command prints the title based on information entered above %Section and subsection automatically number unless you put the asterisk next to them. \section*{Exercice 1} \begin{questions} \question On considère l'algorithme glouton suivant: \begin{verbatim} Glouton(G=(V, E)): V' = V IS = {} Tant que V' n'est pas vide Soit v dans V' IS = IS u {v} V' = V'\{v et tous ses voisins} Renvoyer IS \end{verbatim} Alors, à chaque élément ajouté, on enlève au plus $d$ éléments. Donc $IS \geq \frac{\lvert V \rvert}{d+1}$ où $d$ est le degré maximum dans le graphe $G$. Alors, $IS \geq \frac{\lvert V \rvert}{d+1} \geq \frac{OPT}{d+1}$, donc est une $d+1$ approximation pour MIS. \question On considère l'algorithme glouton suivant: \begin{verbatim} Glouton(G=(V, E)): V' = V IS = {} Tant que V' n'est pas vide Soit v l'élément de plus petit degré de V' IS = IS u {v} V' = V'\{v et tous ses voisins} Renvoyer IS \end{verbatim} Alors, à chaque élément ajouté, on enlève au plus $d$ éléments car $G$ est $d$-dégénéré, et le sommet considéré est de degré minimal. Donc $IS \geq \frac{\lvert V \rvert}{d+1}$ où $d$ est le degré maximum dans le graphe $G$. Alors, $IS \geq \frac{\lvert V \rvert}{d+1} \geq \frac{OPT}{d+1}$, donc est une $d+1$ approximation pour MIS. \question On raisonne par induction sur $n$, le nombre de sommets du graphe. Pour tout $n \in \mathbb{N}^*$, on pose $H_n$: "Tout graphe $G=(V, E)$ tel que $\vert V \rvert = n$ est $\Delta(G)+1$-colorable". \paragraph{} Initialisation $(n=1)$: \\Soit $G$ le graphe à $1$ sommet. Alors, $\Delta(G) = 0$, et on vérifie bien que $G$ est $1$-colorable. On a donc $H_1$ vérifiée. \paragraph{} Hérédité: Supposons qu'il existe $n \in \mathbb{N}^*$ tel que $H_n$ soit vérifié. Montrons $H_{n+1}$. \\Soit $G=(V, E)$ un graphe à $n+1$ sommets. Soit $v \in V$, de degré quelconque. \\Par hypothèse d'induction, $G' = (V\backslash\{v\}, E\backslash\{vx, x \in V\})$ admet une $\Delta(G')+1$-coloration, on la note $c$, $c \subset V \times \llbracket 0; \Delta(G') \rrbracket$. Comme $\Delta(G') \leq \Delta(G)$, c'est (dans le pire cas) une $\Delta(G)+1$-coloration pour $G'$. \\On considère à nouveau $v$, comme il a au plus $\Delta(G)$ voisins, on peut choisir $n \in \llbracket 0; \Delta(G) \rrbracket$ tel que $c \cup \{(v, n)\}$ soit une $\Delta(G)+1$-coloration valide pour $G$. Alors, par principe d'induction, tout graphe $G$ est $\Delta(G)+1$-colorable. \question On raisonne par induction sur $n$, le nombre de sommets du graphe. Pour tout $n \in \mathbb{N}^*$, on pose $H_n$: "Tout graphe $G=(V, E)$ $d$-dégénéré tel que $\vert V \rvert = n$ est $d+1$-colorable". \paragraph{} Initialisation $(n=1)$: \\Soit $G$ le graphe à $1$ sommet. Alors, il est $0$-dégénéré et $1$-colorable. On a donc $H_1$ vérifiée. \paragraph{} Hérédité: Supposons qu'il existe $n \in \mathbb{N}^*$ tel que $H_n$ soit vérifié. Montrons $H_{n+1}$. \\Soit $G=(V, E)$ un graphe $d$-dégénéré pour un certain $d \in \mathbb{N}$, tel que $\lvert V \rvert = n+1$. Soit $v \in V$, de degré $d$. Un tel $v$ existe car $G$ est $d$-dégénéré. \\On pose $G' = (V\backslash\{v\}, E\backslash\{vx, x \in V\})$. $G'$ est $d$-dégénéré car est un sous graphe de $G$. Il admet donc une $d+1$-coloration par hypothèse d'induction, on la note $c$, $c \subset V \times \llbracket 0; d \rrbracket$. \\On considère à nouveau $v$. Comme il a exactement $d$ voisins, on peut choisir $n \in \llbracket 0; d \rrbracket$ tel que $c \cup \{(v, n)\}$ soit une $d+1$-coloration valide pour $G$. Alors, par principe d'induction, tout graphe $G$ $d$-dégénéré est $d+1$-colorable. \end{questions} \section*{Exercice 2} \begin{questions} \question La méthode naïve consiste à demander $M(\{s\})$ pour tout $s \in V$ jusqu'à trouver $s$ tel que $M(\{s\})$ renvoie "oui". \question (Pour un arbre binaire) On procède par diviser pour régner: pour traiter un noeud $a = N(r, g, d)$, On demande à l'oracle $M(\{r\})$, puis $M(\{g\})$, et en fonction du résultat, on effectue un appel récursif sur $g$, sur $d$, ou bien on renvoie $r$. En pseudocode, cela donne: \begin{verbatim} TrouverJeton: Entrée: a = N(r, g, d) Si M({r}) == "oui": Renvoyer r Si M(g) == "oui": Renvoyer TrouverJeton(g) Renvoyer TrouverJeton(d) \end{verbatim} À chaque appel de l'oracle, les ensembles interrogés induisent bien un sous-graphe de $T$. De plus, dans le pire cas, on aura fait $2 \log_2(\lvert V \rvert)$ appels à l'oracle, donc bien $\Theta(\log_2(\lvert V \rvert))$. \end{questions} \section*{Exercice 3} \begin{questions} \question On reprend les notations de l'énoncé, c'est à dire que l'on considère le triangle $T = u_0 u_1 u_2$, et que l'on rajoute deux sommets $v_1, v_2$ de sorte à remplacer l'arête $(u_0, u_1)$ par ($u_0, v_1), (v_1, v_2), (v_2, u_1)$ \begin{parts} \part En remplaçant l'arête $(u_0, u_1)$, on a supprimé autant de triangles dans $G$ qu'il y a de voisins communs à $u_0$ et $u_1$. De plus, aucun nouveau triangle n'a pu être formé, donc on a bien réduit le nombre total de triangles de $G$. Notons alors $G'$ le graphe $G$ après cette modification. Montrons que $\alpha(G') = \alpha(G) +1$ où $\alpha(G)$ est la taille du plus grand ensemble indépendant dans $G$. $\boxed{\geq}$ On considère $I$ un indépendant de $G$ tel que $\lvert I \rvert = \alpha(G)$. En particulier, on va s'intéresser à qui de $u_0$ et $u_1$ est dans $I$ (il y en au plus une). Alors, on pose: \[ I' = \left\{ \begin{aligned} & I\cup\{v_1\} \text{ si } u_1 \in I \\ & I\cup\{v_2\} \text{ sinon} \end{aligned} \right. \] On a bien $I'$ indépendant de $G'$, et $\lvert I' \rvert = \alpha(G) +1$. Donc $\alpha(G') \geq \alpha(G)+1$ $\boxed{\leq}$ Supposons par l'absurde que $\alpha(G') > \alpha(G) +1$. \\ Soit alors $I'$ indépendant de $G'$, $\lvert I' \rvert = \alpha(G) +k$ ($k > 1$) On procède alors par disjonction de cas: \begin{itemize} \item si $u_0, u_1 \in I'$, alors $v_1, v_2 \notin I'$. Donc $I \backslash \{u_0\}$ est un indépendant de $G$, \\de taille $\alpha(G)+k-1 > \alpha(G)$. Absurde ! \item si $u_0 \in I', u_1 \notin I'$, alors parmi, $v_1$ et $v_2$, au plus $v_2 \in I'$ On a alors $I \backslash \{v_2\}$ indépendant de $G$, \\de taille $\geq \alpha(G)+k-1 > \alpha(G)$. Ce qui est également absurde. \item le cas $u_0 \notin I', u_1 \in I'$ est similaire au cas précédent. \item enfin, si $u_0, u_1 \notin I'$, on a au maximum $v_1$ ou $v_2$ dans $I'$, donc l'indépendant $I'\backslash\{v_1, v_2\}$ de $G$ donne à nouveau une absurdité. \end{itemize} Finalement, $\alpha(G') = \alpha(G)+1$ \part Montrons que \textsc{IndependantSet} est NP-complet même si le graphe en entrée ne contient pas de triangle. Notons \textsc{IndependantSet$_\Delta$} ce nouveau problème. On a un certificat: un indépendant de taille au moins $k$. \\Montrons que\textsc{IndependantSet} $\leq_P$ \textsc{IndependantSet$_\Delta$} Soit $G=(V, E), k$ une instance du problème \textsc{IndependantSet}. Notons $\delta$ le nombre de fois que l'on doit appliquer la question 1a) pour obtenir un graphe $G'$ par $G$. \\On a que $\alpha(G') = \alpha(G)+\delta$. Donc \textsc{IndependantSet}$(G', k+\delta) \Longleftrightarrow$ \textsc{IndependantSet}$(G, k)$. Or $G'$ est sans triangles donc \textsc{IndependantSet}$_\Delta(G', k+\delta) \Longleftrightarrow \textsc{IndependantSet}(G, k)$. Alors, comme \textsc{IndependantSet} est NP-complet, \textsc{IndependantSet}$_\Delta$ est NP-complet. \end{parts} \question Montrons que \textsc{$\alpha$-And-$\omega$} est NP-Complet. On a un certificat: une clique et un indépendant de taille au moins $k$. Il s'agit maintenant d'établir une réduction. Montrons que \textsc{Clique} $\leq_{P}$ $\alpha$-AND-$\omega$. \\Soit $G = (V, E), k \in \mathbb{N}$ une instance de \textsc{Clique}. On pose $G' = (V\cup\{x_i\}_{i \in \llbracket 1; k \rrbracket}, E)$. \\On a alors un indépendant de taille $k$ de $G'$ évident: $(x_i)_{i \in \llbracket 1; k \rrbracket}$. Donc \textsc{$\alpha$-And-$\omega$}$(G') \Longleftrightarrow$ \textsc{Clique}$(G)$ Alors, comme \textsc{Clique} est NP-complet, on a que \textsc{$\alpha$-And-$\omega$} est NP-complet. \question Montrons que \textsc{$\alpha$-Or-$\omega$} est NP-Complet. On a un certificat: une clique ou un indépendant de taille au moins $k$. Il s'agit maintenant d'établir une réduction. Montrons que \textsc{IndependantSet} $\leq_{P}$ \textsc{$\alpha$-Or-$\omega$}. \\Soit $G = (V, E), k \in \mathbb{N}$ une instance de \textsc{IndependantSet}. On pose $G' = (V\cup\{x_i\}_{i \in \llbracket 1, \lvert E \rvert +1\rrbracket}, E)$. \\Alors, $G'$ ne peut pas contenir de clique de taille $k+\lvert E \rvert +1$, et contient un indépendant de taille au moins $k+\lvert E \rvert +1$ ssi $G$ contient un indépendant de taille au moins $k$. \\Donc \textsc{$\alpha$-Or-$\omega$}$(G', k+\lvert E \rvert +1) \Longleftrightarrow$ \textsc{IndependantSet}$(G, k)$ Alors, comme \textsc{IndependantSet} est NP-complet, \textsc{$\alpha$-Or-$\omega$} est NP-complet. \question $\star$ \end{questions} \section*{Exercice 4} On note donc $P[i]$ le prix d'un sandwich de longueur $i$ cm, et $n$ la longueur d'une baguette entière. Alors, on pose $T[i]:$ "le prix maximum que l'on puisse tirer d'une baguette de $i$ cm". On initialise $T[0] = 0$, puis pour tout $i$, $T[i] = \underset{j \in [i]}{max}(T[i-j]+T[j])$ On a donc l'algorithme suivant: \begin{verbatim} MeilleurPrix: Entrée: P tableau des prix de taille n T = Tableau de taille n T[0] := 0 Pour i allant de i à n: T[i] = max(T[i-j]+T[j]), j allant de 1 à i Renvoyer T[n] \end{verbatim} Le maximum s'effectue en $\mathcal{O}(n)$ donc l'algorithme est au total en $\mathcal{O}(n^2)$ \end{document}