NSI Terminale • Programme français, lycées de Montréal

Fiche de révision : diviser pour régner, programmation dynamique et graphes

Le chapitre d'algorithmique avancée est celui où les résultats se retiennent facilement et où les conditions d'application s'oublient : la dichotomie veut un tableau trié, le tri fusion garantit son coût, un glouton se démontre, un parcours marque ses sommets au bon moment. Presque tous les points perdus le sont sur une condition oubliée.

Cette fiche liste les huit erreurs qui reviennent dans les copies, avec la phrase exacte à écrire à la place et ce que chacune coûte au barème. L'algorithme de Dijkstra, que le programme ne nomme pas, est présenté à part. La recherche textuelle, dernier point d'algorithmique du programme avec l'algorithme de Boyer-Moore, a sa propre série, liée en bas de page.

Marque ici la fiche comme lue ou mets-la en favori : un compte gratuit, sans mot de passe, retient tes fiches lues et tes favoris d'une visite à l'autre, te dit quel chapitre attaquer ensuite et te permet de demander la méthode ou l'exercice qui te manque. Crée ton espace, un courriel suffit.

Le fil du chapitre

Diviser pour régner et programmation dynamique répondent à la même question, « ai-je déjà résolu ce sous-problème ? » : la première répond non par construction, la seconde répond oui et le retient.

Ce chapitre fait partie de NSI en Terminale
Pour s'entraîner Les exercices corrigés de ce chapitre, 15 exercices

Avant ce chapitre

Cette fiche suppose ces notions acquises. Si une méthode ci-dessous reste opaque, c'est presque toujours l'une d'elles qui manque, pas la fiche.

Remonter plus loin : la chaîne complète (4 chapitres) ↓

Le chemin de remédiation, du plus ancien au plus proche. Un élève qui reprend ce chapitre de zéro le reprend dans cet ordre.

  1. 1Python : types, contrôle, fonctions et tableauxPremière
  2. 2Algorithmique : preuve, terminaison et coûtPremière
  3. 3Révision : l'algorithmique de Première, récursivité et Horspool
  4. 4Structures de données : piles, files, arbres et graphes

L'essentiel

Les coûts à savoir citer, avec leur condition

  • • Recherche dichotomique : tableau TRIÉ obligatoire, ⌊log⁡2n⌋+1\lfloor \log_{2} n \rfloor + 1 comparaisons, soit 10 pour mille éléments.
  • • Tri fusion : nlog⁡2nn \log_{2} n GARANTI, stable, mais mémoire supplémentaire linéaire.
  • • Tri rapide, en approfondissement : nlog⁡2nn \log_{2} n EN MOYENNE, n2n^{2} au pire, en place, non stable. Au programme, l'exemple de diviser pour régner est le tri fusion.
  • • Parcours de graphe : O(n+m)O(n + m) avec des listes d'adjacence, O(n2)O(n^{2}) avec une matrice.

Dans une question de coût, écrire la condition en même temps que le résultat : « nlog⁡2nn \log_{2} n en moyenne » vaut le point, « nlog⁡2nn \log_{2} n » seul ne le vaut pas toujours.

Lire une récurrence de coût

  • • La récurrence se lit sur l'algorithme : combien d'appels, sur quelle taille, plus quel travail de recombinaison.
  • • C(n)=2C(n/2)+nC(n) = 2C(n/2) + n décrit le tri fusion : deux moitiés, plus une fusion linéaire, d'où nlog⁡2nn \log_{2} n.
  • • C(n)=C(n/2)+1C(n) = C(n/2) + 1 décrit la dichotomie : une seule moitié, plus une comparaison, d'où log⁡2n\log_{2} n.
  • • Méthode de l'arbre : au niveau kk il y a aka^{k} sous-problèmes de taille n/bkn/b^{k} ; on somme le travail par niveau, puis on multiplie par le nombre de niveaux.
travail ntravail ntravail ntravail ntri fusion : 3 niveaux de découpage, n par niveau
À chaque niveau, les morceaux rétrécissent mais leur total reste nn : le coût est donc nn multiplié par le nombre de niveaux, c'est-à-dire nlog⁡2nn \log_{2} n.

