рдмреЗрд▓рдореИрди-рдлреЛрд░реНрдб рдПрд▓реНрдЧреЛрд░рд┐рдердо

"рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рджрдо" рдкрд╛рдареНрдпрдХреНрд░рдо рдХреА рд╢реБрд░реБрдЖрдд рдХреА рдкреНрд░рддреНрдпрд╛рд╢рд╛ рдореЗрдВ , рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд▓реЗрдЦ рдХрд╛ рдПрдХ рдФрд░ рдЕрдиреБрд╡рд╛рдж рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ред




рд╕рдорд╕реНрдпрд╛ : рдПрдХ рдЧреНрд░рд╛рдл рдФрд░ рдПрдХ рдЧреНрд░рд╛рдл рдореЗрдВ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╢реАрд░реНрд╖ src рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рджрд┐рдП рдЧрдП рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ src рд╕реЗ рд╕рднреА рдХреЛрдиреЗ рддрдХ рдХреЗ рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рд░рд╛рд╕реНрддреЛрдВ рдХреЛ рдЦреЛрдЬрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЧреНрд░рд╛рдл рдореЗрдВ рдирдХрд╛рд░рд╛рддреНрдордХ рднрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд┐рдирд╛рд░реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдордиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджрд┐рдЬреНрдХреНрд╕реНрдЯреНрд░рд╛ рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рд╣реИред рджрд┐рдЬреНрдХреНрд╕реНрдЯреНрд░рд╛ рдХрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдПрдХ рд▓рд╛рд▓рдЪреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реИ, рдФрд░ рдЗрд╕рдХреА рдЬрдЯрд┐рд▓рддрд╛ рд╣реЗ (рд╡реАрдПрд▓рдУрдЬреАрд╡реА) (рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╣реАрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдбрд┐рдЬреНрдХреЗрд╕реНрдЯреНрд░рд╛ рдирдХрд╛рд░рд╛рддреНрдордХ рдмрдврд╝рдд рднрд╛рд░ рдХреЗ рд╕рд╛рде рд░реЗрдЦрд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдмреЗрд▓рдореИрди-рдлреЛрд░реНрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣реИред рдмреЗрд▓рдореИрди-рдлреЛрд░реНрдб рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо, рджрд┐рдХреНрдЬрд╕реНрдЯреНрд░рд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдФрд░ рднреА рд╕рд░рд▓ рд╣реИ, рдФрд░ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рд╣реИред рдЗрд╕реА рд╕рдордп, рдЗрд╕рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдУ (рд╡реАрдИ) рд╣реИ , рдЬреЛ рдХрд┐ рджрд┐рдХреНрдЬрд╕реНрдЯреНрд░рд╛ рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрддрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред

рд╕рд┐рдлрд╛рд░рд┐рд╢ : рд╕рдорд╛рдзрд╛рди рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдЕрднреНрдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╕реНрддреГрдд рдЪрд░рдг рд╣реИрдВред

рдЗрдирдкреБрдЯ : рдЧреНрд░рд╛рдл рдФрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╢реАрд░реНрд╖ src ред
рдЖрдЙрдЯрдкреБрдЯ : src рд╕реЗ рд╕рднреА рдХреЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдХрдо рджреВрд░реАред рдпрджрд┐ рдирдХрд╛рд░рд╛рддреНрдордХ рд╡рдЬрди рдХрд╛ рдПрдХ рдЪрдХреНрд░ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╕рдмрд╕реЗ рдЫреЛрдЯреА рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдЪрдХреНрд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реБрдП рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

  1. рдЗрд╕ рдЪрд░рдг рдореЗрдВ, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╢реАрд░реНрд╖ рд╕реЗ рдЕрдиреНрдп рд╕рднреА рд╢реАрд░реНрд╖реЛрдВ рдХреА рджреВрд░реА рдХреЛ рдЕрдирдВрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕реНрд╡рдпрдВ src рдХреЗ рд▓рд┐рдП рджреВрд░реА рдХреЛ 0. рдорд╛рди рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдХрд╛рд░ dist[] рдПрдХ рд╕рд░рдгреА dist[] |V| dist[] |V| рдЕрдирдВрдд dist[src] рддрддреНрд╡ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде, рдЕрдирдВрдд рдХреЗ рдмрд░рд╛рдмрд░ рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде, рдЬрд╣рд╛рдБ src рдореВрд▓ рд╢реАрд░реНрд╖ рд╣реИред
  2. рджреВрд╕рд░рд╛ рдЪрд░рдг рд╕рдмрд╕реЗ рдЫреЛрдЯреА рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП |V| -1 рдмрд╛рд░, рдХрд╣рд╛рдВ |V| - рдЗрд╕ рдЧреНрд░рд╛рдл рдореЗрдВ рдХреЛрдиреЗ рдХреА рд╕рдВрдЦреНрдпрд╛ред
    • рдкреНрд░рддреНрдпреЗрдХ uv рдмрдврд╝рдд рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрдВ:
      рдЕрдЧрд░ dist[v] > dist[u] + uv , рддреЛ dist[v] рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ
      dist [v] = dist [u] + uv
  3. рдЗрд╕ рдЪрд░рдг рдореЗрдВ, рдпрд╣ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рднрд╛рд░ рдЪрдХреНрд░ рдореМрдЬреВрдж рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдХрд┐рдирд╛рд░реЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрд░реЗрдВ:

    • рдпрджрд┐ dist[v] > dist[u] + uv , рддреЛ рдЧреНрд░рд╛рдл рдореЗрдВ рдирдХрд╛рд░рд╛рддреНрдордХ рднрд╛рд░ рдХрд╛ рдПрдХ рдЪрдХреНрд░ рд╣реЛрддрд╛ рд╣реИред

рдЪрд░рдг 3 рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЪрд░рдг 2 рд╕рдмрд╕реЗ рдХрдо рджреВрд░реА рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ рдпрджрд┐ рдЧреНрд░рд╛рдл рдореЗрдВ рдирдХрд╛рд░рд╛рддреНрдордХ рднрд╛рд░ рдХрд╛ рдЪрдХреНрд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рд╕рднреА рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рдлрд┐рд░ рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдХрд┐рд╕реА рднреА рдХреЛрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд░рд╛рд╕реНрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рдЪрдХреНрд░ рдЪрдХреНрд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рдВрдХреЗрдд рд╣реЛрдЧрд╛ред

рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдЕрдиреНрдп рдЧрддрд┐рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛рд░реНрдпреЛрдВ рдХреА рддрд░рд╣, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдиреАрдЪреЗ рд╕реЗ рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рд░рд╛рд╕реНрддреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рд╕рдмрд╕реЗ рдЫреЛрдЯреА рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдПрдХ рдХрд┐рдирд╛рд░реЗ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рдкрдеред рдлрд┐рд░ рдпрд╣ рджреЛ рдХрд┐рдирд╛рд░реЛрдВ рдФрд░ рдЗрддрдиреЗ рдкрд░ рдирд╣реАрдВ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рд░рд╛рд╕реНрддреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред рдмрд╛рд╣рд░реА рд▓реВрдк рдХреЗ ith рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рдмрд╛рдж, рдореИрдВ рдХрд┐рдирд╛рд░реЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рд░рд╛рд╕реНрддреЛрдВ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдХрд┐рд╕реА рднреА рд╕рд░рд▓ рдкрде рдореЗрдВ, рдЕрдзрд┐рдХрддрдо рд╡реАред -1 рдХрд┐рдирд╛рд░реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдмрд╛рд╣рд░реА рд▓реВрдк рдмрд┐рд▓реНрдХреБрд▓ рдЪрд▓рддрд╛ рд╣реИ ред рд╡реА -1 -1 рдмрд╛рд░ред рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рд╣рдо рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рдкрде рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рдХрд┐рдирд╛рд░реЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реВрдВ , рддреЛ рд╕рднреА рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░рдирд╛, рд╕рдмрд╕реЗ рдХрдо рдкрде рдХреЛ i + 1 рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ (рдкреНрд░рдорд╛рдг рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рдЖрдк MIT рдХреЗ рдЗрд╕ рд╡реНрдпрд╛рдЦреНрдпрд╛рди рдпрд╛ рд╡реАрдбрд┐рдпреЛ рд╡реНрдпрд╛рдЦреНрдпрд╛рди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) )

рдЙрджрд╛рд╣рд░рдг


рдЖрдЗрдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреНрд░рд╛рдл рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджреЗрдЦреЗрдВред рдпрд╣рд╛рдВ рд╕реЗ рд▓реА рдЧрдИ рдЫрд╡рд┐рдпрд╛рдВред
рдЖрд░рдВрднрд┐рдХ рд╢реАрд░реНрд╖ рдХреЛ 0. рдЖрдЬреНрдЮрд╛ рджреЗрдВред рд╕рднреА рджреВрд░реА рдХреЛ рдЕрдирдВрдд рдорд╛рдиреЗрдВ, рдХреЗрд╡рд▓ рджреВрд░реА рдХреЗ рдЕрд▓рд╛рд╡рд╛ src ред рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ 5 рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╕рднреА рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ 4 рдмрд╛рд░ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред



рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рдо рдореЗрдВ рдкрд╕рд▓рд┐рдпреЛрдВ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рджреЗрдВ: (B, E), (D, B), (B, D), (A, B), (A, C), (D, C), (B, C), ( рдИ, рдбреА)ред рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреВрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдкрд╕рд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдорд╛рд░реНрдЧ рдкрд╣рд▓реА рдмрд╛рд░ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рдерд╛ред рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рджреВрд░рд┐рдпреЛрдВ рдХреЛ рджрд┐рдЦрд╛рддреА рд╣реИ, рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рджреВрд░рд┐рдпреЛрдВ рдХреЛ рджрд┐рдЦрд╛рддреА рд╣реИ рдЬрдм рдХрд┐рдирд╛рд░реЛрдВ (рдмреА, рдИ), (рдбреА, рдмреА), (рдмреА, рдбреА) рдФрд░ (рдП, рдмреА) рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддреАрд╕рд░реА рдкрдВрдХреНрддрд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рджреВрд░реА (рдП, рд╕реА) рджрд┐рдЦрд╛рддреА рд╣реИред рдЪреМрдереА рдкрдВрдХреНрддрд┐ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм (рдбреА, рд╕реА), (рдмреА, рд╕реА) рдФрд░ (рдИ, рдбреА) рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред



рдкрд╣рд▓рд╛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдЫреЛрдЯреЗ рд░рд╛рд╕реНрддреЗ 1 рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рд░реНрдЧ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИрдВред рдЬрдм рд╕рднреА рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рджреВрд╕рд░рд╛ рдкрд╛рд╕ рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдЕрдВрддрд┐рдо рдорд╛рди рджрд┐рдЦрд╛рддреА рд╣реИ) рддреЛ рд╣рдореЗрдВ рдирд┐рдореНрди рджреВрд░реА рдорд┐рд▓ рдЬрд╛рддреА рд╣реИред



рджреВрд╕рд░рд╛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рд░рд╛рд╕реНрддреЛрдВ рдХреА рд▓рдВрдмрд╛рдИ рдЕрдзрд┐рдХрддрдо 2 рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рд╣реИред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕рднреА рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде 2 рдФрд░ рдмрд╛рд░ рдЪрд▓рддрд╛ рд╣реИред рджреВрд╕рд░реА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рдмрд╛рдж рджреВрд░рд┐рдпрд╛рдВ рдХрдо рд╕реЗ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рддреАрд╕рд░реЗ рдФрд░ рдЪреМрдереЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рджреВрд░реА рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЕрджреНрдпрддрди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди:

 # Python program for Bellman-Ford's single source # shortest path algorithm. from collections import defaultdict # Class to represent a graph class Graph: def __init__(self, vertices): self.V = vertices # No. of vertices self.graph = [] # default dictionary to store graph # function to add an edge to graph def addEdge(self, u, v, w): self.graph.append([u, v, w]) # utility function used to print the solution def printArr(self, dist): print("Vertex Distance from Source") for i in range(self.V): print("% d \t\t % d" % (i, dist[i])) # The main function that finds shortest distances from src to # all other vertices using Bellman-Ford algorithm. The function # also detects negative weight cycle def BellmanFord(self, src): # Step 1: Initialize distances from src to all other vertices # as INFINITE dist = [float("Inf")] * self.V dist[src] = 0 # Step 2: Relax all edges |V| - 1 times. A simple shortest # path from src to any other vertex can have at-most |V| - 1 # edges for i in range(self.V - 1): # Update dist value and parent index of the adjacent vertices of # the picked vertex. Consider only those vertices which are still in # queue for u, v, w in self.graph: if dist[u] != float("Inf") and dist[u] + w < dist[v]: dist[v] = dist[u] + w # Step 3: check for negative-weight cycles. The above step # guarantees shortest distances if graph doesn't contain # negative weight cycle. If we get a shorter path, then there # is a cycle. for u, v, w in self.graph: if dist[u] != float("Inf") and dist[u] + w < dist[v]: print "Graph contains negative weight cycle" return # print all distance self.printArr(dist) g = Graph(5) g.addEdge(0, 1, -1) g.addEdge(0, 2, 4) g.addEdge(1, 2, 3) g.addEdge(1, 3, 2) g.addEdge(1, 4, 2) g.addEdge(3, 2, 5) g.addEdge(3, 1, 1) g.addEdge(4, 3, -3) # Print the solution g.BellmanFord(0) # This code is contributed by Neelam Yadav 


рдЖрдЙрдЯрдкреБрдЯ рдорд╛рди:



рдЯрд┐рдкреНрдкрдгреА:

  1. рд╡рд┐рднрд┐рдиреНрди рдЧреНрд░рд╛рдл рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдирдХрд╛рд░рд╛рддреНрдордХ рднрд╛рд░ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкрде рдХреА рд▓рд╛рдЧрдд рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рд░реНрдЧ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдХреЗ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВред
  2. рдмреЗрд▓рдореИрди-рдлреЛрд░реНрдб рдПрд▓реНрдЧреЛрд░рд┐рдердо рд╡рд┐рддрд░рд┐рдд рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдбреАрдЬрдХрд╕реНрдЯреНрд░рд╛ рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╕реЗ рдмреЗрд╣рддрд░)ред рджрд┐рдЬреНрдХреНрд╕реНрддреНрд░ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬрд╣рд╛рдВ рд╣рдореЗрдВ рдмреЗрд▓рдореИрди рдлреЛрд░реНрдб рдореЗрдВ рд╕рднреА рд╡рд░реНрдЯрд┐рдХрд▓ рдХрд╛ рдиреНрдпреВрдирддрдо рдореВрд▓реНрдп рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрднреНрдпрд╛рд╕:

  1. рдорд╛рдирдХ рдмреЗрд▓рдореИрди-рдлреЛрд░реНрдб рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рд░рд╛рд╕реНрддреЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЕрдЧрд░ рдЙрд╕рдореЗрдВ рдирдХрд╛рд░рд╛рддреНрдордХ рднрд╛рд░ рдХреЗ рдЪрдХреНрд░ рди рд╣реЛрдВред рдЗрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЪрдХреНрд░ рд╣реЛрдиреЗ рдкрд░ рднреА рдпрд╣ рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рд░рд╛рд╕реНрддреЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗред
  2. рдХреНрдпрд╛ рд╣рдо рдирдХрд╛рд░рд╛рддреНрдордХ рд╡рдЬрди рдХреЗ рд╕рд╛рде рдПрдХ рдЧреНрд░рд╛рдл рдореЗрдВ рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рд░рд╛рд╕реНрддреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдбреАрдЬрдХрд╕реНрдЯреНрд░рд╛ рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ: рдиреНрдпреВрдирддрдо рд╡рдЬрди рдореВрд▓реНрдп рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ, рд╕рднреА рднрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдорд╛рди (рдиреНрдпреВрдирддрдо рд╡рдЬрди рдореВрд▓реНрдп рдХреЗ рдирд┐рд░рдкреЗрдХреНрд╖ рдореВрд▓реНрдп рдХреЗ рдмрд░рд╛рдмрд░) рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдЧреНрд░рд╛рдл рдХреЗ рд▓рд┐рдП рдбреАрдЬрдХрд╕реНрдЯреНрд░рд╛ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдЪрд▓рд╛рдПрдВред рдХреНрдпрд╛ рдРрд╕рд╛ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХрд╛рдо рдХрд░реЗрдЧрд╛?

рдмреЗрд▓рдореИрди-рдлреЛрд░реНрдб рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ:

www.youtube.com/watch?v=Ttezuzs39nk
en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm
www.cs.arizona.edu/classes/cs445/spring07/ShortestPath2.prn.pdf

Source: https://habr.com/ru/post/hi484382/


All Articles