TP2 Python : Graphes P. Vanier, T. Kaced
TP2 Python : Graphes
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 p1au nœud correspondant à la page p2si il existe un lien hypertexte dans p1dont 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