Adloun

algorithmique (école d'ingénieur) · Chapitre 7 · Exercice de TD

Toutes les lignes existent

Graphes sans circuit et ordonnancement de projets · niveau 2

Énoncé

Pour toutes villes , il existe une ligne directe de coût , rangé dans D[i][j] (les autres cases sont quelconques).

  • Donner la récurrence du coût minimum d'un trajet de à .
  • Écrire int[][] calculerMA(int[][] D), sans construire de graphe, et donner sa complexité.
  • Calculer , et un trajet optimal de à pour
104080130
255090
3060
20

Corrigé

  • Ici : et, pour , .
  • Le graphe symétrique est remplacé par une boucle sur :

static int[][] calculerMA(int[][] D) { int n = D.length;
    int[] M = new int[n], A = new int[n];
    M[0] = 0; A[0] = -1;
    for (int j = 1; j < n; j++) {
        M[j] = INFINI;
        for (int i = 0; i < j; i++)                   // pred(j) = [0:j]
            if (M[i] + D[i][j] < M[j]) { M[j] = M[i] + D[i][j]; A[j] = i; }
    }
    return new int[][] {M, A};
}

Le corps de la boucle intérieure s'exécute fois : , ce qui est bien puisque le graphe complet a arcs.

  • Exécution :

MD = [0, 10, 35, 60, 80], AD = [-1, 0, 1, 1, 3]
0--(10)-->1--(50)-->3--(20)-->4

nom : M
valeurs : 0 10 35 60 80
vert : 0 1 3 4
fleches : 0->1 1->2 1->3 3->4
legende : flèches de a(j) vers j ; en vert : le trajet 0, 1, 3, 4 (coût 80)

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 →