Initial commit
This commit is contained in:
commit
d429be2b54
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
*.aux
|
||||||
|
*.log
|
||||||
|
*.pdf
|
241
DM1.tex
Normal file
241
DM1.tex
Normal file
@ -0,0 +1,241 @@
|
|||||||
|
\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}
|
Loading…
Reference in New Issue
Block a user