Π”ΠΈΠΏΠ»ΠΎΠΌΡ‹, курсовыС, Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚Ρ‹, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅...
Брочная ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π² ΡƒΡ‡Ρ‘Π±Π΅

Алгоритм ДСйкстры поиска ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅Π³ΠΎ ΠΏΡƒΡ‚ΠΈ

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Алгоритм ДСйкстры Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΠΉ (Ρ‚.Π΅. с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ суммой Π΄Π»ΠΈΠ½ Π΄ΡƒΠ³) ΠΏΡƒΡ‚ΡŒ ΠΎΡ‚ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° s ΠΊ ΡƒΠ·Π»Ρƒ t Π²ΠΎ Π²Π·Π²Π΅ΡˆΠ΅Π½Π½ΠΎΠΌ ΠΎΡ€Π³Ρ€Π°Ρ„Π΅. Π’ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ 3.3 ΠΌΡ‹ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌ Π΅Π³ΠΎ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΡƒΡŽ запись, нс ΡΠ°ΠΌΡƒΡŽ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ ΠΈ Π΄ΠΎΡΡ‚Π°Ρ‚ΠΎΡ‡Π½ΠΎ Π΄Π»ΠΈΠ½Π½ΡƒΡŽ, Π½ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π½Π°Π³Π»ΡΠ΄Π½ΡƒΡŽ ΠΈ ΠΏΠΎΠ½ΡΡ‚Π½ΡƒΡŽ, ΠΏΠΎ Π½Π°ΡˆΠ΅ΠΌΡƒ мнСнию. Π’ ΡΡ‚ΠΎΠΉ записи ΡƒΠ·Π»Ρ‹ ΠΎΡ€Π³Ρ€Π°Ρ„Π° ΠΏΠ΅Ρ€Π΅Π½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Π½Ρ‹, Π° ΡΠ°ΠΌ ΠΎΡ€Π³Ρ€Π°Ρ„ Π·Π°Π΄Π°Π½ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ΠΉ Π΄Π»ΠΈΠ½ Π΄ΡƒΠ³ Π‘: array of real, Π³Π΄Π΅ C=0, Π‘—Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Алгоритм ДСйкстры поиска ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅Π³ΠΎ ΠΏΡƒΡ‚ΠΈ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Алгоритм ДСйкстры Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΠΉ (Ρ‚.Π΅. с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ суммой Π΄Π»ΠΈΠ½ Π΄ΡƒΠ³) ΠΏΡƒΡ‚ΡŒ ΠΎΡ‚ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° s ΠΊ ΡƒΠ·Π»Ρƒ t Π²ΠΎ Π²Π·Π²Π΅ΡˆΠ΅Π½Π½ΠΎΠΌ ΠΎΡ€Π³Ρ€Π°Ρ„Π΅. Π’ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ 3.3 ΠΌΡ‹ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌ Π΅Π³ΠΎ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΡƒΡŽ запись, нс ΡΠ°ΠΌΡƒΡŽ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ ΠΈ Π΄ΠΎΡΡ‚Π°Ρ‚ΠΎΡ‡Π½ΠΎ Π΄Π»ΠΈΠ½Π½ΡƒΡŽ, Π½ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π½Π°Π³Π»ΡΠ΄Π½ΡƒΡŽ ΠΈ ΠΏΠΎΠ½ΡΡ‚Π½ΡƒΡŽ, ΠΏΠΎ Π½Π°ΡˆΠ΅ΠΌΡƒ мнСнию[1]. Π’ ΡΡ‚ΠΎΠΉ записи ΡƒΠ·Π»Ρ‹ ΠΎΡ€Π³Ρ€Π°Ρ„Π° ΠΏΠ΅Ρ€Π΅Π½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Π½Ρ‹, Π° ΡΠ°ΠΌ ΠΎΡ€Π³Ρ€Π°Ρ„ Π·Π°Π΄Π°Π½ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ΠΉ Π΄Π»ΠΈΠ½ Π΄ΡƒΠ³ Π‘: array [l.n, l. n] of real, Π³Π΄Π΅ C[i, i]=0, Π‘ [ i, j ]—Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число, Ссли Π΅ΡΡ‚ΡŒ Π΄ΡƒΠ³Π° ΠΈΠ· ΡƒΠ·Π»Π° с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ i Π² ΡƒΠ·Π΅Π» с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ j ΠΈ Π‘ [ i, i ] =°°, Π΅ΡΡ‚ΡŒ Π½Π΅Ρ‚ Π΄ΡƒΠ³ΠΈ ΠΈΠ· ΡƒΠ·Π»Π° с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ i Π² ΡƒΠ·Π΅Π» с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ j. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π΄Π²Π° массива: Π²Π΅ΠΊΡ‚ΠΎΡ€ Π’: array [l.n] of real ΠΈ H: array [ 1. n] of 0. n, Π³Π΄Π΅ n — число ΡƒΠ·Π»ΠΎΠ² Π² ΠΎΡ€Π³Ρ€Π°Ρ„Π΅. ΠŸΡ€ΠΈ этом Ссли ΡƒΠ·Π΅Π» v Π»Π΅ΠΆΠΈΡ‚ Π½Π° ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅ΠΌ ΠΏΡƒΡ‚ΠΈ ΠΎΡ‚ ΡƒΠ·Π»Π° s ΠΊ ΡƒΠ·Π»Ρƒ t, Ρ‚ΠΎ Π’ [v] — Π΄Π»ΠΈΠ½Π° ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅Π³ΠΎ ΠΏΡƒΡ‚ΠΈ ΠΎΡ‚ s ΠΊ v, Π° Н [ v ] — ΡƒΠ·Π΅Π», нСпосрСдствСнно ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΡƒΠ·Π»Ρƒ v Π½Π° ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅ΠΌ ΠΏΡƒΡ‚ΠΈ ΠΎΡ‚ ΡƒΠ·Π»Π° s ΠΊ ΡƒΠ·Π»Ρƒ t. Π’Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠ΅ΠΌ позволяСт ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ массив ΠΏΠΎΠΌΠ΅Ρ‚ΠΎΠΊ X: array [l.n] of bool.

