ΠΡΡΠ³ΠΎΠ΅ Β· 11 ΠΌΠΈΠ½
ΠΠΎΠΈΡΠΊ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΠ΅ΠΉΠΊΡΡΡΡ: Π³Π΄Π΅ Π½Π°ΠΉΡΠΈ ΠΊΠΎΠ΄ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
ΠΠ΄Π΅ Π½Π°ΠΉΡΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΠ΅ΠΉΠΊΡΡΡΡ: ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Π½Π° GitHub, Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π»Ρ Python, C++.
ΠΠΎΠΈΡΠΊ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΠ΅ΠΉΠΊΡΡΡΡ (ΡΠ°ΡΡΠΎ ΠΎΡΠΈΠ±ΠΎΡΠ½ΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Β«Π±Π°Π½ΠΈ ΠΠΈΠΊΡΡΡΡΒ») Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΠΎΠ΅Π·Π΄ΠΎΠΊ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ. ΠΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΡΠ΅ΠΎΡΠΈΠΈ Π³ΡΠ°ΡΠΎΠ², ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΠΠ΄ΡΠ³Π΅ΡΠΎΠΌ ΠΠ°ΠΉΠ±Π΅ ΠΠ΅ΠΉΠΊΡΡΡΠΎΠΉ Π² Π³ΠΎΠ΄Ρ. ΠΠ³ΠΎ ΡΠ΅Π»Ρ β Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΊΡΠ°ΡΡΠ°ΠΉΡΠ΅Π³ΠΎ ΠΏΡΡΠΈ ΠΎΡ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ½Ρ Π³ΡΠ°ΡΠ° Π΄ΠΎ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ . ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ Π±Π°Π·ΠΎΠ²Π°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΊΠΈ, Π΅Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΏΠΎΠ²ΡΠ΅ΠΌΠ΅ΡΡΠ½ΠΎ Π² ΠΎΡΠΊΡΡΡΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°Ρ , Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΡΠ΅Π±Π½ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°Ρ .
ΠΠ»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΈΠ»ΠΈ ΡΡΡΠ΄Π΅Π½ΡΠ° Β«Π½Π°ΠΉΡΠΈΒ» ΡΡΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Π² ΠΏΡΠΎΠ΅ΠΊΡ ΠΈΠ»ΠΈ ΠΈΠ·ΡΡΠΈΡΡ Π΅Π³ΠΎ ΡΡΡΡΠΊΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ Π»ΠΎΠ³ΠΈΠΊΠΈ ΡΠ°Π±ΠΎΡΡ. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΡΠ΅ΠΊΠ° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΆΠ΅ Π²ΡΡΡΠΎΠ΅Π½ΠΎ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΡΠ·ΡΠΊΠ° (ΠΊΠ°ΠΊ Π² ΡΠ»ΡΡΠ°Π΅ Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ heapq Π² Python) ΠΈΠ»ΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΈΡΠ°ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ Ρ Π½ΡΠ»Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ: ΠΎΡ ΡΡΠ΅Π±Π½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π½Π° ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄Π΅ Π΄ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π²Π΅ΡΡΠΈΠΉ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ Π² ΠΏΡΠΎΠΌΡΡΠ»Π΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ . ΠΠ»ΡΡΠ΅Π²ΡΠΌ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠΌ ΠΏΡΠΈ ΠΏΠΎΠΈΡΠΊΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π±ΡΠ΄ΡΡ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ. Π’Π°ΠΊΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΡΡ Π²Π΅ΡΡΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΈ Π΅Π³ΠΎ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, A* (A-star), ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ²ΡΠΈΡΡΠΈΠΊΠΈ Π΄Π»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΏΠΎΠΈΡΠΊΠ°.
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ Π΅Π³ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ . ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΈ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ.
ΠΠΎΠΈΡΠΊ Π² ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ
Π‘Π°ΠΌΡΠΉ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΠ΅ΠΉΠΊΡΡΡΡ β ΡΡΠΎ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π²Π°ΠΌΠΈ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π³ΡΠ°ΡΠ°ΠΌΠΈ Π² ΡΠ²ΠΎΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈΠ»ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ·ΡΠΊΠ΅ Python Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠ°ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ heapq Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ, ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΠ΅ΠΉΠΊΡΡΡΡ.
Π Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ C++ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² (STL) ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ priority_queue, vector ΠΈ map, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΎΠ±ΡΠ°ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π·Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°. ΠΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΠ°Π·Π΄Π΅Π»Ρ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΊΠΎΠ΄Π° (cookbooks), Π³Π΄Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΊΡΠ°ΡΡΠ°ΠΉΡΠ΅Π³ΠΎ ΠΏΡΡΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΊΠΈΡ
ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ°ΠΌ ΡΠ·ΡΠΊΠ° ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ Π½Π° ΡΠ°Π·Π½ΡΡ
ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ
.
ΠΠ»Ρ Java ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠ°ΡΡΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ (Collections Framework). Π₯ΠΎΡΡ Π³ΠΎΡΠΎΠ²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ dijkstra() Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ JDK ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ Π±ΡΡΡ, Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Queue ΠΈ Map, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ Π΅Π³ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ. Π’Π°ΠΊΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ JGraphT, Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΊΠΎΡΠΎΡΡΡ
ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π³ΠΎΡΠΎΠ²ΡΠ΅, ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Π½Π° Π³ΡΠ°ΡΠ°Ρ
, Π²ΠΊΠ»ΡΡΠ°Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΠ΅ΠΉΠΊΡΡΡΡ.
Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° GitHub
ΠΠ»Π°ΡΡΠΎΡΠΌΠ° GitHub ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΡΡΠΏΠ½Π΅ΠΉΡΠΈΠΌ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΠΌ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΠ΅ΠΉΠΊΡΡΡΡ. ΠΠ»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²Π²Π΅ΡΡΠΈ Π·Π°ΠΏΡΠΎΡ "Dijkstra algorithm" Π² ΡΡΡΠΎΠΊΡ ΠΏΠΎΠΈΡΠΊΠ°, ΠΎΡΡΠΈΠ»ΡΡΡΠΎΠ²Π°Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΠΎ ΡΠ·ΡΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Python, JavaScript, C#). ΠΡ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΡΡΡΡΡΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π², ΠΎΡ ΠΏΡΠΎΡΡΡΡ ΡΡΠ΅Π±Π½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π΄ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠ΅ΡΠ΅ΠΉ. ΠΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΎΠ±ΡΠ°ΡΠ°ΠΉΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π²Π΅Π·Π΄ (stars) ΠΈ Π΄Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ.
ΠΡΠΎΠ±ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΡΠΎΠΈΡ ΡΠ΄Π΅Π»ΠΈΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌ, ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΡΠΌ ΠΊΠ°ΠΊ "Awesome Algorithms" ΠΈΠ»ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΌ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ². Π ΡΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ ΠΊΠΎΠ΄ ΠΎΠ±ΡΡΠ½ΠΎ Ρ ΠΎΡΠΎΡΠΎ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½, ΠΏΠΎΠΊΡΡΡ ΡΠ΅ΡΡΠ°ΠΌΠΈ ΠΈ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠ½ΡΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Π½ΠΎ ΠΈ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² Π½ΡΠ°Π½ΡΠ°Ρ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ Π²Π΅ΡΠ° ΡΠ΅Π±Π΅Ρ (ΠΊΠΎΡΠΎΡΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΠ΅ΠΉΠΊΡΡΡΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ).
ΠΡΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΈΠ· ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΈΡΠΊ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈΠ»ΠΈ Π½Π΅ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ. ΠΡΠ΅Π³Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° (MIT, Apache 2.0, GPL), ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² Π»Π΅Π³Π°Π»ΡΠ½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅. ΠΡΠ»ΠΈ Π²Ρ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΎΠΌ ΠΏΡΠΎΠ΄ΡΠΊΡΠ΅, ΠΈΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² Π±Π΅Π· ΡΠ²Π½ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ ΠΈΠ»ΠΈ Ρ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΌΠΈ, ΡΡΠ΅Π±ΡΡΡΠΈΠΌΠΈ ΠΎΡΠΊΡΡΡΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π΄Π»Ρ Π³ΡΠ°ΡΠΎΠ²
ΠΠΌΠ΅ΡΡΠΎ ΠΏΠΎΠΈΡΠΊΠ° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΊΡΠΈΠΏΡΠ° Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠΌ, ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠ»Ρ Python ΡΡΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° networkx, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ½ΠΊΡΠΈΡ single_source_dijkstra. ΠΠ½Π° Π±Π΅ΡΠ΅Ρ Π½Π° ΡΠ΅Π±Ρ Π²ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΡΡ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π²ΡΠ·Π²Π°ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ ΠΊΠΎΠ΄Π°. ΠΡΠΎ ΡΠ½ΠΈΠΆΠ°Π΅Ρ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΡΡΠΊΠΎΡΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ.
Π ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ΅ JavaScript ΠΈ Node.js ΠΏΠΎΠΏΡΠ»ΡΡΠ½Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π²ΡΠΎΠ΄Π΅ graphlib ΠΈΠ»ΠΈ ngraph. ΠΠ½ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π³ΠΎΡΠΎΠ²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π³ΡΠ°ΡΠΎΠ² ΠΈ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΡΡΠ΅ΠΉ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΊΠΈΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΡΠ°Π±ΠΎΡΠ° Ρ Π³ΡΠ°ΡΠ°ΠΌΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π° Π½Π΅ Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ°ΡΡΠΎ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π³ΡΠ°ΡΠ° ΠΈΠ»ΠΈ ΠΏΠΎΠΈΡΠΊ Π²ΡΠ΅Ρ
ΠΏΡΡΠ΅ΠΉ, Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΡΠ°ΡΡΠ°ΠΉΡΠ΅Π³ΠΎ.
ΠΠ»Ρ Π½Π°ΡΡΠ½ΡΡ
Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΈ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ
Π² Python ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ²ΡΠ·ΠΊΠ° scipy ΠΈ sparse. ΠΠΎΠ΄ΡΠ»Ρ scipy.sparse.csgraph ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΠ΅ΠΉΠΊΡΡΡΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ Π½Π° C ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°Π·ΡΠ΅ΠΆΠ΅Π½Π½ΡΠΌΠΈ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ. ΠΡΠΎ Π»ΡΡΡΠΈΠΉ Π²ΡΠ±ΠΎΡ, Π΅ΡΠ»ΠΈ Π²Π°Ρ Π³ΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΡΡΡΠΈ ΠΈΠ»ΠΈ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ ΡΠ·Π»ΠΎΠ².
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ²
ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΡΠΊΠΎΡΠΎΡΡΡ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ, Π½ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ΠΊΠΎΠ΄Π° Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ.
ΠΡΠΎΡΡΠΎΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π±ΠΎΠ³Π°ΡΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π», Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ Π½Π° ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ .
ΠΠΈΠ±ΠΊΠΎΡΡΡ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·Π°ΡΠΈΠΈ, Π½ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
Π£ΡΠ΅Π±Π½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ
ΠΡΠ»ΠΈ Π²Π°ΡΠ° ΡΠ΅Π»Ρ β Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π°, Π° ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² Π»ΠΎΠ³ΠΈΠΊΠ΅ ΡΠ°Π±ΠΎΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°, Π»ΡΡΡΠΈΠΌ ΠΌΠ΅ΡΡΠΎΠΌ Π±ΡΠ΄ΡΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ. Π‘Π°ΠΉΡΡ Π²ΡΠΎΠ΄Π΅ GeeksforGeeks, Habr ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠΈΠ»ΡΠ½ΡΠ΅ ΡΠ°Π·Π΄Π΅Π»Ρ Stack Overflow ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠ΅ ΡΠ°Π·Π±ΠΎΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΠ΅ΠΉΠΊΡΡΡΡ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΊΠΎΠ΄Π° Π½Π° Π΄Π΅ΡΡΡΠΊΠ°Ρ ΡΠ·ΡΠΊΠΎΠ². Π’Π°ΠΌ ΠΊΠΎΠ΄ ΡΠ°ΡΡΠΎ ΡΠ½Π°Π±ΠΆΠ΅Π½ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΡΠΌΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠΈ, ΠΎΠ±ΡΡΡΠ½ΡΡΡΠΈΠΌΠΈ ΠΊΠ°ΠΆΠ΄ΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ ΡΠΈΠΊΠ»Π°.
ΠΠ»Π°ΡΡΠΎΡΠΌΡ Π΄Π»Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΠΊ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΡΠΌ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ LeetCode ΠΈΠ»ΠΈ Codeforces, ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ Π·Π°Π΄Π°ΡΠΈ Π½Π° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΠ΅ΠΉΠΊΡΡΡΡ. Π ΡΠ°Π·Π΄Π΅Π»Π°Ρ Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡΠΌΠΈ (editorials) ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΡΡΠ°Π»ΠΎΠ½Π½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΡ ΠΎΠΏΡΡΠ½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². ΠΡΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ, ΡΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ Π»ΡΡΡΠΈΡ ΠΏΡΠ°ΠΊΡΠΈΠΊ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ².
ΠΠ½Π»Π°ΠΉΠ½-ΠΊΡΡΡΡ ΠΏΠΎ ΡΡΡΡΠΊΡΡΡΠ°ΠΌ Π΄Π°Π½Π½ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡ Coursera ΠΈΠ»ΠΈ Stepik) ΡΠ°ΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌ Ρ Π»Π΅ΠΊΡΠΈΠΎΠ½Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. Π’Π°ΠΊΠΎΠΉ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» ΠΈΠ΄Π΅Π°Π»Π΅Π½ Π΄Π»Ρ ΡΡΡΠ΄Π΅Π½ΡΠΎΠ², ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΎΡΠΈΡΠ΅Π½ ΠΎΡ Π»ΠΈΡΠ½Π΅ΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠΌΡΡΠ»Π΅Π½Π½ΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² ΠΈ ΡΠΎΠΊΡΡΠΈΡΡΠ΅ΡΡΡ Π½Π° ΡΠΈΡΡΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ ΡΡΠ΅Π±Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π³ΠΎΡΠΎΠ² ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ Π±Π΅Π· Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΠΈ.
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²Ρ Π½Π°ΡΠ»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°, ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π΅Ρ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ Π½Π° Π²Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ . ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΠ΅ΠΉΠΊΡΡΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΠΎΠ³ΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅: ΠΎΠ½ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΡΠ΅Π±ΡΠ°ΠΌΠΈ, ΠΈΠΌΠ΅ΡΡΠΈΠΌΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ Π²Π΅Ρ. ΠΡΠ»ΠΈ Π²Π°Ρ Π³ΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°ΠΊΠΈΠ΅ ΡΠ΅Π±ΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ Π½Π΅Π²Π΅ΡΠ½ΡΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌ ΠΈΠ»ΠΈ Π·Π°ΡΠΈΠΊΠ»ΠΈΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΊΠ°ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΠ΅Π»Π»ΠΌΠ°Π½Π°-Π€ΠΎΡΠ΄Π°.
ΠΠ»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠΉ Π³ΡΠ°Ρ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²Ρ Π·Π°ΡΠ°Π½Π΅Π΅ Π·Π½Π°Π΅ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ (ΠΊΡΠ°ΡΡΠ°ΠΉΡΠΈΠΉ ΠΏΡΡΡ). ΠΡΠΎΠ³ΠΎΠ½ΠΈΡΠ΅ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π° ΡΡΠΎΠΌ Π³ΡΠ°ΡΠ΅ ΠΈ ΡΡΠ°Π²Π½ΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. Π’Π°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Π³ΡΠ°Π½ΠΈΡΠ½ΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ: Π³ΡΠ°Ρ Ρ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ½ΠΎΠΉ, Π½Π΅ΡΠ²ΡΠ·Π½ΡΠΉ Π³ΡΠ°Ρ (Π³Π΄Π΅ ΠΏΡΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½), Π³ΡΠ°Ρ Ρ ΡΠΈΠΊΠ»Π°ΠΌΠΈ. ΠΠΎΡΡΠ΅ΠΊΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΡΠΈ ΡΠΈΡΡΠ°ΡΠΈΠΈ Π±Π΅Π· ΡΠ±ΠΎΠ΅Π².
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ°ΠΈΠ²Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ O(VΒ²), Π³Π΄Π΅ V β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²Π΅ΡΡΠΈΠ½. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ (ΠΊΡΡΠΈ) ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π·Π° O(E + V log V), Π³Π΄Π΅ E β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅Π±Π΅Ρ. ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠΈΡ Π³ΡΠ°ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π°ΠΈΠ²Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ Π·Π°Π΄Π΅ΡΠΆΠΊΠ°ΠΌ Π² ΡΠ°Π±ΠΎΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠ±ΠΈΡΠ°ΠΉΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ.
ΠΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ
ΠΡΡΡΡΡΡΠ²ΡΡΡ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ
ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π²ΡΠ΄Π°Π΅Ρ Π½Π΅Π²Π΅ΡΠ½ΡΠΉ ΠΏΡΡΡ ΠΈΠ»ΠΈ Π·Π°Π²ΠΈΡΠ°Π΅Ρ
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΡΡΡ ΠΈΠ»ΠΈ null Π΄Π»Ρ Π½Π΅Π΄ΠΎΡΡΠΈΠΆΠΈΠΌΡΡ ΡΠ·Π»ΠΎΠ²
ΠΡΠ΄Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ ΠΈΠ»ΠΈ Π½Π΅Π²Π΅ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ
ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°ΡΡΠ΅Ρ Π»ΠΎΠ³Π°ΡΠΈΡΠΌΠΈΡΠ΅ΡΠΊΠΈ
ΠΡΠ΅ΠΌΡ ΡΠ°ΡΡΠ΅Ρ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΈΡΠ½ΠΎ Π½Π° Π±ΠΎΠ»ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ
Π§Π°ΡΡΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ
ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ°ΠΌΡΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠΏΡΡΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΠ΅ΠΉΠΊΡΡΡΡ Π΄Π»Ρ Π³ΡΠ°ΡΠΎΠ² Ρ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΠΈΠΊΠ»Π°ΠΌΠΈ. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΠ΅Π»Π»ΠΌΠ°Π½Π°-Π€ΠΎΡΠ΄Π°, ΠΠ΅ΠΉΠΊΡΡΡΠ° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ, ΡΡΠΎ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ Π΄ΠΎ Π²Π΅ΡΡΠΈΠ½Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΌΠ΅Π½ΡΡΠ°ΡΡΡΡ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΡΡΠΈ, ΡΡΠΎ Π½Π΅Π²Π΅ΡΠ½ΠΎ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ Π²Π΅ΡΠΎΠ². ΠΡΠΎ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅Π»ΡΠ·Ρ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠ°Π²ΠΊΠΎΠΉ ΠΊΠΎΠ΄Π°.
ΠΡΡΠ³Π°Ρ ΡΠ°ΡΡΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ° ΡΠ²ΡΠ·Π°Π½Π° Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡΠ΅ΡΠ΅Π΄ΡΡ Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ. Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ·ΡΠΊΠ°Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ, Π½Π΅ ΡΠ΄Π°Π»ΡΡ ΡΡΠ°ΡΡΠΉ. ΠΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ°Π·Π΄ΡΠ²Π°Π½ΠΈΡ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΠΈ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Ρ ΠΎΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΠ°ΡΡΡΡ Π²Π΅ΡΠ½ΡΠΌ. ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ (Fibonacci heap) ΠΈΠ»ΠΈ Π°ΠΊΠΊΡΡΠ°ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌΠΈ.
Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΠΈΡ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. Π Π°ΡΡΡΠΎΡΠ½ΠΈΠ΅ Π΄ΠΎ ΡΡΠ°ΡΡΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠ½Ρ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ°Π²Π½ΠΎ 0, Π° Π΄ΠΎ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ β Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΡΡΠΈ (ΠΈΠ»ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΌΡ ΡΠΈΡΠ»Ρ). ΠΡΠ»ΠΈ Π·Π°Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ, Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Π½Π΅Π²Π΅ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ Π²ΡΠ΄Π°ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΠΉ ΠΌΠ°ΡΡΡΡΡ. ΠΡΠ΅Π³Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ Π±Π»ΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΡΡΠΊΠΎΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°.
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΠ΅ΠΉΠΊΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΡΡΠΈ Π½Π° ΠΊΠ°ΡΡΠ΅?
ΠΠ°, ΡΡΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠΠΎΡΠΎΠ³ΠΈ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΡΠ΅Π±ΡΠ° Π³ΡΠ°ΡΠ°, ΠΏΠ΅ΡΠ΅ΠΊΡΠ΅ΡΡΠΊΠΈ β ΠΊΠ°ΠΊ Π²Π΅ΡΡΠΈΠ½Ρ, Π° Π΄Π»ΠΈΠ½Π° Π΄ΠΎΡΠΎΠ³ΠΈ ΠΈΠ»ΠΈ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ΅Π·Π΄Π° β ΠΊΠ°ΠΊ Π²Π΅Ρ ΡΠ΅Π±ΡΠ°. ΠΠ΄Π½Π°ΠΊΠΎ Π΄Π»Ρ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΊΠ°ΡΡ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, A*), ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΈΡΡΡΠΉ ΠΠ΅ΠΉΠΊΡΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΡΡ ΠΏΠ»ΠΎΡΠ°Π΄Ρ.
Π ΡΠ΅ΠΌ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°ΠΌΠΈ ΠΠ΅ΠΉΠΊΡΡΡΡ ΠΈ Π€Π»ΠΎΠΉΠ΄Π°-Π£ΠΎΡΡΠ΅Π»Π»Π°?
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΠ΅ΠΉΠΊΡΡΡΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡ ΠΊΡΠ°ΡΡΠ°ΠΉΡΠΈΠ΅ ΠΏΡΡΠΈ ΠΎΡ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ½Ρ Π΄ΠΎ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ (Single-Source). ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π€Π»ΠΎΠΉΠ΄Π°-Π£ΠΎΡΡΠ΅Π»Π»Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡ ΠΊΡΠ°ΡΡΠ°ΠΉΡΠΈΠ΅ ΠΏΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ΅ΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠΈ Π²Π΅ΡΡΠΈΠ½ (All-Pairs). ΠΠ΅ΠΉΠΊΡΡΡΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±ΡΡΡΡΠ΅Π΅ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΎΡΠΊΠΈ ΡΡΠ°ΡΡΠ°, Π€Π»ΠΎΠΉΠ΄-Π£ΠΎΡΡΠ΅Π»Π» ΡΠ΄ΠΎΠ±Π΅Π½, ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π»ΡΠ±ΡΠΌΠΈ Π΄Π²ΡΠΌΡ ΡΠΎΡΠΊΠ°ΠΌΠΈ Π·Π°ΡΠ°Π½Π΅Π΅.
ΠΠΎΡΠ΅ΠΌΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ Π²Π΅ΡΠ°ΠΌΠΈ?
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ Π²Π΅ΡΡΠΈΠ½Ρ ΠΊΠ°ΠΊ Β«ΠΏΠΎΡΠ΅ΡΠ΅Π½Π½ΡΡΒ», ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡ ΠΊ Π½Π΅ΠΉ ΠΊΡΠ°ΡΡΠ°ΠΉΡΠΈΠΉ ΠΏΡΡΡ. ΠΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅Π±Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ·ΠΆΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡΡΡ ΠΏΡΡΡ ΠΊΠΎΡΠΎΡΠ΅ ΡΠ΅ΡΠ΅Π· Π΄ΡΡΠ³ΡΡ Π²Π΅ΡΡΠΈΠ½Ρ, Π½ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΆΠ΅ Π½Π΅ Π²Π΅ΡΠ½Π΅ΡΡΡ ΠΊ ΠΏΠ΅ΡΠ΅ΡΡΠ΅ΡΡ Β«ΠΏΠΎΡΠ΅ΡΠ΅Π½Π½ΠΎΠΉΒ» Π²Π΅ΡΡΠΈΠ½Ρ, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅.
ΠΠ΄Π΅ Π½Π°ΠΉΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Go ΠΈΠ»ΠΈ Rust?
ΠΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΊΠ°ΡΡ Π² ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΠ·ΡΠΊΠ° Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈΠ»ΠΈ Π½Π° ΡΠ°ΠΉΡΠ΅ pkg.go.dev (Π΄Π»Ρ Go) ΠΈ crates.io (Π΄Π»Ρ Rust). Π’Π°ΠΊΠΆΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ ΠΏΠΎΠΈΡΠΊ Π½Π° GitHub Ρ ΡΠΈΠ»ΡΡΡΠΎΠΌ ΠΏΠΎ ΡΠ·ΡΠΊΡ ΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΎΠΉ ΠΏΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ Π·Π²Π΅Π·Π΄.
ΠΡΠΆΠ½ΠΎ Π»ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π°Π²ΡΠΎΡΠ° ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΈΠ· ΠΎΡΠΊΡΡΡΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ²?
ΠΡΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ. ΠΠΈΡΠ΅Π½Π·ΠΈΠΈ ΡΠΈΠΏΠ° MIT ΠΈΠ»ΠΈ Apache ΡΡΠ΅Π±ΡΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΎΠ± Π°Π²ΡΠΎΡΡΠΊΠΈΡ ΠΏΡΠ°Π²Π°Ρ . ΠΠΈΡΠ΅Π½Π·ΠΈΡ GPL ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ ΠΎΡΠΊΡΡΡΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°. ΠΡΠ΅Π³Π΄Π° ΡΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» LICENSE Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.
ΠΠ°ΠΊ ΡΡΠΊΠΎΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π½Π° Π±ΠΎΠ»ΡΡΠΈΡ Π³ΡΠ°ΡΠ°Ρ ?
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΡΡΠΈ (heap). ΠΠ»Ρ ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΈΡ ΠΊΠ°ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠΉΡΠ΅ Π΄Π²ΡΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ ΠΏΠΎΠΈΡΠΊ (Π·Π°ΠΏΡΡΠΊ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡ ΡΡΠ°ΡΡΠ° ΠΈ ΡΠΈΠ½ΠΈΡΠ°) ΠΈΠ»ΠΈ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Contraction Hierarchies.