• Aucun résultat trouvé

Parcours d’un graphe : travaux pratiques

N/A
N/A
Protected

Academic year: 2022

Partager "Parcours d’un graphe : travaux pratiques"

Copied!
2
0
0

Texte intégral

(1)

NSI Lycée Louis de Foix

Parcours d’un graphe : travaux pratiques Implémenter les parcours : simple affichage

Ouvrir le fichier parcours.py.

Ce fichier contient quatre exemples de graphes. On demande d’implémenter les parcours en largeur et en profondeur, itératif et récursif, et de les tester sur ces quatre graphes, en affichant les noms des sommets dans l’ordre des parcours.

Utilisation d’une file pour le parcours en largeur : from collections import deque

file = deque([s]) : créer une file avec un élément s file.append(s) : enfiler s

file.popleft() : défiler

Dans l’instruction while file:, file est interprété comme False si file est vide, True sinon.

Utilisation d’une pile pour le parcours en profondeur itératif : pile = [s] : créer une pile avec un élément s

pile.append(s) : empiler s pile.pop(s) : dépiler s Remarque

On peut utiliser les listes Python pour simuler les files, avec append pour enfiler et pop(0) pour défiler, mais pop(0) s’exécute en temps linéaire et pas en temps constant, contrairement au popleft() des files du type deque.

Utiliser les parcours

1. Reprendre le parcours en largeur en stockant à chaque étape dans le dictionnaire des sommets découverts le sommet d’origine. Renvoyer le dictionnaire à la fin du parcours.

2. Écrire une fonction chemin(G, s1, s2) qui renvoie le chemin le plus court entre deux sommets s1 et s2.

3. Écrire une fonction sommets_par_niveaux(G, s) qui renvoie les sommets classés dans une liste de listes : [[s], [sommets à distance 1 de s], [sommets à distance 2 de s], …].

4. Écrire une fonction qui renvoie toutes les composantes connexes d’un graphe sous la forme d’une liste de liste de sommets.

(2)

NSI Lycée Louis de Foix

5. On considère la fonction de parcours suivant.

def parcours(G, s, chemin=None):

if chemin==None:

chemin = [s]

for v in G.voisins(s):

if v not in chemin:

parcours(G, v, chemin + [v]) a. De quel type de parcours s’agit-il ?

b. Expliquer les différences avec l’algorithme présenté dans le cours.

6. Écrire une fonction affichant les chemins hamiltoniens d’un graphe G, c’est-à-dire les chemins qui passent par tous les sommets une fois et une seule. Tester avec graphe_4.

7. Écrire une fonction afficher_cycle qui affiche les cycles d’un graphe non orienté G.

Remarque : Dans un graphe orienté, un cycle peut être de longueur 2 (deux sommets reliés entre eux dans les deux sens). Dans un graphe non orienté, un cycle est au moins de longueur 3.

La recherche de cycle dans un graphe orienté est plus simple : il suffit de parcourir le graphe en cherchant si le sommet de départ est dans les successeurs d’un sommet.

8. Écrire une fonction est_acyclique(G) renvoyant True si un graphe non orienté G est acyclique, False sinon.

9. a. Dans le réseau blabla, Luc poste une image. Est-ce possible qu’il retrouve son image dans les posts de quelqu’un qu’il suit ? Répondre d’abord en observant le graphe, puis utiliser une fonction qui renverra une réponse booléenne.

b. Même question après avoir rajouté un lien de Marie vers Kim.

Références

Documents relatifs

La matrice associée à un graphe orienté d'ordre n est une matrice carrée 1 2 de dimension n x n , où le terme de la i ième ligne et la j ième colonne est égal à 1. s'il existe

Le flux positif total sortant d’un sommet est défini symétriquement. Le flux net total en un sommet est égal au flux positif total sortant du sommet, moins le flux positif total

Nous considérons maintenant un treillis orthocomplémenté L quelconque et caractérisons la classe de graphes connexes admettant L comme treillis de séparabilité.. Dans

Nous montrons que le nombre de points isolés du graphe converge, sous certaines hypothèses, vers une loi de Poisson.. Nous prouvons aussi une loi forte des

On cherche à construire un arbre partiel (plus petit graphe connexe contenant tous les sommets) dont la somme des distances soit minimum parmi tous les arbres partiels du

a) Un graphe est un arbre ssi il existe une chaîne unique entre chaque paire de sommets distincts. c) Un graphe G sans cycle, de n sommets et n-1 arêtes est un

On considère un graphe dont les sommets sont numérotés de 1 à N. b) Quelle sera la matrice des prédécesseurs, P, de ces graphes dans laquelle la valuation de chaque

En justifiant, associer à chacun des 4 nuages de points qui suivent l’un des coefficients de corrélation, ainsi que les séries étudiées :.. rang mondial des écoles de