Algo1/DM1.tex
2024-09-13 09:02:48 +02:00

242 lines
12 KiB
TeX

\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}$$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}$$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$
$\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}