TP2 Python : Graphes

publicité
TP2 Python : Graphes
P. Vanier, T. Kaced
TP2 Python : Graphes
[email protected]
Exercice 1. Écrivez une classe Graphe qui aura :
— Comme variable statique privée N , le nombre d’objets graphe qui existent actuellement
(il faut prendre en compte ceux qui ont été détruits aussi)
— Comme variables privées :
— le nombre de sommets,
— un dictionnaire qui contiendra dans l’indice correspondant à chaque sommet une
liste des sommets qui lui sont adjacents.
— Comme méthodes :
— ajout_sommet(nom) pour ajouter un sommet
— ajout_arete(s1,s2) pour ajouter une arête de i à j.
— ajout_aretes(liste) pour ajouter une liste d’arêtes.
— supprimer_sommet(s)
— supprimer_sommets(liste)
— supprimer_arete(s1,s2)
— supprimer_sommets(liste)
Exercice 2. Rendez cette classe itérable : l’itération doit renvoyer les sommets du graphe un à
un.
Exercice 3. Écrivez un générateur aretes(s) qui énumère les arêtes sortant du sommet s.
1
Graphe de pages web
On veut maintenant construire le graphe des relations entre certaines pages web :
pages = ["http://uncyclopedia.wikia.com/wiki/My_Yu-Gi-Oh!_collection",
"http://uncyclopedia.wikia.com/wiki/Awesome",
"http://uncyclopedia.wikia.com/wiki/Clothes",
"http://uncyclopedia.wikia.com/wiki/World_War_2",
"http://uncyclopedia.wikia.com/wiki/World_War_1",
"http://uncyclopedia.wikia.com/wiki/Charles_de_Gaulle",
"http://uncyclopedia.wikia.com/wiki/French",
"http://uncyclopedia.wikia.com/wiki/Surrender",
"http://uncyclopedia.wikia.com/wiki/Asterix",
"http://uncyclopedia.wikia.com/wiki/French_Military"
"http://uncyclopedia.wikia.com/wiki/Cheese"
]
Une page sera représentée par un nœud et il y aura une arête du nœud correspondant à
la page p1 au nœud correspondant à la page p2 si il existe un lien hypertexte dans p1 dont le
champ href est l’adresse de p2 .
Exercice 4. En utilisant requests et beautifulsoup4 , construisez un objet Graphe qui
contient le graphe des pages web de la liste pages .
M1 Python – Cours : P. Vanier
1/2
TP2 Python : Graphes
P. Vanier, T. Kaced
Exercice 5. À l’aide d’un algorithme de plus court chemin, trouvez le chemin le plus court
(n’empruntant que des liens commençant par http://uncyclopedia.wikia.com) entre les pages
suivantes :
p1 = "http://uncyclopedia.wikia.com/wiki/Captain_Obvious"
p2 = "http://uncyclopedia.wikia.com/wiki/HowTo:Fix_a_computer"
M1 Python – Cours : P. Vanier
2/2
Téléchargement