Glouton, dynamique, et ce qui les sépare

  • • Un algorithme GLOUTON fait le choix localement le meilleur et ne revient jamais dessus. Il est rapide et souvent FAUX.
  • • Un glouton doit être DÉMONTRÉ : sans preuve, il n'est qu'une heuristique, et le sujet demande un contre-exemple.
  • • La programmation dynamique s'applique quand le problème vérifie le PRINCIPE D'OPTIMALITÉ : une solution optimale est faite de solutions optimales de ses sous-problèmes.
  • • Elle range chaque valeur dans une table remplie de bas en haut, ce qui garantit que chaque sous-problème n'est résolu qu'une fois.

Le sac à dos, et son coût trompeur

  • • Relation : V(i,c)=max⁡(V(i−1,c), vi+V(i−1,c−pi))V(i, c) = \max(V(i-1, c),\ v_{i} + V(i-1, c - p_{i})) quand l'objet ii tient dans la capacité cc, et V(i−1,c)V(i-1, c) sinon.
  • • La table a nn lignes et C+1C+1 colonnes : le coût est nCnC.
  • • Ce coût est PSEUDO-POLYNOMIAL : il dépend de la VALEUR de la capacité, pas seulement du nombre d'objets, alors que la capacité s'écrit avec log⁡2C\log_{2} C bits.
  • • La reconstruction de la solution se lit à rebours dans la table, en comparant chaque case à celle du dessus.

Pour aller plus loin, hors programme : Dijkstra

  • • Le programme demande de parcourir un graphe, d'y repérer un cycle et d'y chercher un chemin ; il ne nomme pas l'algorithme de Dijkstra, qui n'est pas exigible. Il éclaire le routage OSPF.
  • • À chaque tour, on sélectionne le sommet NON TRAITÉ de plus petite distance provisoire, jamais le voisin le plus proche du dernier sommet traité.
  • • On relâche ensuite chaque arête sortante : si passer par le sommet choisi raccourcit, on met à jour la distance et le prédécesseur.
  • • Les poids doivent être POSITIFS : un poids négatif peut améliorer un sommet déjà traité, ce que l'algorithme n'envisage plus.
  • • Un sujet qui présente un poids négatif attend seulement le refus motivé : l'algorithme ne réexamine jamais un sommet déjà fixé.

Les pièges qui coûtent des points

Les erreurs ci-dessous sont celles que je corrige le plus souvent en séance. Chacune coûte des points sur une copie, même quand le raisonnement est juste.

1. Faire une dichotomie sans dire que le tableau est trié

2 points, et l'algorithme renvoie une réponse fausse sans erreur

Ce qu'il ne faut pas écrire

« Je cherche la valeur par dichotomie dans le tableau des relevés. »

Ce qu'il faut écrire

« La dichotomie exige un tableau TRIÉ : je le trie d'abord, ou je justifie qu'il l'est déjà. Le coût est alors ⌊log⁡2n⌋+1\lfloor \log_{2} n \rfloor + 1 comparaisons. »

Pourquoi : Sur un tableau non trié, la dichotomie élimine une moitié qui pouvait contenir la valeur : elle répond « absent » alors que la valeur est là. Rien ne le signale.

2. Annoncer un tri rapide en nlog⁡2nn \log_{2} n sans réserve

2 points, et c'est la question de comparaison des tris

Ce qu'il ne faut pas écrire

« Le tri rapide coûte nlog⁡2nn \log_{2} n, comme le tri fusion. »

Ce qu'il faut écrire

« nlog⁡2nn \log_{2} n EN MOYENNE. Au pire, avec un pivot fixe sur un tableau déjà trié, les partitions sont de tailles n−1n-1 et 00 : le coût devient n2n^{2}, soit 28 comparaisons pour n=8n = 8. »

pivot médian : 4 niveauxpivot fixe : 8 niveaux
Le même tableau de huit éléments : un pivot médian divise à chaque tour, un pivot fixe sur un tableau déjà trié n'enlève qu'un élément et produit huit niveaux au lieu de quatre.

Pourquoi : Le tri rapide n'a aucune garantie : c'est le choix du pivot qui décide de la forme de la récursion. Le tri fusion, lui, garantit ses nlog⁡2nn \log_{2} n quelle que soit l'entrée, et c'est lui que le programme donne en exemple ; l'étude du pivot est un approfondissement.

3. Croire que le tri fusion trie en place

1 point sur la question de comparaison, qui attend un critère par ligne

Ce qu'il ne faut pas écrire

« Le tri fusion est meilleur que le tri rapide sur tous les critères. »

Ce qu'il faut écrire

