Wallogit.com
2017 © Pedro PelΓ‘ez
Simple algorithms for graphs
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Algorithm ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠ»Π°ΡΡ Dijkstra Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ°ΠΌΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΡΡΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΠ΅ΠΉΠΊΡΡΡΡ, (*1)
composer require dolphin83/algorithm, (*2)
~~~ php $departure = 'A'; $destination = 'C'; $map['A']['B'] = 2; $map['A']['C'] = 7; $map['A']['D'] = 5; $map['B']['D'] = 3; $map['C']['B'] = 3; $map['D']['C'] = 1;, (*3)
$res = Dijkstra::getCheapestRoute($departure, $destination, $map); ~~~, (*4)
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΌΠ°ΡΡΠΈΡΠ΅ΠΉ ΡΠ°ΡΠΈΡΠΎΠ² "ΠΊΠ°ΠΊ Π΅ΡΡΡ". ΠΡΠ»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΊΠ°Π·Π°Π½Π° ΡΡΠΎΠΈΠΌΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠ· Π³ΠΎΡΠΎΠ΄Π° A Π² Π, Π½ΠΎ Π½Π΅ ΡΠΊΠ°Π·Π°Π½Π° ΡΡΠΎΠΈΠΌΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠ· Π Π² Π, ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠΈΡΠ°Π΅Ρ ΡΡΠΎ ΠΈΠ· Π Π² Π ΠΏΡΠΎΠ΅Ρ Π°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ, Π° Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ - Π½Π΅Π»ΡΠ·Ρ ΠΈ Π±ΡΠ΄Π΅Ρ ΡΡΡΠΎΠΈΡΡ ΠΈΡΠΎΠ³ΠΎΠ²ΡΠΉ ΠΌΠ°ΡΡΡΡΡ ΠΈΡΡ ΠΎΠ΄Ρ ΠΈΠ· Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ., (*5)
Π Π΅ΠΆΠΈΠΌ ΡΠ°Π±ΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΡΠ΅ΡΠ²Π΅ΡΡΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ FALSE. Π’ΠΎΠ³Π΄Π° ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠ· Π Π² Π ΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΡΡΠΈΡΠ°ΡΡ, ΡΡΠΎ ΡΡΠΎΠΈΠΌΠΎΡΡΡ(A->B) = ΡΡΠΎΠΈΠΌΠΎΡΡΡ(B->A) ΠΈ ΠΏΠΎΡΡΡΠΎΠΈΡ ΠΌΠ°ΡΡΡΡΡ ΠΈΡΡ ΠΎΠ΄Ρ ΠΈΠ· Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ., (*6)