рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдмрд╛рд░ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдерд╛ рдЬреЛ рд╢рд╣рд░ рдХреЗ рдирдХреНрд╢реЗ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рдерд╛ред рдФрд░ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдЙрддреНрдкрдиреНрди рд╣реБрдЖ рдХрд┐ рдЪреВрдВрдХрд┐ рдорд╛рд░реНрдЧреЛрдВ рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкрд░рд┐рд╡рд╣рди рдХреЗ рд╕рдВрдЧрдд рд╕реНрдЯреЙрдк рдХреЗ рд╕рд╛рде рдПрдХ рдирдХреНрд╢рд╛ рд╣реИ, рддреЛ рдЙрд╕ рдкрд░ рдмрд┐рдВрджреБ A рд╕реЗ рдмрд┐рдВрджреБ B рддрдХ рдХреЗ рд░рд╛рд╕реНрддреЗ рдХреА рдЦреЛрдЬ рдХреНрдпреЛрдВ рди рдХрд░реЗрдВред
рдЪреВрдВрдХрд┐ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░, рдЬрд╣рд╛рдВ рдпрд╣ рд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛, рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рдВрдХреАрд░реНрдг рдЗрдВрдЯрд░рдиреЗрдЯ рдЪреИрдирд▓ рд╣реИ, рдЦреЛрдЬ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЕрд░реНрдерд╛рдд, рд╕рд░реНрд╡рд░ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдмрд┐рдирд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдзреНрдпрд╛рди рдирд╣реАрдВ рдЦреЛрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдФрд░ рдЙрд╕реЗ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдо рджреЗ рд╕рдХрддрд╛ рдерд╛ред
рд▓рдЧрднрдЧ рдПрдХ рдпрд╛ рджреЛ рдШрдВрдЯреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдмреИрдард╛ рд░рд╣рд╛ рдФрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╕реЛрдЪ рд╕рдХрд╛, рдФрд░ рдлрд┐рд░ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛ рдХрд┐ рдореИрдВ рдорд╛рд░реНрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рди рдХрд┐ рдХрдИ рд╕реНрдЯреЙрдк, рдмрд▓реНрдХрд┐ 1 рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВред рдФрд░ рдЕрдЧрд░ рдореИрдВ рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдПрдХ рдмрд┐рдВрджреБ рдкрд░ рдореЛрдбрд╝рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдПрдХ рдмрд╣реБрдд рд╕рд░рд▓ рдЧреНрд░рд╛рдл рдорд┐рд▓рддрд╛ рд╣реИред
рд╡рд┐рдЪрд╛рд░ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛, рдФрд░ рдореБрдЭреЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ред
рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рдереА рдХрд┐ рд╕рд╛рдЗрдЯреЛрдВ рд╕реЗ рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдкрд░рд┐рд╡рд╣рди рдХрд░рдирд╛ рдерд╛ред рдлрд┐рд░ рдЙрд╕рдиреЗ рдЧрд┐рдирддреА рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдард╛рдиреАред
рдпрд╣ рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рдХрд╛рдо рдирд╣реАрдВ рдерд╛, рд╣рдо рдорд╛рд░реНрдЧ рдХреЗ рд╣рд░ рдкрдбрд╝рд╛рд╡ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рддреНрд░рд┐рдЬреНрдпрд╛ рдореЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рдорд╛рд░реНрдЧ рдХреЗ рдард╣рд░рд╛рд╡ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рддреНрд░рд┐рдЬреНрдпрд╛ рдиреЗ 600 рдореАрдЯрд░ (рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг 400 рдореАрдЯрд░ рдореЗрдВ) рд▓рд┐рдпрд╛ - рдЕрдиреБрдорд╛рдирд┐рдд рджреВрд░реА рдЬреЛ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдПрдХ рд╕реНрдЯреЙрдк рд╕реЗ тАЛтАЛрджреВрд╕рд░реЗ рд╕реНрдерд╛рди рдкрд░ рдкреИрд░ рдореЗрдВ рджрд░реНрдж рдХреЗ рдмрд┐рдирд╛ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕рдВрднрд╡рддрдГ, рдпрд╣ рджреВрд░реА рдХрдо рд╣реЛ рд╕рдХрддреА рд╣реИ, рдХрд╣рддреЗ рд╣реИрдВ, 200 рдореАрдЯрд░ рддрдХ, рдЪреМрд░рд╛рд╣реЗ рдкрд░ рдПрдХ рд╕реНрдЯреЙрдк рд╕реЗ тАЛтАЛрджреВрд╕рд░реЗ рддрдХ рдХреА рджреВрд░реА рдЗрд╕ рджреВрд░реА рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдЗрди рд╕рднреА рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдПрдХ рдЧреНрд░рд╛рдл рдорд┐рд▓рд╛, рдЬрд┐рд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрдк рдЬрд▓реНрджреА рд╕реЗ рдПрдХ рдорд╛рд░реНрдЧ рд╕реЗ рджреВрд╕рд░реЗ рдорд╛рд░реНрдЧ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдореЗрдВ рдПрдХ рдЧреНрд░рд╛рдл рдорд┐рд▓рд╛ рд╣реИ рдЬреЛ рдПрдХ рд╢рд╣рд░реА рдкрд░рд┐рд╡рд╣рди рдорд╛рд░реНрдЧ рд╕реЗ рджреВрд╕рд░реЗ рддрдХ рдХреЗ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдПрдХ рддрд░рд╣ рдХрд╛ рдореЗрдЯрд╛-рдЧреНрд░рд╛рдлред
рдХрдИ рдорд╣реАрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рджреЛ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдлрд┐рд░ рдореИрдВ рдирд╡реАрдирддрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред
рд╡реАрдбрд┐рдпреЛ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рднрдпрд╛рдирдХ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред
рдЪрд░рдгреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдФрд╕рдд рд╕рдордп:
gpt - 0.009 s, рдХреНрд▓рд┐рдХ рдмрд┐рдВрджреБ рдкрд░ рдирд┐рдХрдЯрддрдо рд╕реНрдЯреЙрдк рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ
grt - 0.001, рдорд╛рд░реНрдЧ рд╕реЗ рдорд╛рд░реНрдЧ рдХрд╛ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рдорд╛рд░реНрдЧ рдЦреЛрдЬреЗрдВ
рдЙрдкрдпреБрдХреНрдд - 0.0001, рд╣рдорд╛рд░реЗ рдорд╛рд░реНрдЧ рдореЗрдВ рд╕реНрдЯреЙрдк рдФрд░ рдЯрд░реНрдирд┐рдВрдЧ рдкреЙрдЗрдВрдЯреНрд╕ рдЬреЛрдбрд╝реЗрдВ
рд╕рднреА - 0.01 рд╕реА, рдХреБрд▓ рдкрде рдЦреЛрдЬ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп
рдЬрд╛рдирдХрд╛рд░реА:
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╢рд╣рд░ рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдирдХреНрд╢рд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╢рд╣рд░ рдХреЗ рдкрд░рд┐рд╡рд╣рди рдорд╛рд░реНрдЧ (90 рдорд╛рд░реНрдЧ) рдореБрджреНрд░рд┐рдд рд╣реИрдВ рдФрд░ рдЗрди рдорд╛рд░реНрдЧреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрдЧрдд рд╕реНрдЯреЙрдк рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╣реИрдВред
рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░, рдорд╛рд░реНрдЧ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ:
рдЖрдзрд╛рд░ рд╕рдВрд░рдЪрдирд╛ рд╡рд┐рд╡рд░рдг рдмреЛрд░рд┐рдВрдЧрдбреЗрдЯрд╛ рдирд┐рдореНрди рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
route( id, name, color, route_type_id ) // route_type( id, name ) // - , , , , route_points( id, marker_description_id, route_id, marker_order ) // , marker( id, x, y, address ) // marker_category( id, name ) // marker_description( id, name, marker_category_id, marker_id )
рддрд╛рдХрд┐ рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдХрд┐рд╕реА рдорд╛рд░реНрдЧ рдХреА рдЦреЛрдЬ рдХрд░реЗрдВ, рддреЛ рд╕реНрдЯреЙрдк (1 рдорд╛рд░реНрдЧ рдХреЗ рднреАрддрд░) рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдордп рдмрд░реНрдмрд╛рдж рди рдХрд░реЗрдВ, рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рдЧрдгрдирд╛ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд▓рд┐рдЦреЗрдВред
рджреВрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:
route_distance( route_id, // roite_point_from_id, // roite_point_to_id, // distance // )
рдЕрдЧрд▓рд╛, рд╣рдо рдмрджрд▓рд╛рд╡реЛрдВ рдХрд╛ рдПрдХ рдореЗрдЯрд╛-рдЧреНрд░рд╛рдл рдмрдирд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН, рд╣рдо рдЙрди рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рд░реЛрдХреЗрдВрдЧреЗ, рдЬрд┐рдирдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рджреВрд╕рд░реЗ рдорд╛рд░реНрдЧ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ 400 рдореАрдЯрд░ рдХрд╛ рджрд╛рдпрд░рд╛ рдЪреБрдирд╛ред
рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкрд░рд┐рдгрд╛рдо рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ:
route_cross_points( route_from_id, // route_to_id, // route_point_from_id, // route_point_to_id, // distance // ) //,
Php рдореЗрдВ рдбреЗрдЯрд╛ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ
рдореЗрд░реЗ рд╕рднреА MYSQL- рдЖрдзрд╛рд░рд┐рдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрд╣реБрдд рдзреАрдореЗ рдереЗред рдореИрдВрдиреЗ рдмреЗрд╕ рд╕реЗ рджреВрд░ рдЬрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рдЕрдирд▓реЛрдб рдХрд┐рдпрд╛ рдФрд░ рд╕реЙрдХреЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдкрд▓реЛрдб рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдореЗрдВ рд▓рдЧрднрдЧ 19MB RAM рд▓рдЧрддрд╛ рд╣реИред
рдореБрдЦреНрдп рд╕рд░рдгреА рд╣рдорд╛рд░реА $ рдЧреНрд░реЗрдл рд╕рд░рдгреА рд╣реИред рдпрд╣ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рддреНрд░рд┐-рдЖрдпрд╛рдореА рд╕рд╛рд░рдгреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ:
- 1 рдореБрдЦреНрдп рдорд╛рд░реНрдЧ рдЬрд┐рд╕рд╕реЗ рд╣рдо рдмрджрд▓рддреЗ рд╣реИрдВ
- рджреВрд╕рд░реА рдХреБрдВрдЬреА рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдмрджрд▓рддреЗ рд╣реИрдВ
- рддреАрд╕рд░рд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдмрд┐рдВрджреБ
$r = $this->db->query(' select routeFrom rf, routeTo rt, markerFrom mf, markerTo mt, distance d from route_cross_points RCP '); $kf = 0; foreach($r as $k => $v) { $this->graf[(int)($v['rf'])][(int)($v['rt'])][] = array((int)($v['mf']), (int)($v['mt']), (float)($v['d'])); } $graf[$idFrom][$idTo] = array( 0 => $v1,
рдЪреВрдВрдХрд┐ рдПрдХ рдорд╛рд░реНрдЧ рдХрд╛ рдард╣рд░рд╛рд╡ рджреВрд╕рд░реЗ рдХреЗ 2 рдкрдбрд╝рд╛рд╡реЛрдВ рдХреЗ рдмреАрдЪ рдЧрд┐рд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдорд╛рд░реНрдЧ 1 рд╕реЗ рдЕрдзрд┐рдХ рдмрд┐рдВрджреБ рдкрд░ рд╕реНрдкрд░реНрд╢ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдХреЗ рдХрдИ рд╡рд┐рдХрд▓реНрдк рдорд┐рд▓реЗрдВрдЧреЗред рддреЛ, $ v1, $ v2 рдпреЗ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рд╣реИрдВред
рд╕реНрдореГрддрд┐ рдореЗрдВ рднреА рдорд╛рд░реНрдЧ рдХреЗ рднреАрддрд░ рджреВрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдлрд╛рд░реНрдо рдХрд╛ рдПрдХ рд╕рд░рдгреА:
$ рдорд╛рд░реНрдЧрдбрд┐рд╕реНрдЯреЗрдВрд╕ [$ idRoute] [$ pFrom] [$ pTo] = (рдлреНрд▓реЛрдЯ);
рдЬрд╣рд╛рдВ:
- $ idRoute - рд╣рдорд╛рд░реЗ рдорд╛рд░реНрдЧ рдХреА рдЖрдИрдбреА,
- $ pFrom - рдХрд┐рд╕рдХреЗ рд╕рд╛рде рдЬрд╛рдирд╛ рд╣реИ,
- $ pTo - рдЬрд╣рд╛рдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░реБрдХреЗрдВ,
- (рдлреНрд▓реЛрдЯ) - рд╕рд╛рд░ рдЗрдХрд╛рдЗрдпреЛрдВ рдореЗрдВ рдкрде рдХрд╛ рдореВрд▓реНрдпред
$rt = $this->db->query(' select route_id rni, POINT1 p1, POINT2 p2, distance d from route_distance '); foreach($rt as $k => $v) { $this->routeDistance[(int)($v['rni'])][(int)($v['p1'])][(int)($v['p2'])] = (int)($v['d']); }
рд░рд╛рд╕реНрддрд╛ рдЦреЛрдЬреЛ
рдЦреЛрдЬ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдкрдбрд╝рд╛рд╡ рдЦреЛрдЬрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдХрд╣рд╛рдВред рд╣рдордиреЗ ($ idFrom) рдФрд░ рдЬрд╣рд╛рдБ ($ idTo) рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдХрдЯрддрдо рд╕реНрдЯреЙрдк рдкрд╛рдпрд╛, рд╣рдордиреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рд╕реНрдЯреЙрдк рдорд╛рд░реНрдЧреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ, рд░рд╛рд╕реНрддрд╛ рдЦреЛрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
1 рдкрд░рд┐рд╡рд░реНрддрди рд╡рд╛рд▓рд╛ рдорд╛рд░реНрдЧ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП:
if(isset($graf[$idFrom][$idTo])) {
рдПрдХ рдкрде рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреЛрдЬ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 2 рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдХреЗ рд╕рд╛рде, рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
foreach($graf[$idFrom] as $keyOne => $one) { if(isset($graf[$idTo][$keyOne])) {
рддрджрдиреБрд╕рд╛рд░, рдПрдХ рдорд╛рд░реНрдЧ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 3 рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдХреЗ рд╕рд╛рде, рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд▓рд┐рдЦреЗрдВ:
foreach($graf[$idFrom] as $keyOne => $one)
рдЗрди рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ $ id1 -> $ id2 -> $ id3 -> $ id4 рдХреЗ рдорд╛рд░реНрдЧреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдорд┐рд▓рддрд╛ рд╣реИред рдЬрд╣рд╛рдБ $ id * рдорд╛рд░реНрдЧ рдЖрдИрдбреА рд╣реИред
рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рд░рд╛рд╕реНрддрд╛ рд╕рдмрд╕реЗ рддреЗрдЬ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдЯрд╛рд░реНрдЯ рд╕реНрдЯреЙрдк ($ pStart) рдФрд░ рдПрдХ рдПрдВрдб рд╕реНрдЯреЙрдк ($ pEnd) рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, $ рдЧреНрд░рд╛рдл рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ, рд╣рдо рд╣рд╕реНрддрд╛рдВрддрд░рдг рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ (рдЬрд╣рд╛рдВ, рдЬрд╣рд╛рдВ рдФрд░ рджреВрд░реА) $ v1, $ v2 рдХреЗ рд╣рдорд╛рд░реЗ рдореВрд▓реНрдп рд╣реИрдВред
рдореИрдВ $ id1 -> $ id2 рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреВрдВрдЧрд╛ред рдЙрдиреНрд╣реЗрдВ рд╕рднреА рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдгреЛрдВ рдкрд░ рдбреЗрдЯрд╛ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
$id1($pStart, $v1['from']) -> $id2($v1['to'], $pEnd) $id1($pStart, $v2['from']) -> $id2($v2['to'], $pEnd) $id1($pStart, $v3['from']) -> $id2($v3['to'], $pEnd)
рдереЛрдбрд╝рд╛ рд╕реНрдкрд╖реНрдЯ, рдЙрд╕ рдорд╛рд░реНрдЧ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рд╕рдм рдХреБрдЫ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
$routeDistance[$id1][$pStart][$v1['from']] + $v1['distance'] + $routeDistance[$id2][$v1['to']][$pEnd]; $routeDistance[$id1][$pStart][$v2['from']] + $v2['distance'] + $routeDistance[$id2][$v2['to']][$pEnd]; $routeDistance[$id1][$pStart][$v3['from']] + $v3['distance'] + $routeDistance[$id2][$v3['to']][$pEnd];
$ рдорд╛рд░реНрдЧрдбрд┐рд╕реНрдЯреЗрдВрд╕ [$ id1] [$ pStart] [$ v1 ['рд╕реЗ']] - рдорд╛рд░реНрдЧ рдХреЗ рдЕрдВрджрд░ рдХреА рджреВрд░реАред
$ v1 ['рджреВрд░реА'] - рдХрд┐рддрдирд╛ рд╕рдордп рд░реЛрдкрд╛рдИ рдореЗрдВ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдореВрд░реНрдд рдЗрдХрд╛рдЗрдпреЛрдВ рдореЗрдВ рднреАред
рддрджрдиреБрд╕рд╛рд░, рдЧрдгрдирд╛ рдХреА рдЧрдИ рд░рд╛рд╢рд┐рдпреЛрдВ рдХрд╛ рдиреНрдпреВрдирддрдо рдореВрд▓реНрдп, рдпрд╣ рд╣рдорд╛рд░рд╛ рд╡рд╛рдВрдЫрд┐рдд рдкрде рд╣реЛрдЧрд╛ред рдлрд┐рд░ рд╣рдо рдЙрд╕ рд╕реНрдЯреЙрдк рдХреЛ рдмрд╣рд╛рд▓ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдорд╛рд░реНрдЧ рдХреЗ рдЕрдВрджрд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдорд╛рд░реНрдЧ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдФрд░ рдЙрд╕рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдмрд┐рдВрджреБ рдХреЗ рдмреАрдЪ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг
рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрдИ рдорд╛рд░реНрдЧ рдЪреБрдиреЗрдВрдЧреЗ:
рд╣рдо рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдмрд┐рдВрджреБрдУрдВ рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВ рдФрд░ рдЧреНрд░рд╛рдл рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдореЗрдВ рдорд╛рд░реНрдЧ 2 рд╕реЗ 5 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рдл рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдореЗрдВ рдРрд╕реЗ рд░рд╛рд╕реНрддреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реИ:
рдЖрдЧреЗ рд╣рдо рдкреНрд░рд╛рдкреНрдд рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рдорд╛рд░реНрдЧ рд╕рдмрд╕реЗ рддреЗрдЬ рд╣реИред
рдорд╛рд░реНрдЧ рдХреЗ "рдЖрдХрд░реНрд╖рдг" рдХреЗ рдореВрд▓реНрдп рдХреА рдЧрдгрдирд╛:
- рд╣рдо рдорд╛рд░реНрдЧ рдХреА рд╢реБрд░реБрдЖрдд рдХрд╛ рд░рд╛рд╕реНрддрд╛ рд░реЛрдХрддреЗ рд╣реИрдВ рдФрд░ рджреВрд╕рд░реЗ рдорд╛рд░реНрдЧ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдард╣рд░рд╛рд╡ рд╣реЛрддреЗ рд╣реИрдВред Path_distance рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдорд╛рд░реНрдЧ рдХреЗ рднреАрддрд░ рдкреНрд░рд╛рд░рдВрдн рд╕реНрдЯреЙрдк рд╕реЗ тАЛтАЛрд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЗ рд╕реНрдЯреЙрдк рддрдХ рдХреА рд▓рдВрдмрд╛рдИ рдкрд╛рддреЗ рд╣реИрдВред
- рдЕрдм рдЖрдкрдХреЛ рдкреНрд░рддреНрдпрд╛рд░реЛрдкрдг рдХреЗ рд▓рд┐рдП рд╕рдордп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдорд╛рд░реНрдЧ_рдХреНрд░реЙрд╕_рдкреЙрдЗрдВрдЯ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЧрдгрдирд╛ рдХреА рдЧрдИ рд▓рдВрдмрд╛рдИ рдХреЛ рдЙрд╕ рд╕реНрдЯреЙрдк рдХреЗ рдмреАрдЪ рдЬреЛрдбрд╝реЗрдВ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЬрд┐рд╕ рд╕реНрдЯреЙрдк рдХреЗ рд▓рд┐рдП рд╣рдо рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВред
- рдкреНрд░рддреНрдпреЗрдХ рдорд╛рд░реНрдЧ рдХреЗ рд▓рд┐рдП рджреЛрд╣рд░рд╛рдПрдБред
рд╣рдорд╛рд░реЗ рдирдореВрдиреЗ рд╕реЗ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рд▓реЗрдВ
$ рдорд╛рд░реНрдЧрдбрд┐рд╕реНрдЯреЗрдВрд╕ [2] [p.1] [p.3] + d1 + $ рдорд╛рд░реНрдЧрдбрд┐рд╕реНрдЯреЗрдВрд╕ [рей] [p.5] [p.6] + d3 + $ рдорд╛рд░реНрдЧрдбрд┐рд╕реНрдЯреЗрдВрд╕ [рел] [p.7] [p.8] ] = (рдлреНрд▓реЛрдЯ)
$ рдорд╛рд░реНрдЧрдбрд┐рд╕реНрдЯреЗрдВрд╕ [2] [p.1] [p.4] + d2 + $ рдорд╛рд░реНрдЧрдбрд┐рд╕реНрдЯреЗрдВрд╕ [рей] [p.5] [p.6] + d3 + $ рдорд╛рд░реНрдЧрдбрд┐рд╕реНрдЯреЗрдВрд╕ [рел] [p.7] [p.8] ] = (рдлреНрд▓реЛрдЯ)
$ рдорд╛рд░реНрдЧрдбрд┐рд╕реНрдЯреЗрдВрд╕ - рдорд╛рд░реНрдЧ рдХреЗ рднреАрддрд░ рдХреА рджреВрд░реАред
рдбреА * - рдкреНрд░рддреНрдпрд╛рд░реЛрдкрдг рдХреЗ рд▓рд┐рдП рд╕рдордпред
p.1 - рдЬрд╣рд╛рдВ рд╣рдо рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣рд╛рдВ рд░реБрдХреЗрдВред
p.8 - рдЬрд╣рд╛рдВ рд╣рдо рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕реЗ рд░реЛрдХреЗрдВред
d1 - p.3 рдФрд░ p.5 рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА
рдиреНрдпреВрдирддрдо рд╕рдВрдЦреНрдпрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред
рдХреНрдпрд╛ рдЧрд╛рдпрдм рд╣реИ рдФрд░ рдХреИрд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╣реИ:
- рдЬрдмрдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕рдбрд╝рдХреЛрдВ рдХреЗ рдореМрдЬреВрджрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рд╡рд╣рди рдП рд╕реЗ рд╕реНрдЯреЙрдк рддрдХ рдПрдХ рдкреИрджрд▓ рдпрд╛рддреНрд░реА рдорд╛рд░реНрдЧ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ рдФрд░, рддрджрдиреБрд╕рд╛рд░, рдкреНрд░рд╛рдкреНрдд рдорд╛рд░реНрдЧ рд╕реЗ рдкреНрд╡рд╛рдЗрдВрдЯ рдмреА рддрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкрд░рд┐рд╡рд╣рди рдХреЗ рдЕрдВрддрд┐рдо рдкрдбрд╝рд╛рд╡ рд╕реЗ;
- рдмреЗрд╢рдХ, рдЖрдк рдЖрдЧреЗ рдорд╛рд░реНрдЧреЛрдВ рдХреА рд▓рд╛рдЧрдд рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдорд╛рдкрджрдВрдб рдХрд╛ рд╡рд┐рдХрд▓реНрдк рджрд░реНрдЬ рдХрд░реЗрдВ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдорд╛рд░реНрдЧ (рдиреНрдпреВрдирддрдо рд▓рд╛рдЧрдд, рд╕рдордп, рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг, рдЖрджрд┐) рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрдмрдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╣рдо рд▓рдХреНрд╖реНрдп рдорд╛рдирджрдВрдб рдмрдирдиреЗ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рд╣рд╕реНрддрд╛рдВрддрд░рдг рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ;
- рдпрджрд┐ рдорд╛рд░реНрдЧ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐рд░рд╛рдП рдХреА рд╢реБрд░реБрдЖрдд рдХреА рдЧрдИ рдереА, рддреЛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рд╣реЛрдЧрд╛;
рд╕реНрд░реЛрдд
рдбрд╛рдЙрдирд▓реЛрдб рдЦреЛрд▓ рджреЗред рдкрде рдореЗрдВ рд░реВрд╕реА рд╡рд░реНрдг рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред