• Aucun résultat trouvé

Listes-Graphes-Chaˆınes TPNot´e

N/A
N/A
Protected

Academic year: 2022

Partager "Listes-Graphes-Chaˆınes TPNot´e"

Copied!
3
0
0

Texte intégral

(1)

Universit´e Bordeaux 1

Licence, module J1MI1003, 2013/2014

TP Not´ e

Listes-Graphes-Chaˆınes

Tous documents autoris´es. Lundi 9 D´ecembre 2013

Dur´ee : 1h 20.

Vous devez ´ecrire vos solutions dans un fichier tpnote.py et envoyer ce fichier `a l’adresse : [email protected] comme sujet “TPNOTE”.

Partie 1: listes.

1- Ecrire, en Python, une fonction lunion(l,n)qui retourne une liste comportant, dans un ordre quelconque, les ´el´ements apparaissant au moins une fois danslou dansn. Lorsquelet nsont sans r´ep´etition, le r´esultat retourn´e doit ne pas avoir de r´ep´etition non-plus.

Par exemple, on doit avoir

>>> l=lunion([1,2,3,4],[2,3,4,5])

>>> print(l) [1, 2, 3, 4, 5]

2- Ecrire une fonction inclusion(l,n)qui prend en argument deux listes l,net :

renvoie Truesi l’ ensemble des ´el´ements de la listelest inclus dans l’ ensemble des ´el´ements de la liste n.

renvoie Falsesinon.

Par exemple :

>>> inclusion([1,2,3],[1,3,4]) False

>>> inclusion([1,2,3],[3,4,1,2]) True

3- Ecrire une fonction setequal(l,n)qui prend en argument deux listes l,net :

renvoie Truesi l’ ensemble des ´el´ements de la listelest ´egal `a l’ ensemble des ´el´ements de la liste n.

renvoie Falsesinon.

4- Ecrire une fonction inclusionstrict(l,n)qui prend en argument deux listes l,net : renvoie True si l’ ensemble des ´el´ements de la listelest strictement inclus dans l’ ensemble des ´el´ements de la liste n.

renvoie Falsesinon.

Par exemple :

>>>inclusionstrict([1,3,4],[4,2,1,3]) True

>>>inclusionstrict([1,2,3,4],[4,2,1,3]) False

(2)

Partie 2 :connexit´e-distance

On cherche `a calculer la composante connexe d’un sommet sd’ un graphe par une variante de la m´ethode vue en TP : au lieu de propager des “marques” depuis stant qu’on le peut, on ajoute des sommets du graphe dans une liste, tant qu’on le peut. On obtient la fonction suivante.

def compconnexe(s):

lcour=[s]

lnext=lunion(lcour,listeVoisins(s)) while inclusionstrict(lcour,lnext):

lcour=lnext for u in lcour:

lnext=lunion(lnext,listeVoisins(u)) return lcour

5- Tester cette fonction sur le graphetgv2005.

6- On appelle S-chaˆıne dans le graphe G, une suite de sommets (s0, s1, . . . , sk, sk+1, . . . , sn) telle que, pour toutk≤n−1,sk etsk+1 sont voisins. Lalongueur de la S-chaˆıne est l’entier n. La distance entre un sommet s et un sommet t d’un graphe G est la longueur de la plus courteS-chaˆıne de s`a t(et ∞si settne sont connect´es par aucune chaˆıne).

Ecrire une fonction distance(s,t)qui prend en argument deux sommets s, tet renvoie la distance des `at(ou alors "infty"si ces sommets ne sont pas connect´es). Par exemple :

>>> distance(sommetNom(tgv2005,"Bordeaux"),sommetNom(tgv2005,"Marseille")) 2

>>> distance(sommetNom(tgv2005,"Bordeaux"),sommetNom(tgv2005,"Strasbourg"))

’infty’

>>> distance(sommetNom(fig22,"B"),sommetNom(fig22,"D")) 3

Aide : on pourra ajouter, dans le texte de la fonction compconnexe(s), un compteur du nombre de passages dans la bouclewhile.

Partie 3 : S-chaˆınes minimales

7- Ecrire une fonctionpremiersom(s,t)qui prend en argument deux sommetss,tet renvoie un sommet qui est le suivant de s dans une S-chaˆıne minimale des `a t(ou None sis, tne sont pas connect´es). Par exemple :

>>> premiersom(sommetNom(tgv2005,"Bordeaux"),sommetNom(tgv2005,"Marseille"))

<sommet: ’Lille’, ’white’, False>

>>> print( premiersom(sommetNom(tgv2005,"Bordeaux"),sommetNom(tgv2005,"Strasbourg"))) None

>>> premiersom(sommetNom(fig22,"B"),sommetNom(fig22,"D"))

<sommet: ’A’, ’white’, False>

8- Ecrire une fonctionSchainemin(s,t)qui prend en argument deux sommetss,tet renvoie une S-chaˆıne minimale allant des`a t(ou Nonesi s,tne sont pas connect´es). Par exemple :

2

(3)

>>> Schainemin(sommetNom(tgv2005,"Bordeaux"),sommetNom(tgv2005,"Marseille")) [<sommet: ’Bordeaux’, ’white’, False>, <sommet: ’Lille’, ’white’, False>,

<sommet: ’Marseille’, ’white’, False>]

>>> Schainemin(sommetNom(fig22,"B"),sommetNom(fig22,"D")) [<sommet: ’B’, ’white’, False>, <sommet: ’A’, ’white’, False>,

<sommet: ’C’, ’white’, False>, <sommet: ’D’, ’white’, False>]

9- Ecrire une fonction marquermin(s,t): qui marque tous les sommets d’ une S-chaˆıne mi- nimale allant du sommetsvers le sommett.

10- Ecrire une fonction testvisu(G,nom1,nom2)qui prend en argument un graphe Get des chaˆınes de caract`eres nom1,nom2et dessine sur votre ´ecran le grapheGavec des marques sur tous les sommets d’une S-chaˆıne minimale allant du sommet de nomnom1vers le sommet de nomnom2. Tester sur les exemples :

testvisu(tgv2005,"Bordeaux","Marseille") testvisu(fig22,"B","D")

3

Références

Documents relatifs

1) Non, les trajectoires ne sont pas identiques et ne sont pas de même longueur (preuve facile si on prend une ficelle et que l'on mesure la trajet effectué).. Mouvement de

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

En effet, la relation d'équivalence entre graphes est transitive; en outre, le passage du graphe direct au graphe équivalent hiérarchisé (première proposition), puis du

Tout d’abord, γ([0, 1]) est compact donc inclus dans un disque borné D dont le complémentaire D c

Ecrire le processus it´ eratif de Newton pour cette ´ equation.. quel est dans ce cas l’ordre de convergence de la

- al´ eatoire (le hasard intervient)⇒ son comportement peut ˆ etre d´ ecrit en utilisant la mod´ elisation propos´ ee par A... Exemple de Chaˆıne

(a) Écrire les instructions permettant de déterminer l’indice kmax correspondant à la va- leur maximale dans la liste Phi (on pourra utiliser la fonction indice_max définie

Puce commence par former un parcours à partir d’une première boîte, de proche en proche jusqu’à arriver à une boîte dont toutes les voisines sont déjà dans le parcours ;