-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path11.py
More file actions
55 lines (49 loc) · 1.47 KB
/
11.py
File metadata and controls
55 lines (49 loc) · 1.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# Dijsktra algoritim
graph={
'A':{'B':2, 'C':6},
'B':{'C':3, 'D':4},
'C':{'D':5, 'E':6},
'D':{'F':5},
'E':{'F':0},
'F':{}
}
narxlar = {
'B': 2,
'C': 6,
'D': float('inf'),
'E': float('inf'),
'F': float('inf')
}
otalar = {
'B': 'A',
'C': 'A',
'D': None,
'E': None,
'F': None,
}
ishlandi = []
# 1. Eng arzon tugun topish uchun funksiya
def eng_arzon_tugun_top(narxlar):
eng_arzon = float('inf')
eng_arzon_tugun = None
for tugun in narxlar:
narx = narxlar[tugun]
if narx < eng_arzon and tugun not in ishlandi:
eng_arzon = narx
eng_arzon_tugun = tugun
return eng_arzon_tugun
print(narxlar)
tugun = eng_arzon_tugun_top(narxlar)
print(f"Eng arzon tugun: {tugun}")
# 2. Dijkstra Algoritmi kodi
while tugun is not None:
qoshnilar = graph[tugun] # Eng yaqin tugunning qo'shnilarini topamiz
narx = narxlar[tugun] # Ularning narxini olamiz
for qoshni in qoshnilar.keys(): # Har bir qo'shni uchun...
yangi_narx = narx + qoshnilar[qoshni] # shu qo'shniga borish narxini hisoblaymiz
if narxlar[qoshni]>yangi_narx: # agar bu tugunga borish avvalgidan arzonroq bo'lsa:
narxlar[qoshni] = yangi_narx # shu tugunga borish narxini yangilaymiz
otalar[qoshni] = tugun # va bu tugun otasini ham yangilaymiz.
ishlandi.append(tugun) # tugunn ishlov berilgan tugunlar qatoriga qo'shamiz
tugun = eng_arzon_tugun_top(narxlar)
print(narxlar)