« Le tri fusion garantit nlog⁡2nn \log_{2} n et il est stable, mais il consomme une mémoire supplémentaire linéaire. Le tri rapide trie en place. »

Pourquoi : Aucun tri n'est meilleur sur tous les critères : coût garanti, stabilité, mémoire, comportement en pratique. Le sujet demande toujours de comparer selon plusieurs critères nommés.

4. Appliquer un algorithme glouton sans le démontrer

2 points, et le contre-exemple est explicitement demandé

Ce qu'il ne faut pas écrire

« Je prends à chaque fois la plus grande pièce possible, donc j'obtiens le nombre minimal de pièces. »

Ce qu'il faut écrire

« Le glouton n'est optimal que pour certains systèmes de pièces. Avec les pièces 1, 3 et 4 et la somme 6, il donne 4+1+14 + 1 + 1, soit trois pièces, alors que 3+33 + 3 en suffit deux. »

pièces 1, 3 et 4, rendre 6411glouton : 3 pièces33optimal : 2 pièces
La même somme rendue deux fois : le choix local de la plus grosse pièce interdit ensuite le découpage à deux pièces, et rien dans le déroulement glouton ne le signale.

Pourquoi : Un choix localement optimal peut fermer la porte à une meilleure solution globale. C'est exactement ce que la programmation dynamique évite, en examinant les deux possibilités à chaque étape.

5. Remplir la table de programmation dynamique dans le mauvais sens

1 point, et la complexité annoncée devient fausse

Ce qu'il ne faut pas écrire

« Je calcule V(n,C)V(n, C), puis les cases dont il dépend, et ainsi de suite. »

Ce qu'il faut écrire

« La table se remplit de BAS EN HAUT : chaque case n'utilise que des cases déjà calculées. Sinon on refait de la récursion, et le gain disparaît. »

Pourquoi : Tout l'intérêt de la programmation dynamique est que chaque sous-problème est résolu UNE fois. Remplir dans le désordre équivaut à une récursion sans mémoïsation.

6. Croire le sac à dos polynomial

2 points sur la question de recul, où le vocabulaire est noté

Ce qu'il ne faut pas écrire

« La table fait n×Cn \times C cases, donc l'algorithme est polynomial. »

Ce qu'il faut écrire

« Il est PSEUDO-polynomial : CC est une valeur, pas une taille d'entrée. La capacité s'écrit sur log⁡2C\log_{2} C bits, donc le coût est exponentiel en la taille de l'écriture de CC. »

Pourquoi : La complexité se mesure en fonction de la TAILLE de l'entrée, c'est-à-dire du nombre de bits. Une capacité d'un milliard tient sur trente bits et donne pourtant un milliard de colonnes.

7. Marquer un sommet quand on le retire de la file

1 à 2 points sur la question de parcours, et l'ordre de visite écrit devient faux

Ce qu'il ne faut pas écrire

« Dans mon parcours en largeur, je marque chaque sommet au moment où je le défile. »

Ce qu'il faut écrire

« Je marque un sommet au moment où je l'ENFILE : ainsi aucun sommet n'entre deux fois dans la file, et chacun est traité une seule fois. »

Pourquoi : Marqué trop tard, un sommet est ajouté par chacun de ses voisins déjà traités. Sur un graphe complet de 55 sommets, la file reçoit 1+4+3+2+1=111+4+3+2+1=11 entrées au lieu de 55.

8. Oublier le travail de recombinaison dans la récurrence

2 points sur la question de récurrence, celle qui demande de raisonner

Ce qu'il ne faut pas écrire

« Le tri fusion coupe en deux à chaque fois, donc C(n)=2C(n/2)C(n) = 2C(n/2), soit un coût linéaire. »

Ce qu'il faut écrire

« Il faut ajouter la FUSION, qui parcourt les nn éléments : C(n)=2C(n/2)+nC(n) = 2C(n/2) + n, d'où nlog⁡2nn \log_{2} n. »

Pourquoi : C'est ce terme additif qui distingue le tri fusion de la dichotomie : dans un cas on recombine tout, dans l'autre on jette une moitié. La récurrence est le seul endroit où cette différence se voit.

Quelle méthode choisir

Quelle stratégie, selon la forme des sous-problèmes

