nsi:terminales:graphes:dijkstra
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| nsi:terminales:graphes:dijkstra [2021/11/08 19:40] – ↷ Page déplacée de nsi:terminales:dijkstra à nsi:terminales:graphes:dijkstra goupillwiki | nsi:terminales:graphes:dijkstra [2021/11/12 16:41] (Version actuelle) – goupillwiki | ||
|---|---|---|---|
| Ligne 3: | Ligne 3: | ||
| Pour les besoins de cette partie, considérons un réseau constitué de routeurs, sur lequel on indique les distances entre routeurs. | Pour les besoins de cette partie, considérons un réseau constitué de routeurs, sur lequel on indique les distances entre routeurs. | ||
| - | {{ : | + | {{ : |
| On souhaite trouver le plus court chemin entre deux sommets. | On souhaite trouver le plus court chemin entre deux sommets. | ||
| Ligne 20: | Ligne 20: | ||
| Sélection du sommet de départ R1. On lui affecte une pondération de 0 puisque la distance |R1,R1| est 0. Tous les autres sont affectés pour l' | Sélection du sommet de départ R1. On lui affecte une pondération de 0 puisque la distance |R1,R1| est 0. Tous les autres sont affectés pour l' | ||
| - | {{ : | + | {{ : |
| ==== Étape 2 ==== | ==== Étape 2 ==== | ||
| Ligne 28: | Ligne 28: | ||
| En empruntant l' | En empruntant l' | ||
| - | {{ : | + | {{ : |
| ==== Étape 3 ==== | ==== Étape 3 ==== | ||
| Ligne 34: | Ligne 34: | ||
| Parmi tous les non pris, R3 est le plus proche de R1. On le sélectionne donc. On avait mis en surbrillance l' | Parmi tous les non pris, R3 est le plus proche de R1. On le sélectionne donc. On avait mis en surbrillance l' | ||
| - | {{ : | + | {{ : |
| ==== Étape 4 ==== | ==== Étape 4 ==== | ||
| Ligne 40: | Ligne 40: | ||
| R3 étant le dernier pris, on examine ses voisins non pris, R4 et R5. Puisque |R1,R3| = 1 et que R3 - R4 est pondéré 1, cela ferait, en passant par R3, |R1,R4| = 2 ce qui est mieux que le |R1,R4| = 3 antérieur. On change donc le poids de R4 en le mettant à 2. Il vaut donc mieux arriver à R4 depuis R3. On désélectionne l' | R3 étant le dernier pris, on examine ses voisins non pris, R4 et R5. Puisque |R1,R3| = 1 et que R3 - R4 est pondéré 1, cela ferait, en passant par R3, |R1,R4| = 2 ce qui est mieux que le |R1,R4| = 3 antérieur. On change donc le poids de R4 en le mettant à 2. Il vaut donc mieux arriver à R4 depuis R3. On désélectionne l' | ||
| - | {{ : | + | {{ : |
| ==== Étape 5 ==== | ==== Étape 5 ==== | ||
| Ligne 46: | Ligne 46: | ||
| Le meilleur sommet est maintenant R4. On le place parmi les pris. On sait aussi maintenant que la meilleure arête pour atteindre R4 sera R3 - R4 (en vert) et que cela ne changera plus. | Le meilleur sommet est maintenant R4. On le place parmi les pris. On sait aussi maintenant que la meilleure arête pour atteindre R4 sera R3 - R4 (en vert) et que cela ne changera plus. | ||
| - | {{ : | + | {{ : |
| ==== Étape 6 ==== | ==== Étape 6 ==== | ||
| Ligne 52: | Ligne 52: | ||
| Examen des voisins non pris de R4. Pas de commentaires pour R6 et R7. Si on voulait atteindre R2 en passant par R4, cela donnerait |R1,R2| = 7 ce qui est moins bien que |R1,R2| = 4 que l'on avait déjà. L' | Examen des voisins non pris de R4. Pas de commentaires pour R6 et R7. Si on voulait atteindre R2 en passant par R4, cela donnerait |R1,R2| = 7 ce qui est moins bien que |R1,R2| = 4 que l'on avait déjà. L' | ||
| - | {{ : | + | {{ : |
| ==== Étape 7 ==== | ==== Étape 7 ==== | ||
| Ligne 58: | Ligne 58: | ||
| Le meilleur sommet suivant est R2... | Le meilleur sommet suivant est R2... | ||
| - | {{ : | + | {{ : |
| ==== Étape 8 ==== | ==== Étape 8 ==== | ||
| Ligne 64: | Ligne 64: | ||
| Le dernier voisin de R2 a envisager est R7, mais l' | Le dernier voisin de R2 a envisager est R7, mais l' | ||
| - | {{ : | + | {{ : |
| ==== Étape 9 ==== | ==== Étape 9 ==== | ||
| Ligne 70: | Ligne 70: | ||
| Sélection de R6... | Sélection de R6... | ||
| - | {{ : | + | {{ : |
| ==== Étape 10 ==== | ==== Étape 10 ==== | ||
| Ligne 76: | Ligne 76: | ||
| Le passage par R6 n' | Le passage par R6 n' | ||
| - | {{ : | + | {{ : |
| ==== Étape 11 ==== | ==== Étape 11 ==== | ||
| Ligne 82: | Ligne 82: | ||
| Sélection de R5 qui n'a plus de voisins à examiner. | Sélection de R5 qui n'a plus de voisins à examiner. | ||
| - | {{ : | + | {{ : |
| ==== Étape 12 ==== | ==== Étape 12 ==== | ||
| Ligne 88: | Ligne 88: | ||
| Sélection de R7 qui n'a lus de voisins à examiner. | Sélection de R7 qui n'a lus de voisins à examiner. | ||
| - | {{ : | + | {{ : |
| À la fin de cet algorithme, on sait à la fois la plus courte distance menant d'un certain sommet (ici R1) jusque tous les autres, et aussi les chemins permettant de réaliser ces plus courtes distances. | À la fin de cet algorithme, on sait à la fois la plus courte distance menant d'un certain sommet (ici R1) jusque tous les autres, et aussi les chemins permettant de réaliser ces plus courtes distances. | ||
| Ligne 97: | Ligne 97: | ||
| Faites le même travail, à partir de R1, avec le graphe suivant : | Faites le même travail, à partir de R1, avec le graphe suivant : | ||
| - | {{ : | + | {{ : |
| </ | </ | ||
| Ligne 105: | Ligne 105: | ||
| ==== À faire ==== | ==== À faire ==== | ||
| - | Écrivez en pseudo-code une version de l' | + | * Écrivez en pseudo-code une version de l' |
| - | + | * Implémentez | |
| - | Vous pourrez utiliser des fonctions comme //ajouter sommet à la liste des pris//, ou //extraire le sommet de plus petit poids parmi les non pris// ou // | + | |
| - | </ | + | |
| - | + | ||
| - | ==== Graphe pondéré ==== | + | |
| - | + | ||
| - | Vous disposez déjà d'une classe pour graphe orienté. | + | |
| - | + | ||
| - | Modifier cette classe pour permettre l' | + | |
| - | + | ||
| - | <WRAP tip> //Remarque un peu technique// | + | |
| - | + | ||
| - | On définit une classe pour un graphe non pondéré. On souhaite ajouter des pondérations. Certaines caractéristiques du graphe ne dépendent pas de la pondération et ne devraient donc pas être modifiées. Par exemple les relations de voisinage, la liste des sommets, la matrice d' | + | |
| - | + | ||
| - | D'une façon générale, il faut songer que l' | + | |
| - | </ | + | |
| - | + | ||
| - | <WRAP tip>=== Notion d' | + | |
| - | + | ||
| - | Les classes proposent un mécanisme appelé héritage. Supposons que j'ai créé une classe appelée '' | + | |
| - | + | ||
| - | <code python> | + | |
| - | from graph import Graph | + | |
| - | + | ||
| - | class WGraph(Graph): | + | |
| - | # WGraph récupère tout le contenu de Graph | + | |
| - | # on peut préciser des modifications ou des ajouts | + | |
| - | </ | + | |
| - | </ | + | |
| - | + | ||
| - | <WRAP box>=== À faire === | + | |
| - | + | ||
| - | * Implémentez la classe '' | + | |
| - | * Implémentez l' | + | |
| </ | </ | ||
nsi/terminales/graphes/dijkstra.1636396802.txt.gz · Dernière modification : de goupillwiki
