You are on page 1of 2

mamy graf A B C D

graf = [[0,3,6,0],[3,0,0,3],[6,0,0,6],[0,3,6,0]]

B
/3 \3
A D
\6 /6
C

tworzymy
A B C D
droga [None,None,None,None]
A B C D
odl [infi,infi,infi,infi] #odległość
A B C D
czy [False,False,False,False] #odwiedzone?

1)ustawiamy odl A na 0
A B C D
odl [0,infi,infi,infi]

2)szukamy najmniejszej z odl i ustawiamy to na True

odp - A=0
A B C D
czy [True,False,False,False]
3)bierzemy graf od A

[0,3,6,0]
przedzimy po wszystkim i sprawdzmy czy:
jest >0: [F,3,6,F]
czy[i]==False: [f,3,6,f]
odl[i]>graf[x(A)][i]+odl[A](0) [f,3,6,f]

jeśli tak to zmieniamy odl na to i ustawiamy droge

A B C D
odl [0,3,6,infi]

A B C D
droga [None,A,A,None]

2)szukamy najmniejszej z odl (wywalając te co są True)

A B C D
odl [T,3,6,infi]

B=3
A B C D
czy [True,True,False,False]

[3,0,0,3]

[f,f,f,3]

A B C D
odl [0,3,6,6]

A B C D
droga [None,A,A,B]

2)szukamy najmniejszej z odl (wywalając te co są True)

A B C D
odl [T,T,6,6]

D=6

A B C D
czy [True,True,False,True]

[0,3,6,0]

[f,f,f,f]

2)szukamy najmniejszej z odl (wywalając te co są True)

A B C D
odl [T,T,6,T]

C=6
[6,0,0,6]

[f,f,f,f]

czy = [t,t,t,t]

kończymy

odległość od A
A B C D
odl [0,3,6,6]

droga
A B C D
droga [None,A,A,B]

D->B->A->None
odwracamy

A B D

znaleźliśmy najktótszą drogę koniec

You might also like