Regarder si les sous-problèmes se recoupent, et si un choix local peut se démontrer optimal.

  • Si les sous-problèmes sont DISJOINTS → diviser pour régner

    Exemple : tri fusion, dichotomie

    aucune valeur n'est calculée deux fois, donc rien à mémoriser

  • Si les sous-problèmes SE RECOUPENT → programmation dynamique, avec une table

    Exemple : rendu de monnaie, sac à dos

  • Si un choix local se démontre optimal → glouton, avec la preuve

    Exemple : le rendu de monnaie du système euro

  • Si un choix local semble optimal sans preuve → chercher un contre-exemple avant tout

    Exemple : pièces 1, 3, 4 et somme 6

    c'est ce que le sujet attend, pas une justification vague

Si aucune branche ne s'applique, il reste l'exploration exhaustive, à ne proposer qu'en disant son coût.

Quel algorithme de graphe, selon la question

Le mot de l'énoncé : « le moins d'étapes », « existe-t-il un chemin », « y a-t-il un cycle ».

  • Si « le moins d'étapes », arêtes non pondérées → parcours en largeur, avec une file

    Exemple : sortir d'un labyrinthe par le moins de cases possible

  • Si « existe-t-il un chemin », « les composantes » → parcours en profondeur, ou en largeur

    Exemple : tester la connexité

  • Si « y a-t-il un cycle » → parcours en profondeur, qui repère un sommet retrouvé alors qu'il est encore en cours de visite

    Exemple : des dépendances entre chapitres qui tournent en rond

  • Si « le chemin le plus court », avec des poids → Dijkstra, hors programme

    Exemple : un trajet avec des durées

    un énoncé qui s'en sert en rappelle la règle

Au programme : les parcours en largeur et en profondeur, la détection d'un cycle, la recherche d'un chemin. L'algorithme de Dijkstra, qui généralise le parcours en largeur à des arêtes pondérées, est un approfondissement.

La rédaction attendue

Le correcteur coche des étapes. Les voici dans l'ordre, avec la phrase de conclusion qu'il attend mot pour mot.

Dérouler un parcours en largeur dans un tableau

Quand l'utiliser : L'énoncé donne un graphe et demande l'ordre de visite depuis un sommet, ou le nombre minimal d'arêtes jusqu'aux autres.

  1. 1 Dresser un tableau à trois colonnes : le sommet défilé, les sommets enfilés à cette étape, le contenu de la file après l'étape.
  2. 2 Marquer chaque sommet au moment où on l'ENFILE, jamais au moment où on le défile.
  3. 3 Prendre les voisins dans l'ordre imposé par l'énoncé, le plus souvent l'ordre alphabétique, et le dire.
  4. 4 Noter pour chaque sommet enfilé sa distance : celle du sommet qui l'a découvert, plus un.
  5. 5 Conclure par l'ordre de visite et, si l'énoncé le demande, les distances en nombre d'arêtes.

Phrase de conclusion

« Graphe d'arêtes A-B, A-C, B-D, C-D et D-E, parcours en largeur depuis A, voisins pris dans l'ordre alphabétique. L'ordre de visite est A, B, C, D, E : D est marqué dès que B l'enfile, et C ne l'enfile pas une seconde fois. Les distances en nombre d'arêtes valent 00, 11, 11, 22 et 33. »

Le piège : Marquer au défilement : D entre deux fois dans la file, et le tableau montre une visite en double.

Barème : 1 point pour le tableau de la file, 1 point pour l'ordre de visite, 1 point pour les distances.

Réfuter un algorithme glouton

Quand l'utiliser : L'énoncé demande si une stratégie gloutonne est optimale.

  1. 1 Énoncer précisément la stratégie gloutonne, en une phrase : quel choix est fait à chaque étape.
  2. 2 Chercher une instance petite où le premier choix ferme une meilleure solution.
  3. 3 Dérouler le glouton sur cette instance, et donner son résultat.
  4. 4 Exhiber une meilleure solution sur la même instance, et comparer les deux valeurs.
  5. 5 Conclure que la stratégie n'est pas optimale, et indiquer la méthode qui l'est.

Phrase de conclusion

« Avec les pièces 1, 3 et 4, la stratégie gloutonne rend 6 par 4+1+14 + 1 + 1, soit trois pièces, alors que 3+33 + 3 n'en demande que deux : elle n'est donc pas optimale. La programmation dynamique, qui examine les deux possibilités à chaque étape, donne le minimum. »

Le piège : Affirmer que le glouton est faux sans exhiber d'instance : la question demande un contre-exemple, et lui seul est noté.