Алгоритм 33. Поиск ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅Π³ΠΎ ΠΏΡƒΡ‚ΠΈ

Proc Dijkstra (Π‘: array [l.n, l. n] of real, // Π΄Π»ΠΈΠ½Ρ‹ Π΄ΡƒΠ³ Π’: array [l.n] of real, // Π΄Π»ΠΈΠ½Ρ‹ ΠΏΡƒΡ‚Π΅ΠΉ .

H: array [l.n] of 0. n) // ΠΏΡ€Π΅Π΄, ΡƒΠ·Π΅Π». for v from 1 to n do T[v] := °° // ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΠΉ ΠΏΡƒΡ‚ΡŒ нСизвСстСн X[v] := false // всС Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π½Π΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Ρ‹ end for.

H[s] := 0 // ΡƒΠ·Π»Ρƒ s Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ T[s] := 0 // ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΠΉ ΠΏΡƒΡ‚ΡŒ ΠΎΡ‚ s ΠΊ s ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ О X[s] := true // ΠΈ ΠΎΠ½ ΠΈΠ·Π²Π΅ΡΡ‚Π΅Π½ v := s // тСкущая Π²Π΅Ρ€ΡˆΠΈΠ½Π° while v*t do // ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΌΠ΅Ρ‚ΠΎΠΊ for u from 1 to n do.

if C [v, u] T[v]+C[v, u] then.

T[u] := T[v]+C[v, u] // Π½Π°ΠΉΠ΄Π΅Π½ Π±ΠΎΠ»Π΅Π΅.

// ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΏΡƒΡ‚ΡŒ ΠΈΠ· $s$ Π² $u$ Ρ‡Π΅Ρ€Π΅Π· $v$ H[u] := v // Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ Π΅Π³ΠΎ.

end if.

end if.

end for.

// поиск ΠΊΠΎΠ½Ρ†Π° ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅Π³ΠΎ ΠΏΡƒΡ‚ΠΈ m := v: =0.

for u from 1 to n do.

if —iX [ u ] & T[u] < m then.

// Π²Π΅Ρ€ΡˆΠΈΠ½Π° v Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅Ρ‚ // ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΠΉ ΠΏΡƒΡ‚ΡŒ ΠΈΠ· s.

v := u; m := T[u].

end if.

end for.

if v=0 then.

stop // Π½Π΅Ρ‚ ΠΏΡƒΡ‚ΠΈ ΠΈΠ· s Π² t.

end if.

X[v] := true // Π½Π°ΠΉΠ΄Π΅Π½ ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΠΉ ΠΏΡƒΡ‚ΡŒ ΠΈΠ· s Π² v.

