Vous êtes sur la page 1sur 8

ZEKRAOUI

Reseau routier

Figure 1 : Extrail du reseai routierdu Maroc

Un reseau routier peut Atre represente par un dessln qui se compose de points el de tra~s continus
reliant deux a deux certains de ces points : les points sont les vllea, et les NgnN sont les routes. On
considere que toutes les routes sont a double sens. Chaque route peut Atre affectee par une valeur qui peut
representer le temps ou la distance entre deux villas, ...

Etant donne un reseau r o ~ pourra s'interesser a la resolution des problemes suivants :


• Ouel est le plus court c~in entre deux viles ?
Entre deux villes, quel est le nombre de chemins passant par un nombre de routes donne?
• Est-ii possible de passer par toutes les villas du reseau, sans passer deux fois par une mAme vile?,
si oui, quel est le plus court chernin ?
• Entre deux villas, quel est le chernin ayanl le moindre coOI ?

Partie I:
Modelisation d'un reseau routier

On considere un reseau routier compose de n villes (avec n 2). Les villas du reseau routier sont
numerotees par des entiers allant de o an-1.
Example:

Pog~Jsurl
ZEKRAOUI

Rgure 2 : Reseau routier compose de 15 routes. et de 8 villas numtirotees de o a 7.

Pour plus de clarte, tousles examples de ce probleme seront appliques sur le reseau routier de la figure 2.

Representation du reseau routler '


Pour representer un reseau roulier den villas, on utilise une malrice symetrique R d"ordre n (n lignes et n
cotonnes). tene que :
Pour toutes les villas I et j, telles que O :S I < n et O :!i j < n, on
R[i,j]• R[j,i]=l, s'ilexisteuneroutequirelieentrelavilleletlavillej;
R[i,j]• R[j,i]•O, sinon.

~:
Le reseau routier de la figure 2 est represente par la matrice symetrique R, d'ordre 8, suivante:

1/J 0 J l .J 4 5 6 7

0 0 1 1 1 0 0 0 0
J 1 0 1 0 1 0 0 0
l 1 1 0 1 1 0 0 0
3 1 0 1 0 1 0 1 1
4 0 1 1 1 0 1 1 0
5 0 0 0 0 1 0 1 1
6 0 0 0 1 1 1 0 1
7 0 0 0 1 0 1 1 0

NB : Dans la matrice symetrique R, /es lignes I et /es colonnes Jrepresentent /es villes OJ reseau routier.

I. 1- Representation de la matrlce du reseau rouller en Python


Pour representer la matrice symetrique R cfordre n, on utiise une lisle composee den isles qui sont toutes
de m6me longueur n.

PogeZsurB
ZEKRAOUI