Barème : 1 point pour l'instance, 1 point pour le déroulé glouton, 1 point pour la meilleure solution, 1 point pour la conclusion.

Vérifier avant de rendre

Cinq minutes de vérification récupèrent plus de points qu'un exercice de plus commencé à la hâte.

L'exercice type décortiqué

Le rendu de monnaie : glouton contre programmation dynamique

On dispose des pièces de valeurs 1, 3 et 4, en quantité illimitée, et l'on veut rendre une somme SS avec le moins de pièces possible.

Tester la stratégie gloutonne sur S=6S = 6, puis écrire la solution par programmation dynamique et donner son coût.

Étape 1

Glouton sur S=6S = 6 : la plus grosse pièce possible est 4, il reste 2, puis 1 et 1. Résultat : trois pièces.

Pourquoi

Dérouler avant de juger : c'est le déroulé qui donne le contre-exemple, et le contre-exemple est ce que la question note. Affirmer sans dérouler ne rapporte rien.

Étape 2

Meilleure solution : 3+33 + 3, soit deux pièces. Le glouton n'est donc pas optimal pour ce système.

Pourquoi

Il faut exhiber la solution concurrente, pas seulement affirmer qu'elle existe. Deux nombres suffisent à clore la question.

Étape 3

Table : m[s]m[s] est le nombre minimal de pièces pour la somme ss, avec m[0]=0m[0] = 0.

Pourquoi

Nommer la table et sa signification en français est la première ligne du barème. Une table dont on ne dit pas ce qu'elle contient ne peut pas être justifiée ensuite.

Étape 4

Relation : m[s]=1+min⁡(m[s−1], m[s−3], m[s−4])m[s] = 1 + \min(m[s - 1],\ m[s - 3],\ m[s - 4]), en n'utilisant que les termes dont l'indice est positif ou nul.

Pourquoi

La relation traduit le principe d'optimalité : la meilleure façon de rendre ss passe par la meilleure façon de rendre le reste après une pièce. C'est la phrase que le correcteur cherche.

Étape 5

Remplissage de bas en haut : m[1]=1m[1] = 1, m[2]=2m[2] = 2, m[3]=1m[3] = 1, m[4]=1m[4] = 1, m[5]=2m[5] = 2, m[6]=2m[6] = 2.

Pourquoi

Le sens de remplissage garantit que chaque case n'utilise que des cases déjà connues. C'est aussi le contrôle : m[6]=2m[6] = 2 retrouve la solution 3+33 + 3 que le glouton avait manquée.

Étape 6

Coût : une case par somme de 0 à SS, et trois comparaisons par case, soit O(S)O(S) ici, et O(S×p)O(S \times p) pour pp types de pièces.

Pourquoi

Le coût dépend de la VALEUR de SS, pas du nombre de chiffres qui l'écrivent : c'est le même caractère pseudo-polynomial que le sac à dos, et le dire vaut le point de recul.

Conclusion rédigée

« La stratégie gloutonne rend 6 par 4+1+14 + 1 + 1, soit trois pièces, alors que 3+33 + 3 en suffit deux : elle n'est pas optimale pour ce système. La programmation dynamique, fondée sur m[s]=1+min⁡(m[s−1],m[s−3],m[s−4])m[s] = 1 + \min(m[s-1], m[s-3], m[s-4]) et remplie de bas en haut, donne m[6]=2m[6] = 2, pour un coût proportionnel à SS multiplié par le nombre de types de pièces. »

L'erreur classique sur cet exercice : Conclure que le glouton est faux « en général » sans exhiber l'instance : la question demande un contre-exemple, et une affirmation générale ne vaut aucun point.

À savoir par cœur

  • • Dichotomie : tableau TRIÉ, ⌊log⁡2n⌋+1\lfloor \log_{2} n \rfloor + 1 comparaisons.
  • • Tri fusion : nlog⁡2nn \log_{2} n GARANTI, stable, mémoire linéaire. C'est l'exemple du programme.
  • • Récurrence : ne jamais oublier le terme de recombinaison. 2C(n/2)+n2C(n/2) + n et non 2C(n/2)2C(n/2).
  • • Un glouton se DÉMONTRE. Contre-exemple type : pièces 1, 3, 4 et somme 6.
  • • Programmation dynamique : principe d'optimalité, table remplie de BAS EN HAUT.
  • • Sac à dos : coût nCnC, PSEUDO-polynomial car CC est une valeur, pas une taille.
  • • Parcours en largeur : une FILE, chaque sommet marqué quand on l'ENFILE ; il donne les distances en nombre d'arêtes. Profondeur : une pile, ou la récursivité.

Questions fréquentes

Pourquoi la recherche dichotomique exige-t-elle un tableau trié ?

Parce qu'elle élimine une moitié du tableau à chaque comparaison, en se fondant sur l'ordre : si la valeur cherchée est plus petite que celle du milieu, elle ne peut être que dans la moitié gauche. Sans tri, cette déduction est fausse et l'algorithme répond que la valeur est absente alors qu'elle est présente, sans lever la moindre erreur.

Le tri rapide est-il vraiment plus rapide que le tri fusion ?

En moyenne oui, en pratique, parce qu'il trie en place et manipule bien la mémoire. Mais il n'offre aucune garantie : avec un pivot fixe sur un tableau déjà trié, son coût devient quadratique. Le tri fusion garantit son coût quelle que soit l'entrée et il est stable, au prix d'une mémoire supplémentaire proportionnelle à la taille.

Comment savoir si un algorithme glouton est optimal ?

Il faut le démontrer, jamais le supposer. La démarche attendue au bac est inverse : on cherche d'abord une petite instance où le choix local ferme une meilleure solution. Avec les pièces 1, 3 et 4, rendre 6 donne quatre plus un plus un, soit trois pièces, alors que trois plus trois n'en demande que deux. Le glouton est alors réfuté en trois lignes.

Quelle différence entre diviser pour régner et programmation dynamique ?

Diviser pour régner découpe en sous-problèmes disjoints, si bien qu'aucune valeur n'est calculée deux fois et qu'il n'y a rien à mémoriser. La programmation dynamique s'applique quand les sous-problèmes se recoupent : elle range chaque résultat dans une table, remplie de bas en haut, pour ne jamais recalculer la même chose.

Quelle différence entre parcours en largeur et parcours en profondeur ?

Les deux parcours ont le même squelette. Le parcours en largeur range les sommets à visiter dans une file, le parcours en profondeur dans une pile ou par des appels récursifs. La largeur visite les sommets par distance croissante au départ et trouve donc un chemin avec le moins d'arêtes ; la profondeur s'enfonce le plus loin possible, et sert à repérer un cycle ou à sortir d'un labyrinthe.

Passer à la pratique

Exercices corrigés : Diviser pour régner, programmation dynamique et graphes

Une méthode se prouve sur une copie, pas sur une fiche. La série du même chapitre reprend chacun de ces pièges dans un exercice, avec le corrigé rédigé étape par étape.

  • 15 exercices corrigés
  • 150 points
  • 255 minutes
Faire les exercices
Il manque quelque chose dans cette fiche ? Une méthode, un piège, un exercice pour l'appliquer, une erreur repérée : dis-le-moi, je lis chaque demande.

L'envoi passe par ton espace gratuit : c'est ce qui me permet de te répondre et de te prévenir quand l'exercice est ajouté. Un courriel suffit, pas de mot de passe. Crée ton espace. Pas envie de créer un compte ? Écris-moi directement.

De quoi s'agit-il ?
Je lis chaque demande moi-même, personne d'autre ne la voit. Inutile d'écrire ton nom ou celui de ton école.
Quand ta demande est traitée, tu es prévenu par courriel et dans ton espace.

En envoyant, tu acceptes que je lise ta demande pour y répondre. Elle est gardée avec ton compte, effacée avec lui, et jamais publiée : politique de confidentialité.

Fiche précédente Récursivité, objet, mise au point et calculabilité Fiche suivante Recherche textuelle : Boyer-Moore et Horspool

Ce chapitre resservira dans

Les chapitres qui le réclament en amont, plus tard dans l'année ou dans les années suivantes.

© Ahmed Squalli Houssaini. Fiche publiée sur www.letuteurscientifique.ca/fiches/tnsi-algorithmique-avancee. Libre pour l'usage personnel et en classe ; sa republication ailleurs demande une autorisation écrite (mentions légales).

Voir aussi

Vous cherchez un tuteur en NSI à Montréal ?

Contactez-moi pour une première séance. On reprend les points de méthode qui font perdre des points en évaluation, puis on les met à l'épreuve sur des exercices du niveau réel de l'examen.

Site par Studio Squalli