Le#plus#court#chemin#:#PCC#
#
#
Exemple'd’un'graphe'non'pondéré,'non'valué'
#
#
#
#
Voici#un#algorithme#de#bases#pour#tracer#le#plus#court#chemin#de#ce#graphe,#
en#partant#de#s#pour#arriver#à#t!
!
#
#
#
#
#
#
#
#
L’arbre#des#distances#de#ce#graphe#:#
#
#
#
#
On#en#déduit#un#tableau#des#parents,#par#exemple#4#a#pour#père#6,#donc#à#la#case#4,#on#
mettra#6#au#dessus#
#
2#
2#
2#
6#
3#
2#
1#
2#
3#
4#
5#
6#
Formalisation#:##
#
#I#:#G#=#(V,E),#S##V#(depart),#t#(arrivé)#
S#:#{path#(S,t)G#}#
F#:#|#path#(S,t)G#|#
Opt#:#min#
#
"!#!$%!
&!#!'!
()*+,!!&!-#!.!/!
!"0*1.,2'345&6!
!&!#!7$&%!
",'&21!"0*1.,2'345.6!
#
Problème'du'plan'du'métro'paris'
On#cherche#à#trouver#le#plus#court#chemin#entre#2#stations#données#(s#station#de#départ,#
t#d’arriver).#
#
Formalisation#:#
#
𝐼𝐿=𝐿!,𝐿!" !𝑡,𝑠!!𝑠𝑡𝑎𝑡𝑖𝑜𝑛##
𝑆{!𝑆!,𝑆!,𝑆!" !!!/!!!𝑖!1𝑖<𝑘2!!!𝜆!𝑡𝑞!𝑠!!𝐿!!𝑠!!!!!𝐿!!!𝑠!!!!!𝐿!!!!##
f#:#k#
opt#:#min#
#
G=#(V,E)#
𝑉={!𝑆𝑡!,,𝑆𝑡!"#}##
𝐸={𝑥,𝑦!!!/!!#!𝑖!𝑥!𝐿!!!𝑒𝑡!𝑦!𝐿!!}#
#
#
#
#
#
TD'partie'1'
#
Exemple#d’un#graph#à#cycle#:#
#
#
On#a#un#cycle#négatif,#
ex#ici#en#calculant#les#distances#si#on#fait#3#tours#:#
#
sU>##((5#+#2#–#8#+#1#+#4#=#4)#+#2#–#8#+#1#+#4#=#3)#+#2#–#8#+#1#+#4#=#2#U>t#
#
On#fait#U1#à#chaque#fois#que#l’ont#a#fait#un#tour#complet#
#
On#obtient#une#loi#tel#que#:#
#
𝑠!𝑆!!𝑒!
𝑆!!𝑒!
𝑆!!𝑒!
!𝑆!!!!𝑒!
𝑆!𝑡#
#
#
min 𝑤(𝑒)
!!!"#!!,!!
#
#
#
#
Exemple#d’estimation#:#
#
Estimation#:#on#donne#un#chemin#le#plus#cours#provisoire#
#
#
En#partant#de#s,#si#on#cherche#à#passer#par#z#pour#atteindre#x#plus#vite,#si#on#met#entre#z#
et#x#la#valeur#55,#on#a#pas#améliorer#le#chemin#provisoire,#car#50+55#>#100,#mais#si#on#
met#35#entre#z#et#x,#on#l’a#améliore,#le#chemin#provisoire#w(z,x)#+#le#chemin#de#s#à#z#est#
plus#court#que#celui#de#s#à#x.#
##
On#dit#alors#que#w(z,x)#est#tense#car#8*.'$9%!:!8*.'$;%!<!=3;596#
!
Arrête#tense#:##
Arrête#qui#contribue#a#changer#un#schéma#provisoire#(ici#w(z,x))#
lorsqu’on#trouve#une#arrête#tense#satisfaisable,#on#a#trouvé#le#plus#cours#chemin#
!
ici#on#a#donc#choisis#35#comme#valeur#à#w(z,x)#car#100#>#50#+#35,#on#attribue#donc#à#x#
une#nouvelle#distance#:#dist[x]#<U#85#
#
#
#
Algorithme'noyau(G,u)'
#
8*.'!#!$!𝑓𝑜𝑟!𝑢!𝑖𝑛!𝐺%!
>#?.@!
=)*+,!>!/!
!;!#!>08,+,.,36!!U>#on#prends#un#élément,#on#le#choisis#et#on#le#vide#
!AB2!9!*1!C8D$;%!
! ! *A!𝑀!
!!*.!',1.,!
!!!8*.'$9%!EF!8*.'$;%!<!=3;596!
!!!>0C88396!
#
#
#
Nota#bene#:#𝑀!
!#le#chemin#de#x#à#z#
#
Cet#algorithme#est#une#adaptation#de#l’algorithme#de#ford#en#1956,##ainsi#que#celui#de#
Dijkstra
#
#
Algorithme#du#schéma#:#la#plus#petite#distance#entre#un#point#et#un#autre#sommet#
quelconque#
#
8*.'!#!$!𝑓𝑜𝑟!𝑣!𝑖𝑛!𝐺]!
8*.'$.%!#!4!
7$.%!#!.!
>!#!G!
=)*+,!>!/!
!;!#!>08,+,',FH*136!!
!!!!!!!!!!!//on#supprime#le#sommet#avec#le#plus#petit#chemin!provisoire#:#O(v)!
AB2!9!*1!C8D!$;%!
! ! *A!8*.'$9%!:!8*.'$;%!<!=3;596!
!!!8*.'$9%!#!8*.'$;%!<!=3;596!
!!!7$9%!#!;!!F:!I,2,!8,!9!#!;!
#
#
#
#
On#calcule#la#complexité#de#l’algorithme#:#
#
𝑂𝑣+![𝑂𝑣+!𝑂(𝐸)]
!!!"!!
=𝑂𝑣+𝑣!+𝐸=!𝑂(𝑣!+𝐸)!#
#
#
#
#
O(v)#
On#a#calculé#pour#chaque#
sommet,#la#valeur#du#plus#
court#chemin#en#partant#de#a#
(notre#point#de#départ#s),#et#
on#l’a#noté#en#bleu#à#coté#de#
chaque#sommet#(sauf#d,#qui#
est#égal#à#4#évidement)#
#
Algorithme'DIJKSTRA(G,u)'
#
J*.'!#!$*1A*1*'K!AB2!&!*1!L%!
J*.'$.%!#!4!
7$.%!#!.!
>!#!M!
()*+,!>!/!
!;!#!>08,+,',NH*136!
! ! AB2!9!*1!C8D$;%!/!
!!!",+C93;596!
O!
2,'&21!E!75!8*.'!:!!
#
#
Méthodes#pour#les#tris#par#tas#(heap#=#tas)#
#
Heap_push#(heap,#item)#
Heap_pop(heap)#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
1 / 6 100%