~:
La matrice symetrique R, du reseau routier de la flgla'e 2, est representee par la lisle R, composee de 8
isles, de taille 8 chacune :
R • [ [0,l,1,1,0,0,0,0], [l,0,1,0,1,0,0,0], [l,l,0,1,1,0,0,0],
[l,O,l,0,1,0,1,1], [O,l,1,1,0,l,1,0], [0,0,0,0,1,0,1,1],
(0, 0, 0, 1, 1, 1, 0, 1), (0, 0, 0, 1, 0, 1, 1, OJ

a
R[i] I j] est l'elementde R, la i-- igne et la 1- cotonne.
Examples: R[OJ[O) est !'element : 0, et R[OJ[2) est !'element : 1

R[i] est la igne d'indice I dans R.


Example : R[O) est la lisle [ 0, 1 , 1 , 1 , 0, 0, 0, 0 ], qui represente la ligne d'indice Odans la matrice R.

Q 1- A partir de la matrice symetrique R de la flgla'e 2, dormer les resultats des expressions suivantes :
R(4)[2) , R(1) , len(R[2)) , len(R)

I. 2- Villes voisines "'\.. ,


I et/ sont deux vii/es clans un resaau routier represen~par une matrice symetrique R.
Les viles I et Jsont 11ols/,-s, s'il existe une route entre la vaille I et la ville/.

Q 2. a- Eaire la fonction voiaines (i, j, R) I..qui re~i!,'" parametres deux vi lies I et J d'un reseau
routier represente par la matrice symeb'ique R1i'1onction renvoie True si les villes I et J sont voisines,
sinon, la fonction renvoie False.
Examples:
• La foncfion vol sines (3, 0, R)l_nv01e True ; (/es vrlles 3 et O sont vo1smes)
La foncfio\otslnes (3, 5, R) renv01e False. (/es vii/es 3 et 5 ne sont pas vo,s,nes)

Q 2. b- Ccrire l'.",lonct,on list_voisines(i,R), qui r~oit en parametres une ville I d'un reseau
rout,er rep<esente par la matrice symetrique R. La foncbon renvoie la lisle de toutes les v1lles voisines a la
'j!el.
Exemple:
La fonctlon fist_volslnes (3, R) renvoie la lisle des vilies voisines a la ville 3 : [ 0 , 2 , 4 , 6 , 7)

I. 3- Degre d'une ville


Dans un resaau routier, le degre d'une ville I est le nombre de vii/es voisines a la ville I.

Q 3- Ecrire la fonction degre (i, R), qui re~il en parametres une ville I d'un reseau routier represent&
par la matrice symetrique R. La fonction renvoie le degre de la vi He I.
Examples:
La fonctlon deg re (3, R) renvoie le nombre : 5 (La ville 3 possede 5 vii/es voisines)
La foncfion deg re (0, R) renvoie le nombre : 3 (La ville Opossede 3 vii/es voisines)
La foncfion deg re (2, R) renvoie le nombre : 4 (La ville 2 possede 4 vii/es voisines)

Poge3sur8
ZEKRAOUI

I. 4- Lisle des degres des vllles


Q 4. Ecrire la fonction liate_dagrea (R), qui re,;:oit en parametre la matrice symetrique R
representant un reseau routier. La fonction renvoie une lisle D contenant des tuples. Chaque tuple de D
est compose de deux elements : une ville w reseau routier, et le degre de cette vile.

La fonction llate_degre1 (R) renvoie la liste D suivante :


D = I(0, 3), (1 , 3) , (2, 4), (3 , 5), (4, 5), ( 5, 3), (6, 4), (7, 3) I

l. S- Tri des villes


Q S. a- Ecrire la fonction tri_dagrea (D) , qui re,;:oit en parametre la liste D des degres des vi lies. La
fonction trie les tuples de la liste D dans rordre decroissant des degres des villes.

21!!!11!.l:
o =I (0, 3), (1 , 3), (2 , 4) , (3, 5), (4, 5), ( s, 3) , (6, 4), (7, 3) I
Apres rappel de la fonction trt_degrea (D). on obtient la iste s!Jivante :

IP,~.~.~.~.~.~.~.~.~.~.~.~.~.(7.~ J

Q S. b- Ecrire la fonction tri_villes (R), qui re,;:oit en parametre la matrice symetrique R representant
un reseau routier. La fonction renvoie la liste des viles triees dans rordre decroissant des degres des vales.

La fonction trl_vllle1 (R) renvoie la lisle des villas triees dans rordre decroissant des degres :
[3,4,2,6,0,5,1,7)

Partie U:
Coloration optimale des vii/es d'un reseau routier

Une cotontlon des vUles du reseau routier est une affectation de couleurs ii chaque vile, de fai;on ii
ce que deux villes voislnes soient affectees par deux couleurs differentes. Le nombre minimum de couleurs
necessaires poul'oolorier un reseau routier est appete : nombre chromatlque.
La recherche du nombre chromatique est une question qui intervient dans beaucoup de problemes
concrets:
L'etablissement d'emplois du temps :
la gestion de ressources partagees :
la compilation dans rutilisation efficace des registres :

On cherche ii construire une liste C qui contiendra les couleurs des viles. Ces couleurs seront
representes par des entiers stricternent podifs : chaque element C{k} contiendra la cou/eur de la ville k di
mseau routier.

Poge4sur8
ZEKRAOUI
Pour conslrUire la lisle C des couleurs, on propose d'utiliser un algortthme, appele : •lgortlhme deglouton.
c·est un algorithms couramment utiise dans la resolution de ce genre de problllmes, afin d'obtenir des
solutions optimales.

Prtnctpe dt c1e alouton :


V esl la liste des villes trit!es dans l'ordre decroissanl des degn!s des villes
C esl w,e lisle de meme 1aille que V, initialisee par des 0
Pour 10u1c ville k de V :
Qk) +- premiere couleur non utilisee par les villes voisines la ville k
Reloumer la lisle C

II. 6- Premier entler qui n'exJste pas dans une lisle d'entlers
Q 6- Ecrire la fonction premier_entier (L), qui •~oil en parametre une isle L de nombres enliers
posttifs. La fonction renvoie a
le premier entier posM qui n'appartient pas la lisle L.
iUl!!IIII:
La fonction pnimler_entler ( [ 0 , 0, 3, 1 , 0, 1 , 0, 0] ) renvoie le nombre : 2

II. 7- Lisle des couleurs des vllles voisines a une ville


Q 7- Ecrife la fonction couleura_voiainea (k,C,R), qui re1;0tt en parametres une ville k d'un
mseau roulier represente par la malrice aymelrique R, el la lisle C des couleurs des viles du reseau. La
a
fonction renvoie la lisle des C{I) telle que I est une ville voisine la ville k.
~:
La fonction couleura_volalnes (4, [ 0, 0, o, 1, 0, 0, 0, 0 ], R) ranvoie la liste : [O, 0, 1, 0, OJ
La fonction couleurs_volsl- (2, ( 0, 0, 01 1, 2, 0, 0, 0 ], R) ranvoie la liste: [0, 0, 1, 2)
La fonction couleurs_volaines (I!, ( O, 0, 3, 1, 2, 0, 0, 0 ], R) ranvoie la liste: [1, 2, 0, OJ
La fonction couleurs_volslnes (0, [ 0, 0, 3, 1, 2, 0, 3, O), R) ranvoie la liste: [O, 3, 1]

II. 8- Coloration des yjlles


Q 8- Ecrire la lonction couleura_vill•• (R), qui •~oit en parametre la matrice symetrique R
rep/'llaentar1., un reseau routier. La fonction renvoie la liste C des couleurs des villes, en utilisanl le principe
de glolaon cile ci-dessus.
~:
La lonction couleura_vllle• (R) renvoie la lisle des couleurs: C = [ 2, 1 , 3 , 1 , 2, 1 , 3, 2]
Dans cette iste C :
Les viles 0, 4 el 7 0111 la m6me couleur : 2 :
Les viles 1, 3 et 5 ont la meme couleur : 1 :
Les viles 2 et 6 ont la m6me couleur : 3.

NB : Dans eel example, le nombre chromatique est 3.

Poge5sura
ZEKRAOUI

Partie JU:
Chemins dans un riseau routier

ID. 9- Chemin entre deux vllles


Dans un reseau routier. un c:hemln est un tuple T qui contient des villes du reseau, et qui satisfait les deux
conditions suivantes :
c1 : Le tuple T contient au moins deux v~les du reseau routier ;
c2 : Oeux villes consecutives dans T sont voisines.

~:
Le luple ( 2, 0, 1, 4, 3) esl un chemin entre la ville 2 et la ville 3, compose de 4 routes ;
Le luple ( 7, 6, 4, 5, 6, 3, 4 ) est un chemin entre la vine 7 et la ville 4, compose de 8 routes ;
Le luple ( 3, 1, 4, 7) n'est pas un chem in.

Q 9- Ecrire la fonclion chamin_valida (T, R). qui r~oil en parametres un tuple T contenant des villes
du reseau routier represente par la matrice symetrique R. La fonction renvoie True si le luple T satisfatt les
deux conditions c1 et c2 citees ci-dessus, sinon, la fonction ~voie False.

ID. 10- Chemin simple entre deux viliff-,...


Dans un nlseau rout/fl(, un chemln simple est un_ chemin qvi passe une seu/e fois par la mime vile.
~:
Le chemin ( 2, 0, 1, 4, 3) est un chernin sr,ple entre la ville 2 et la vile 3 :
Le chemin ( 6, 7, 3, 4, 2, 3, 6, 5) n'est pas simple.

Q 10- Ecrire la foriction chemi.n_simple (T, R). qui r~oit en pararnetres un chemin T dans un reseau
routier represente P8! la matrice symetrique R. La fonction renvoie True si le chernin Test simple, sinon,
la fonction renvoie FelH.

Ill. 11- Mus cogrt chcmin entre deux vllles


Q I I.a- Ecrire la fonction liate_chaai.na (i, j, R). rec;ott en parametres deux villes f et Jd'un reseau
routier represent!! par fa matrice symelrique R. Cette fonction renvoie une lisle qui contient tousles chemins
simples entra la ville f et la ville J.

iulnllm.i
La fonction lllta_chemln• (1, 5, R) renvoie la iste de tousles chemins simples enlre les viles 1 et 5 :
[ tl, 0, 2, 3, 4, 5) , (1, 0, 2, 3, 4, 6, 5) , (1, 0, 2, 3, 4, 6, 7, 5), (1, 0, 3, 4, 6, 7, 5),
(1,0,3,6,4,5), (1,0,3,6,5), (1,0,3,6,7,5), (1,2,0,3,6,5), (1,2,0,3,6,7,5),
(1,2,0,3,7,5), (1,2,0,3,7,6,4,5),(1,2,3,7,6,5), (1,4,2,0,3,7,5), (1,4,2,0,
3,7,6,5), (1,4,2,3,6,5), (1,4,2,3,6,7,5), (1,4,2,3,7,5), (1,4,2,3,7,6,5), (
1,4,3,6,5), (l,4,3,6,7,5), (1,4,3,7,5), (1,4,3,7,6,5), (1,4,5), (1,4,6,3,7,
5),(1,4,6,5), ,(1,4,6,7,5))

Poge 6surl
ZEKRAOUI
Le plus court chemln entre une vflle I et une ville J est un chemin simple entre la ville I et la ville J, et qui
traverse le mains de vii/es.
NB : On peut trower plusieurs plus courts chemins entre deux vii/es.

Q I l.b- Ecrire la fonction pc_chemin• ( i, j, R) , qui re<,oit en parametres deux vilies I et j d'un reseau
routier represente par la matrice symetrique R. Celle fonction renvoie la roste de tous les plus courts
chemins entre la ville I et la ville J.
~:
• la fonction pc_chemlna (0, 7, R) renvoie la liste [ (0, 3, 7) J ;
• la lonction pc_chemlna (7, 1, R) renvoie la liste:
I (7. 3. o, 1J, (7, 3, 2, 11, (7, 3, 4, 11, (7, s, 4, 11, (7. 6, 4, 1J J.

Partie IV:
Calcul du nombre de chemins entre deux villes

Dans cette partie, on propose de resoudre le probleme suivant :


Soit pun entier stricternent positif.
Ouel est le nombre de chemins (simples ou non) entre une ville I et une ville j, passant exacternent par
p routes?
Parexemple, dans le reseau routierdela llgi.-e2, pour allerde la ville 1 a la ville 3, en passant exacternent
par 5 routes, on peut trouver plusieurs chemins, dont voici quelques uns :
(1,4,5,7,6,3) , (l,4,6\s,4-,3) , (1,2,3,4,2,3) , (1,0,2,0,2,3), _

Pour resoudre ce probleme, on doit proceder ainsi :

• Calculer la rnatrice M = RP (matrice symetrique R etevee a la puissance p)


• Chaque l16ment M[IJUJ represente le nombre de chem ins, entre la ville I et la ville j, passant par
p routes;
• la matrice M est symetrique aussi. Le nombre de chernins, entre la ville I et la vile j, est le m6me
que celui entre la ville j et la ville I.
Exemples:

3 1 2 1 3 0
1 1 4 8 8 10 5 5 5 2
1 3 2 3 1 1
1 0 8 4 8 5 10 2 5 5
2 2 4 2 2 1
2 1 8 8 8 11 11 5 5
6
1 3 2 5 2 3
2 1 10 5 11 8 15 5 11 10
3 1 2 2 5 1
2 3 5 10 11 15 8 10 11 5
0 1 1 3 1 3
2 1 5 2 5 5 10 4 B 8
1 1 2 2 2 2 4 2 5 11 11 8 B 8
l@J 1 1 3 1 2 3 2 10 5 8 B 4

M=R2 M=R3

Poge 7sur8
ZEKRAOUI

Par example. entre la ville 1 et la ville 7 :


• II ya O chemins qui passent exactement par deux routes (clans la matrice M = R') :
nya 5 chemins qui passent exactement par trols routes (dans ta matrice M = R').

IV. 12. Prodult matriclel


.!!l2a! :
On considere la malrice A, de m lignes et n colonnes, et la matrice B de n ignes et p colonnes. En
elfecluant le produit matriciel de A et B. on obtient la matrice C de m lignes et p colonnes. sachant que les
coeHicients de la matrlce C sont calcules par la formula suivante :
n-1

c,, = L
k=O
A11, • Bk/

Q 12. Ecrire la fonction produit_-triciel (A, B). qui r~ott en parametres deux matrices
symetriques A et B, de mAme dimension. La fonction calcule et renvoie une nouveUe matrice symetrique
C. qui contient le produtt matriciel de A et B. la lonction doit economiser le temps de ca/cul, en cak:ulant
une seule fois tes coeHicients symetriques dans la matrice C.

IV. 13- Calcule de la puissance par 'CJDOpCntiation rapide'


l.o<squ'~ s'agit d'une matrice carree, le calcul de la puissance devient crucial. L'exponentlatlon raplde
est un algortthme qui permet de minimiser le nombre de multipications ellectuees dans le calcul de la
puissance.

Pour calculer x •. le principe de l'exponentiallon rapide est le suivant :

• Sin=1 x• = x
alors
Si neat pair x • = (.r) .n
alors
• Si neat lmpelr alors x • = x. (.r) 10-1.-i

Q 13- Ecrire la fonction (R, n), ~tt en parameb'es la matrice symetrique R representant
un reseau routier. et un entler strictement posit~ n. En utilisant le princlpe de !'exponentiation rapide, la
fonction catcule et renvoie la matrice R•.

Pogelsurl

Vous aimerez peut-être aussi