Adloun

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) et int[] 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

Exercice suivant et tuteur

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.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →