algorithmique (école d'ingénieur) · Chapitre 7 · Exercice de TD
Degrés et sources
Graphes sans circuit et ordonnancement de projets · niveau 2
Énoncé
Le degré sortant d'un sommet est le nombre d'arcs qui en partent, son degré entrant le nombre d'arcs qui y arrivent.
- Écrire
int[] degresSortants(Liste[] G)etint[] degresEntrants(Liste[] G)en , sans construire le graphe symétrique. - En déduire une fonction
Liste sources(Liste[] G)qui retourne la liste des sources du graphe, par numéros croissants. - Donner les deux tableaux de degrés pour le réseau de bus de l'exercice 7.2.
Corrigé
Un arc se lit dans la liste : il ajoute au degré sortant de et au degré entrant de .
static int[] degresSortants(Liste[] G) { int n = G.length;
int[] DS = new int[n];
for (int i = 0; i < n; i++)
for (Liste l = G[i]; !vide(l); l = reste(l)) DS[i]++;
return DS;
}
static int[] degresEntrants(Liste[] G) { int n = G.length;
int[] DE = new int[n];
for (int i = 0; i < n; i++)
for (Liste l = G[i]; !vide(l); l = reste(l)) DE[premier(l)]++; // arc i --> premier(l)
return DE;
}
static Liste sources(Liste[] G) {
int[] DE = degresEntrants(G);
Liste S = null;
for (int i = G.length - 1; i >= 0; i--) // i décroissants : liste croissante
if (DE[i] == 0) S = new Liste(i, S);
return S;
}
Les deux doubles boucles touchent chaque sommet et chaque arc une fois : . Sur le réseau de bus :
DS = [3, 2, 2, 1, 0], DE = [0, 1, 1, 2, 4]
La seule source est la ville .
100 % gratuit
La suite du chapitre est sur Adloun
- 11 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre : 2 minutes d'écoute sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours, le premier QCM et 2 minutes de podcast et de vidéo. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.