end while end proc.

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ для примСнимости Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ДСйкстры достаточно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π»ΠΈΠ½Ρ‹ Π΄ΡƒΠ³ Π±Ρ‹Π»ΠΈ Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹. Если ΠΆΠ΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π»ΠΈΠ½Ρ‹ Π΄ΡƒΠ³, Ρ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ДСйкстры ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ΠΌ.

НапримСр, Π² Π³Ρ€Π°Ρ„Π΅ с Ρ‚рСмя ΡƒΠ·Π»Π°ΠΌΠΈ s, t ΠΈ ΠΈ, Ссли Π‘ [ s, t ] =2, Π‘ [ s, u ] =3 ΠΈ Π‘[u, t]=-2, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ 3.3 Π½Π΅ Π½Π°ΠΉΠ΄Π΅Ρ‚ ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅Π³ΠΎ ΠΏΡƒΡ‚ΠΈ Π΄Π»ΠΈΠ½ΠΎΠΉ 1 ΠΈ Π²Ρ‹Π΄Π°ΡΡ‚ ΠΏΡƒΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρ‹ 2.

УсловиС Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΄Π»ΠΈΠ½ Π΄ΡƒΠ³ являСтся достаточным для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ДСйкстры, Π½ΠΎ Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ. НапримСр, Π² Π³Ρ€Π°Ρ„Π΅ с Ρ‚рСмя ΡƒΠ·Π»Π°ΠΌΠΈ s, t ΠΈ ΠΈ, Ссли C[s, t]=2, C[s, u] =-2 ΠΈ Π‘ [ u, t ] =3, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ 3.3 Π½Π°ΠΉΠ΄Π΅Ρ‚ ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΠΉ ΠΏΡƒΡ‚ΡŒ Π΄Π»ΠΈΠ½ΠΎΠΉ 1, хотя Π² Π³Ρ€Π°Ρ„Π΅ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄ΡƒΠ³ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹.

Для Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° коррСктности Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ДСйкстры достаточно Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° while, Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ v ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся ΡƒΠ·Π΅Π», для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ извСстСн ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΠΉ ΠΏΡƒΡ‚ΡŒ ΠΈΠ· ΡƒΠ·Π»Π° s. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Ссли X [ v] = true, Ρ‚ΠΎ Π’ [v] = d (s, v), ΠΈ Π²ΡΠ΅ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π½Π° ΠΏΡƒΡ‚ΠΈ ΠΈΠ· ΡƒΠ·Π»Π° s Π² ΡƒΠ·Π΅Π» v, опрСдСляСмом Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ Π½, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ Ρ‚Π΅ΠΌ ΠΆΠ΅ свойством, Π³. Π΅.

Алгоритм ДСйкстры поиска ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅Π³ΠΎ ΠΏΡƒΡ‚ΠΈ.

Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ (ΠΏΠΎ ΠΈΠ½Π΄ΡƒΠΊΡ†ΠΈΠΈ), ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π· Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ v ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся ΡƒΠ·Π΅Π» s, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΠΉ ΠΏΡƒΡ‚ΡŒ пустой ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ 0 (нСпустыС ΠΏΡƒΡ‚ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΡ€ΠΎΡ‡Π΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΄Π»ΠΈΠ½Ρ‹ Π΄ΡƒΠ³ Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹). ΠŸΡƒΡΡ‚ΡŒ Π’ [u] =d (s, ΠΈ) для всСх Ρ€Π°Π½Π΅Π΅ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Ρ… ΡƒΠ·Π»ΠΎΠ² ΠΈ. Рассмотрим вновь ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹ΠΉ ΡƒΠ·Π΅Π» v, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π±Ρ€Π°Π½ ΠΈΠ· ΡƒΡΠ»ΠΎΠ²ΠΈΡ Π’ [v] = min{ T[u] | ->X[u] }. Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ссли извСстСн ΠΏΡƒΡ‚ΡŒ, проходящий Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹, Ρ‚ΠΎ Π³Π΅ΠΌ самым извСстСн ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΠΉ ΠΏΡƒΡ‚ΡŒ. Допустим (ΠΎΡ‚ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ), Ρ‡Ρ‚ΠΎ Π’ [v] >d (s, v), Ρ‚. Π΅. Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ, Π²Π΅Π΄ΡƒΡ‰ΠΈΠΉ ΠΈΠ· s Π² v, Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΠΌ. Π’ΠΎΠ³Π΄Π° Π½Π° ΡΡ‚ΠΎΠΌ ΠΏΡƒΡ‚ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹. Рассмотрим ΠΏΠ΅Ρ€Π²ΡƒΡŽ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ w Π½Π° ΡΡ‚ΠΎΠΌ ΠΏΡƒΡ‚ΠΈ, Ρ‚Π°ΠΊΡƒΡŽ Ρ‡Ρ‚ΠΎiX [w]. ИмССм: T[w] = d (s, w) < T [v], Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΡ‚ Π²Ρ‹Π±ΠΎΡ€Ρƒ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ v ΠΈ Ρ‚Π΅ΠΌ самым Π΄ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° 3.3.

