ENS Informatique MP PC 2008Sujet
Pas encore noté
Téléchargements
- Corrigé : pas encore disponible
- Rapport du jury : non disponible
Ces sujets peuvent vous intéresser
Pas encore de corrigé pour ce sujet : voici des sujets proches corrigés.
Lecture du sujet en ligne
L'énoncé complet, avec les formules et les figures, sans ouvrir le PDF.Afficher ou masquer la section
Lecture du sujet en ligne
L'énoncé complet, avec les formules et les figures, sans ouvrir le PDF.
Filière MP (groupe I)
INFORMATIQUE
Durée : 4 heures
L'usage de calculatrices électroniques de poche à alimentation autonome, non imprimantes et sans document d'accompagnement, est autorisé. Cependant, une seule calculatrice à la fois est admise sur la table ou le poste de travail, et aucun échange n'est autorisé entre les candidats.
Ce problème s'intéresse à la structure cyclique de certains graphes. La première partie porte sur le calcul d'un arbre couvrant et des cycles fondamentaux d'un graphe non orienté. La seconde partie étudie plusieurs algorithmes de calcul d'une base minimale de l'espace des cycles d'un graphe non orienté et pondéré. La seconde partie pourra être largement abordée même si la première n'a pas été complètement résolue.
Préliminaires
Pseudo-programmes, structures de données et algorithmes. Pour les questions demandant d'écrire un pseudo-programme, on utilisera un langage ou pseudo-langage au choix, avec les structures de données (tableaux uni- et multi-dimensionnels, listes, files, piles, etc.) et de contrôle (si, tant que, pour, etc.) usuelles. Les indices d'un tableau tab de taille
t vont de 1 à
t , et ses éléments seront notés
tab[1], …, tab[t] . Les déclarations de variables ne sont pas imposées. Les questions demandant de donner un algorithme n'imposent pas un pseudo-programme mais une description concise et précise, en français, de l'algorithme. Dans les deux cas, la qualité de la rédaction ainsi que les justifications (correction, coût) seront des éléments d'appréciation.
Estimations de coût. Le coût d'un algorithme ou d'un pseudo-programme est le nombre d'opérations élémentaires qu'il effectue dans le cas le pire : lecture ou écriture dans une variable ou une case de tableau, opération arithmétique (notamment : comparaison, addition, soustraction, multiplication) sur des entiers ou sur des éléments d'un corps, test, ajout ou suppression en tête de liste, empilement ou dépilement dans une pile, etc. On ne cherchera pas à calculer les coûts demandés exactement. Ils seront seulement estimés en ordre de grandeur, avec des expressions du type
O(m + n), O(mn^2 logn) , etc., où
m, n, … sont par exemple des paramètres en entrée de l'algorithme ou du pseudo-programme.
Autres conventions. On note
ℕ l'ensemble des entiers naturels. Si
x est un nombre réel alors
⌊x⌋ désigne le plus grand entier inférieur ou égal à
x . Pour
j ∈ ℕ et
k ∈ ℕ∖{0} , l'entier naturel égal à
j − ⌊j/k⌋k sera noté
jmodk . Pour un corps K , on note
K^(p × q) l'ensemble des matrices à
p lignes et
q colonnes, dont les éléments sont dans K . Ces matrices pourront être représentées par des tableaux bidimensionnels.
Définitions et notations
Les graphes considérés dans ce problème sont finis et non orientés. Pour
n ∈ ℕ∖{0} et
m ∈ ℕ , un graphe (fini, non orienté) à
n sommets et
m arêtes est un couple (
S, A ) où
S , l'ensemble des sommets du graphe, est identifié à
{1, 2, …, n} , et où
A , l'ensemble de ses arêtes, est un sous-ensemble de
{{s, t} : s ∈ S, t ∈ S, s ≠ t} de cardinal
m . Une arête
{s, t} ∈ A sera notée indistinctement (
s, t ) ou (
t, s ); on dira que
s est un voisin de
t dans le graphe et que
t est un voisin de
s dans le graphe.
On appelle chaîne de longueur
λ reliant
s à
t dans le graphe (
S, A ) toute suite
(s_0, s_1, s_2, …, s_λ) de sommets du graphe tels que
s_0 = s, s_λ = t et
(s_(i − 1), s_i) ∈ A pour
1 ≤ i ≤ λ . Un graphe est connexe si pour chaque paire
{s, t} de sommets il existe au moins une chaîne reliant
s à
t dans ce graphe. On dira qu'une chaîne est élémentaire si de plus
s_0, s_1, …, s_λ sont distincts deux à deux.
Une chaîne
(s_0, s_1, s_2, …, s_λ) dans le graphe forme un cycle élémentaire du graphe si
s_0 = s_λ, λ ≥ 3 et
s_1, s_2, …, s_λ sont distincts deux à deux. Soient
(s_i)_(0 ≤ i ≤ λ) et
(s_i^′)_(0 ≤ i ≤ λ) deux chaînes de même longueur et formant chacune un cycle élémentaire du graphe; s'il existe
j ∈ ℕ tel que, pour
1 ≤ i ≤ λ, s_i^′ = s_((i + j)modλ) alors on dira que ces deux chaînes forment le même cycle élémentaire.
Soit
G = (S, A) un graphe connexe. On appelle arbre couvrant de
G tout graphe (
S^′, A^′ ) connexe, sans cycle élémentaire, et tel que
S^′ = S et
A^′ ⊆ A . Étant donnés un arbre couvrant
T = (S, A^′) de
G et une arête
a = (s, t) ∈ A∖A^′ (si elle existe), le
cycle fondamental deG par rapport à
a , noté
φ_a , est le cycle élémentaire de
G obtenu en "fermant" avec l'arête
a la chaîne élémentaire reliant
s à
t dans
T . L'ensemble des cycles fondamentaux de
G par rapport à
T est
φ(G, T) = {φ_a : a ∈ A∖A^′} .
cycle fondamental de
Dans toute la suite,
G désigne un graphe connexe à
n sommets et
m arêtes. On supposera de plus que
G est donné par sa structure d'adjacence, c'est-à-dire par un tableau Adj de
n listes d'entiers tel que, pour
s ∈ {1, …, n}, Adj[s] est la liste (dans un ordre arbitraire) des voisins de
s dans
G . Les pseudo-programmes et les algorithmes demandés pourront exploiter toutes ces hypothèses sur
G .
Partie 1. Arbres couvrants et cycles fondamentaux
Question 1.1.
- (a) Montrer que le nombre de cycles élémentaires de
G est fini.
(b) Montrer queG admet au moins un arbre couvrant. - Montrer que tout arbre couvrant de
G a exactementn − 1 arêtes. - Écrire un pseudo-programme SansCycleElem qui, étant donné
G , détermine siG ne contient aucun cycle élémentaire. Pourquoi est-il correct et quel est son coût ?
Question 1.2.
- Donner la structure d'adjacence d'un arbre couvrant de
G = (S, A) pourS = {1, 2, 3, 4, 5} etA = {(1, 2), (1, 3), (1, 4), (2, 3), (3, 4), (3, 5), (4, 5)} . - Écrire un pseudo-programme ArbreCouvrant qui, étant donné
G , calcule la structure d'adjacence d'un arbre couvrant deG . Pourquoi est-il correct et quel est son coût ?
Question 1.3.
- Vérifier l'existence et l'unicité de la chaîne élémentaire utilisée à la fin de la partie Définitions et notations pour définir le cycle fondamental
φ_a . - Étant donné
T un arbre couvrant deG , on noteL_T la somme des longueurs des éléments deφ(G, T) .
(a) MajorerL_T en fonction den .
(b) On suppose ici quem = 1/2n(n − 1) . En calculant la valeur deL_T pour deux arbres couvrants deG , montrer que l'ordre de grandeur deL_T dépend deT . - (a) Écrire un pseudo-programme Phi qui, étant donné
G , calcule un ensemble de cycles fondamentaux deG (c'est-à-direφ(G, T) pourT un arbre couvrant quelconque deG ). Pourquoi est-il correct ?
(b) Exprimer, en le justifiant, le coût de Phi en fonction dem et de la somme des longueurs des cycles fondamentaux calculés.
Partie 2. Bases minimales de l'espace des cycles
Dans cette partie, on suppose que
G possède au moins un cycle élémentaire et qu'il est de plus pondéré. Un graphe est pondéré si à chaque arête
a est associé un réel positif ou nul, noté
w(a) et appelé poids de l'arête
a . Dans un graphe pondéré, le poids
w(σ) d'une chaîne
σ = (s_i)_(0 ≤ i ≤ λ) est nul si
λ = 0 , et égal à
∑_(i = 1)^λ w((s_(i − 1), s_i)) si
λ ≥ 1 . De plus, pour deux sommets
s et
t d'un graphe pondéré, on définit
δ(s, t) de la façon suivante : s'il n'existe pas de chaîne reliant
s à
t dans le graphe alors
δ(s, t) = + ∞ ; sinon,
On note K le corps fini à deux éléments, 0 et 1 . On suppose connu
T = (S, A^′) un arbre couvrant de
G = (S, A) , et on numérote les arêtes de
G de sorte que
A = {a_1, a_2, …, a_m} et
A∖A^′ = {a_1, a_2, …, a_N} avec
N = m − n + 1 . On appelle support tout sous-ensemble non vide de
A∖A^′ . Soit
E l'ensemble de tous les sous-ensembles de
A ; en particulier,
E contient
A et l'ensemble vide, noté
} . On appelle vecteur d'incidence d'un élément
e de
E l'unique vecteur
v = (v_i)_(1 ≤ i ≤ m) de
K^m tel que, pour
1 ≤ i ≤ m, v_i = 1 si
a_i ∈ e et
v_i = 0 sinon. On identifiera
E au K -espace vectoriel
K^m en identifiant chaque élément de
E à son vecteur d'incidence. Pour
e ∈ E et
f ∈ E , on notera
⟨e, f⟩ leur produit scalaire dans la base canonique
{{a_1}, {a_2}, …, {a_m}} : si
e = ∑_(i = 1)^m e_i{a_i} et
f = ∑_(i = 1)^m f_i{a_i} avec
e_i ∈ K et
f_i ∈ K pour
1 ≤ i ≤ m , alors
⟨e, f⟩ = ∑_(i = 1)^m e_i f_i ∈ K .
Si
C = (s_i)_(0 ≤ i ≤ λ) est un cycle élémentaire de
G , on le considère dans cette partie représenté par ses arêtes et on écrira
C = {(s_(i − 1), s_i)}_(1 ≤ i ≤ λ) ∈ E . On appelle cycle de
G un cycle élémentaire de
G ou une union de cycles élémentaires de
G disjoints deux à deux. L'espace des cycles de
G , noté
C(G) , est le K -sous-espace vectoriel de
E engendré par l'ensemble des cycles de
G . Le poids d'un cycle
C de
G est
w(C) = ∑_(a ∈ C)w(a) , la somme des poids des arêtes qui composent ce cycle; le poids d'une base
B de
C(G) est
w(B) = ∑_(C ∈ B)w(C) , la somme des poids des cycles qui composent cette base. Une base minimale de l'espace des cycles de
G est une base de
C(G) de poids minimal parmi toutes les bases de
C(G) .
Question 2.1.
- Soient
e ∈ E etf ∈ E .
(a) Soitα ∈ K . Quel sous-ensemble deA chacune des trois expressionsαe, − e ,e + f représente-t-elle?
(b) Caractériser en termes d'arêtes communes le fait que⟨e, f⟩ = 1 . - Soit
S un support. Montrer qu'il existeC ∈ C(G) tel que⟨C, S⟩ = 1 . - Montrer que
φ(G, T) est une base deC(G) .
On appelle BaseMinimale1 l'algorithme décrit ci-dessous en encadré :
pour i de 1 à N faire
Si \leftarrow un support tel que }\langle\mp@subsup{C}{k}{},\mp@subsup{S}{i}{}\rangle=0,1\leqk\leqi-
Ci \leftarrow un cycle de G de poids minimal tel que }\langle\mp@subsup{C}{i}{},\mp@subsup{S}{i}{}\rangle=
fin pour
Dans toute la suite et à l'exception de la question 2.5,
S_i et
C_i sont spécifiés comme à l'itération
i de BaseMinimale1.
Question 2.2.
Dans cette question, on suppose que
S_1, …, S_N et
C_1, …, C_N ont pu être trouvés par BaseMinimale1 et on étudie certaines propriétés des
C_i .
- Pour
2 ≤ i ≤ N , montrer queC_i est linéairement indépendant deC_1, …, C_(i − 1) . - Montrer que
{C_1, …, C_N} est une base minimale deC(G) .
Question 2.3.
On s'intéresse dans cette question au coût du calcul de
S_1, …, S_N indépendamment de
C_1, …, C_N . (On ignorera donc le coût du calcul de
C_1, …, C_N dans toute cette question.)
- (a) Soit
i ∈ {2, …, N} fixé. Écrire un pseudo-programme Support qui, étant donnés les vecteurs d'incidence des cyclesC_1, …, C_(i − 1) deG , calcule le vecteur d'incidence d'un supportS_i tel que⟨C_k, S_i⟩ = 0 pour1 ≤ k ≤ i − 1 .
(b) Donner en le justifiant le coût de Support. Quel coût total (en fonction de m) obtient-on alors pour{S_i}_(1 ≤ i ≤ N) avec cette méthode? - (a) Montrer comment calculer
{S_i}_(1 ≤ i ≤ N) en introduisant pour1 ≤ i ≤ N des ensembles de supports{R_j^((i))}_(i ≤ j ≤ N) qui vérifient les deux conditions suivantes :
- pour
1 ≤ i ≤ N, R_i^((i)), …, R_N^((i)) sont linéairement indépendants; -
⟨C_k, R_j^((i))⟩ = 0 pour1 ≤ k < i ≤ j ≤ N et2 ≤ i ≤ N .
(b) Réécrire l'algorithme BaseMinimale1 de façon à ce que l'itérationi calculeS_i ,C_i et, sii < N, R_(i + 1)^((i + 1)), …, R_N^((i + 1)) . Quel nouveau coût total (en fonction dem ) obtient-on pour{S_i}_(1 ≤ i ≤ N) ?
Question 2.4.
Soit
i ∈ {1, …, N} fixé. Dans cette question, on associe à
G = (S, A) et à
S_i le graphe signé
G_i défini de la façon suivante. Le graphe
G_i a
2n sommets distincts, obtenus en dupliquant les
n sommets de
G : pour
s ∈ S , on notera
s^+ et
s^− les deux sommets de
G_i correspondants; de plus, pour toute arête
(s, t) de
G :
- si
(s, t) ∉ S_i alorsG_i possède les deux arêtes(s^+, t^+) et(s^−, t^−) , chacune de poidsw((s, t)) ; - si
(s, t) ∈ S_i alorsG_i possède les deux arêtes(s^+, t^−) et(s^−, t^+) , chacune de poidsw((s, t)) .
- Soit
G = (S, A) oùS = {1, 2, 3, 4, 5} etA = {(2, 3), (4, 5), (1, 2), (1, 3), (1, 4), (1, 5)} . On suppose de plus quew(a) = 0 pour touta ∈ A . Dessiner les sommets et les arêtes deG etG_i pourS_i = {(2, 3), (4, 5)} . - Pour
s ∈ S donné, soitσ = (s_j)_(0 ≤ j ≤ λ) une chaîne reliants_0 = s^+ às_λ = s^− dansG_i .
(a) Montrer qu'àσ correspond un cycle deG , qu'on noteraC , tel quew(C) ≤ w(σ) et⟨C, S_i⟩ = 1 .
(b) On suppose queσ est représenté de façon partielle par un tableau chaine d'entiers tel que, pour1 ≤ j ≤ λ , chaine[j] = k sis_(j − 1) = s^α, s_j = t^β ,(s, t) = a_k etα, β ∈ { +, − } . Écrire un pseudo-programme qui calcule le vecteur d'incidence deC à partir de chaine. Quel est son coût ?
(c) Montrer que siw(σ) = min{δ(t^+, t^−) : t ∈ S} alorsw(C) = min{w(D) : D ∈ C(G) et⟨D, S_i⟩ = 1} . - On suppose disposer d'un algorithme PlusCourteChaine de coût
O(m + nlogn) qui, à partir deG , deS_i et d'un sommets deG , calcule le couple (distance, chaine) où distance= δ(s^+, s^−) et où chaine est la représentation partielle (définie à la question 2.4.2.(b)) d'une chaîneσ reliants^+ às^− dansG_i et telle quew(σ) = δ(s^+, s^−) .
(a) Écrire un pseudo-programme calculant le vecteur d'incidence deC_i à partir deG etS_i . Quel est son coût ?
(b) Conclure en exprimant le coût de l'algorithme BaseMinimale1 en fonction dem etn .
Question 2.5.
Dans cette question,
ω désigne un nombre réel tel que
2 ≤ ω < 2.39 , et on suppose disposer d'un algorithme MulMat de coût
O(p^ω) pour multiplier deux matrices de
K^(p × p) .
- (a) Soient
P ∈ K^(p × q) etQ ∈ K^(q × p) avec1 ≤ p ≤ q . Donner un algorithme qui calcule le produitPQ et exprimer son coût en fonction dep, q etω .
(b) SoitP ∈ K^(p × p) triangulaire et inversible. SoitQ ∈ K^(p × p) . Donner un algorithme qui calcule la matriceX ∈ K^(p × p) telle quePX = Q , et exprimer son coût en fonction dep etω . - Soient
p etq dansℕ tels quep + 2q ≤ N . SoientC_1, …, C_(p + q) des cycles deG , soientU_1, …, U_q, V_1, …, V_q des supports, et soitM ∈ K^(m × 2q) la matrice dont la colonnej est égale au vecteur d'incidence deU_j si1 ≤ j ≤ q et à celui deV_(j − q) siq < j ≤ 2q . Pour1 ≤ ℓ ≤ q , on suppose que les trois propriétés suivantes sont vérifiées :
-
⟨C_k, U_ℓ⟩ = 0 pour1 ≤ k ≤ p + ℓ − 1 ; -
⟨C_(p + ℓ), U_ℓ⟩ = 1 ; -
⟨C_k, V_ℓ⟩ = 0 pour1 ≤ k ≤ p .
On suppose de plus que
U_1, …, U_q et
V_1, …, V_q sont tels que la matrice
M a la structure suivante : pour
1 ≤ i ≤ m et
1 ≤ j ≤ 2q , l'élément situé sur la ligne
i et la colonne
j de
M est nul si
i > p + j et égal à 1 si
i = p + j .
(a) Montrer, en introduisant un système linéaire de la formePX = Q avec
P et
Q deux matrices de
K^(q × q) dont on explicitera les éléments, que l'on peut transformer
{V_ℓ}_(1 ≤ ℓ ≤ q) en un autre ensemble de supports, noté
{W_ℓ}_(1 ≤ ℓ ≤ q) et tel que
⟨C_k, W_ℓ⟩ = 0 pour
1 ≤ k ≤ p + q et
1 ≤ ℓ ≤ q .
(b) Proposer un algorithme MiseAJour qui calcule les vecteurs d'incidence deW_1, …, W_q à partir de ceux de
C_1, …, C_(p + q), U_1, …, U_q, V_1, …, V_q . Exprimer son coût en fonction de
m, q et
ω .
3. On suppose queN = 2^ν avec
ν ∈ ℕ et on fait la même hypothèse qu'à la question 2.4.3.
(a) Proposer un algorithme BaseMinimale2 qui calcule les vecteurs d'incidence d'une base minimale{C_1, …, C_N} de
C(G) à l'aide de MiseAJour.
(b) Montrer que le coût de BaseMinimale2 estO(m^2 n + mn^2 logn) . Pourquoi cet algorithme est-il correct ?
(a) Montrer, en introduisant un système linéaire de la forme
(b) Proposer un algorithme MiseAJour qui calcule les vecteurs d'incidence de
3. On suppose que
(a) Proposer un algorithme BaseMinimale2 qui calcule les vecteurs d'incidence d'une base minimale
(b) Montrer que le coût de BaseMinimale2 est
Pas de description pour le moment