Π’ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ вСрсии Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π΅Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΡ†Π΅Π½ΠΊΠ° трудоСмкости Π² Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС составляСт 0(ΠΏ2). Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ†ΠΈΠΊΠ» while выполняСтся Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΏ Ρ€Π°Π·, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠ΄Π½Π° Π²Π΅Ρ€ΡˆΠΈΠ½Π° отмСчаСтся, ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π½Π΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°ΡŽΡ‚ΡΡ. Π’ Ρ‚Π΅Π»Π΅ этого Ρ†ΠΈΠΊΠ»Π° Π²Π»ΠΎΠΆΠ΅Π½Ρ‹ Π΄Π²Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»Π°, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… повторяСтся ΠΏ Ρ€Π°Π·. Однако ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Ρ†ΠΈΠΊΠ»Π°Ρ… ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ лишняя Ρ€Π°Π±ΠΎΡ‚Π°: ΠΏΡ€ΠΈ поискС Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° v, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Π½Π°ΠΈΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΠΉ ΠΈΠ· ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½Π½Ρ‹Ρ… ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΡ… ΠΏΡƒΡ‚Π΅ΠΉ, ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ излишнС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ «Π΄Π°Π»Π΅ΠΊΠΈΠ΅» ΡƒΠ·Π»Ρ‹ — ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ искомым ΡƒΠ·Π»ΠΎΠΌ v. Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ, Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ подбирая структуры Π΄Π°Π½Π½Ρ‹Ρ… для хранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΡƒ трудоСмкости Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ДСйкстры Π΄ΠΎ 0(ΠΏ log ΠΏ) Π² Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС[2].

ЭдсгСр Π’ΠΈΠ±Π΅ ДСйкстра (Π½ΠΈΠ΄Π΅Ρ€Π». Edsger Wybe Dijkstra), 1930— 2002 — Π²Ρ‹Π΄Π°ΡŽΡ‰ΠΈΠΉΡΡ нидСрландский ΡƒΡ‡Π΅Π½Ρ‹ΠΉ, ΠΈΠ΄Π΅ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠΊΠ°Π·Π°Π»ΠΈ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ влияниС Π½Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ программирования.

Алгоритм ДСйкстры поиска ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅Π³ΠΎ ΠΏΡƒΡ‚ΠΈ.

Занимался Ρ€Π°Π±ΠΎΡ‚Π°ΠΌΠΈ Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ примСнСния матСматичСской Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π» язык программирования Алгол. Один ΠΈΠ· Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ структурного программирования, Π°Π²Ρ‚ΠΎΡ€ ряда классичСских ΠΊΠ½ΠΈΠ³ Π² ΡΡ‚ΠΎΠΉ области. Π’ 1972 Π³. Π”Сйкстра Π±Ρ‹Π» удостоСн ΠΏΡ€Π΅ΠΌΠΈΠΈ Π’ΡŒΡŽΡ€ΠΈΠ½Π³Π°.

«Π’опрос «ΡƒΠΌΠ΅Π΅Ρ‚ Π»ΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ» ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ Π±ΠΎΠ»ΡŒΡˆΠ΅ смысла, Ρ‡Π΅ΠΌ вопрос «ΡƒΠΌΠ΅Π΅Ρ‚ Π»ΠΈ подводная Π»ΠΎΠ΄ΠΊΠ° ΠΏΠ»Π°Π²Π°Ρ‚ΡŒ ««.

  • [1] Новиков Π€. А. ДискрСтная ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°.
  • [2] Романовский И. Π’. ДискрСтный Π°Π½Π°Π»ΠΈΠ·: ΡƒΡ‡Π΅Π±, пособиС для студСнтов, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ…ΡΡ ΠΏΠΎ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. БПб.: НСвский Π”ΠΈΠ°Π»Π΅ΠΊΡ‚, Π‘Π₯Π’-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³, 2003.
ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