рд╕рд░рд▓ рдЧреНрд░рд╛рдлрд╝ рдЯреНрд░реИрд╡рд░реНрд╕рд▓: рдЧрд╣рд░рд╛рдИ рдФрд░ рдЪреМрдбрд╝рд╛рдИ-рдкрд╣рд▓реА рдЦреЛрдЬ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП



рдЕрдЪреНрдЫрд╛ рджрд┐рдиред

рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдЖрд▓реЗрдЦ "рд░реЗрдЦрд╛рдВрдХрди рдкрд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо: рдЪрд▓рд┐рдП рдЧрд╣рд░рд╛рдИ-рдкрд╣рд▓реА рдЦреЛрдЬ (рдбреАрдПрдлрдПрд╕) рдФрд░ рдЪреМрдбрд╝рд╛рдИ-рдкреНрд░рдердо рдЦреЛрдЬ ( рдмреАрдПрдлрдПрд╕ )" рдЯреНрд░рд╛рдИ рдЦреЛ рд╕реЗ рдмрд╛рдд рдХрд░рддрд╛ рд╣реВрдВред

рдЧреНрд░рд╛рдлрд╝ рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдХреНрдпрд╛ рд╣реИ?


рд╕рд░рд▓ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдПрдХ рдЧреНрд░рд╛рдл рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдЗрди рд╡рд░реНрдЯреАрдХрд▓ рдХреЗ рдХрдиреЗрдХреНрд╢рди рдЧреБрдгреЛрдВ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдЗрд╕рдХреЗ рдПрдХ рдХреЛрдиреЗ рд╕реЗ рджреВрд╕рд░реЗ рддрдХ рд╕рдВрдХреНрд░рдордг рд╣реИред рд▓рд┐рдВрдХ (рд░реЗрдЦрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реА рд░реЗрдЦрд╛рдПрдБ) рджрд┐рд╢рд╛рдУрдВ, рд░рд╛рд╕реНрддреЛрдВ, рдЪреЗрд╣рд░реЛрдВ рдпрд╛ рдЧреНрд░рд╛рдлрд╝ рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рдХрд╣рддреЗ рд╣реИрдВред рдЧреНрд░рд╛рдл рдХреЗ рд╢реАрд░реНрд╖ рдХреЛ рдиреЛрдбреНрд╕ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рджреЛ рдореБрдЦреНрдп рдЧреНрд░рд╛рдл рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдбреЗрдкреНрде-рдлрд░реНрд╕реНрдЯ рд╕рд░реНрдЪ, рдбреАрдПрдлрдПрд╕ рдФрд░ рдЪреМрдбрд╝рд╛рдИ-рдлрд░реНрд╕реНрдЯ рд╕рд░реНрдЪ, рдмреАрдПрдлрдПрд╕ рд╣реИрдВред

рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рджреЛрдиреЛрдВ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧреНрд░рд╛рдл рдХреЛ рдкрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрдирдХреЗ рдХреБрдЫ рдорддрднреЗрдж рд╣реИрдВред рдбреАрдПрдлрдПрд╕ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рдЧрд╣рд░рд╛рдИ рдЦреЛрдЬ


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

рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдЧреНрд░рд╛рдлрд╝ рд╣реИ рдЬреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:



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



рдпрд╣рд╛рдВ рд╣рдо рдкрде (p1) рдХреЗ рд╕рд╛рде рдирд┐рдХрдЯрддрдо рд╢рд┐рдЦрд░ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдкрде рдХрд╛ рдЕрдВрдд рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЕрдЧрд▓реЗ рд╢рд┐рдЦрд░ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВред



рд╣рдо p1 рдХреЗ рдЕрдВрдд рддрдХ рдкрд╣реБрдБрдЪ рдЧрдП, рд▓реЗрдХрд┐рди t рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо s рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВ рдФрд░ рджреВрд╕рд░реЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рдЪрд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВред



рдкрде "рдкреА 2" рдХреЗ рд╢реАрд░реНрд╖ "рдмрд┐рдВрджреБ" рдХреЗ рд╕рдмрд╕реЗ рдХрд░реАрдм рдкрд╣реБрдВрдЪрдХрд░, рд╣рдо рдЖрдЧреЗ рдХреЗ рдЖрдВрджреЛрд▓рди рдХреЗ рд▓рд┐рдП рддреАрди рд╕рдВрднрд╛рд╡рд┐рдд рджрд┐рд╢рд╛рдУрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рдЪреВрдБрдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рджрд┐рд╢рд╛ рдХреА рдУрд░ рдмрдврд╝рддреЗ рд╣реБрдП рдЪреЛрдЯреА рдкрд░ рдЬрд╛ рдЪреБрдХреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝ рд░рд╣реЗ рд╣реИрдВред



рд╣рдо рдлрд┐рд░ рд╕реЗ рд░рд╛рд╕реНрддреЗ рдХреЗ рдЕрдВрдд рддрдХ рдкрд╣реБрдБрдЪ рдЧрдП, рд▓реЗрдХрд┐рди рдЯреА рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╡рд╛рдкрд╕ рдЪрд▓реЗ рдЧрдПред рд╣рдо рддреАрд╕рд░реЗ рд░рд╛рд╕реНрддреЗ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рдо рд╡рд╛рдВрдЫрд┐рдд "рдЯреА" рддрдХ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВред



рдпрд╣ DFS рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЕрдВрдд рддрдХ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░рд╛рд╕реНрддреЗ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рдпрджрд┐ рдкрде рдХрд╛ рдЕрдВрдд рд╡рд╛рдВрдЫрд┐рдд рд╢рд┐рдЦрд░ рд╣реИ, рддреЛ рд╣рдо рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдБ рдФрд░ рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рддрдХ рдПрдХ рдЕрд▓рдЧ рд░рд╛рд╕реНрддреЗ рдкрд░ рдЖрдЧреЗ рдмрдврд╝реЗрдВред

рд╣рдо рдЖрдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВред

рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИред

рдпрд╣рд╛рдБ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рд╣реИ:

//  ,       
// , : adj = {A: [B,C], B:[D,F], ... }
function dfs(adj, v, t) {
	// adj -  
	// v -   ()
	// t -  

	//   
	//    ,    
	if(v === t) return true
	if(v.visited) return false

	//    
	v.visited = true
	//    (  ) v
	for(let neighbor of adj[v]) {
		//    
		if(!neighbor.visited) {
			//     ,      
			let reached = dfs(adj, neighbor, t)
			//  true,  
			if(reached) return true
		}
	}
	//   v  t  
	return false
}

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

рдбреАрдПрдлрдПрд╕ рд╡рд┐рд╢реНрд▓реЗрд╖рдг


рдЖрдЗрдП рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВред рдЪреВрдБрдХрд┐ рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдХреЗ рдкреНрд░рддреНрдпреЗрдХ "рдкрдбрд╝реЛрд╕реА" рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рдЖрдП рдереЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ O (V + E) рдХреЗ рдмрд░рд╛рдмрд░ рд░рдирдЯрд╛рдЗрдо рд╣реИред

V + E рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЕрд░реНрде рд╣реИ:

V, рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдИ рдЪреЗрд╣рд░реЗ (рдХрд┐рдирд╛рд░реЛрдВ) рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рд╣реИред

V * E рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдЙрдЪрд┐рдд рдкреНрд░рддреАрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдЗрдП V * E рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВред

рд╡реА * рдИ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рд╣рдореЗрдВ рдЧреНрд░рд╛рдл рдХреЗ рд╕рднреА рдЪреЗрд╣рд░реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рднрд▓реЗ рд╣реА рдпреЗ рдЪреЗрд╣рд░реЗ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╢реАрд░реНрд╖ рдХреЗ рд╣реЛрдВред

рджреВрд╕рд░реА рдУрд░, рд╡реА + рдИ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреЗ рд▓рд┐рдП рд╣рдо рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рдмрдЧрд▓ рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдкрд░ рд▓реМрдЯрддреЗ рд╣реБрдП, рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЪреЗрд╣рд░реЗ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░, рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдо рд╕рднреА рдХреЛрдиреЗ (O (V)) рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕рднреА рдЪреЗрд╣рд░реЛрдВ (O (E)) рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ V рд╡рд░реНрдЯрд┐рдХрд▓ рдФрд░ E рдЪреЗрд╣рд░реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ V + E рдорд┐рд▓рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЪреВрдВрдХрд┐ рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреЛ рдкреАрдЫреЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрдирд░рд╛рд╡рд░реНрддрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдПрдХ рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЕрдирдВрдд рдкреБрдирд░рд╛рд╡рд░реНрддрди рдПрдХ рд╕реНрдЯреИрдХ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рддреНрд░реБрдЯрд┐ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ)ред рдЗрд╕рд▓рд┐рдП, рд╕реНрдерд╛рдирд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ рд╣реЗ (рд╡реА) рд╣реИред

рдЕрдм рдмреАрдПрдлрдПрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рд╡реНрдпрд╛рдкрдХ рдЦреЛрдЬ


рдмреАрдПрдлрдПрд╕ "рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╕реНрддрд╛рд░, рдПрдХ рдкрдХреНрд╖реА рдХреА рдЙрдбрд╝рд╛рди рдХреА рдКрдВрдЪрд╛рдИ рддрдХ рдмрдврд╝ рд░рд╣рд╛ рд╣реИ" рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ "(" рд╡реНрдпрд╛рдкрдХ рдЬрд╛рдУ, рдкрдХреНрд╖реА рдХреА рдЖрдВрдЦ-рджреГрд╢реНрдп ")ред рдЕрдВрдд рддрдХ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░рд╛рд╕реНрддреЗ рдкрд░ рдмрдврд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдмреАрдПрдлрдПрд╕ рдореЗрдВ рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ рдкрдбрд╝реЛрд╕реА рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕рдХрд╛ рдЕрд░реНрде рдирд┐рдореНрди рд╣реИ:



рдкрде рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдмреАрдПрдлрдПрд╕ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐рд╕реА рдПрдХрд▓ рдХреНрд░рд┐рдпрд╛ (рдЪрд░рдг) рдореЗрдВ рдПрд╕ рдХреЗ рдирд┐рдХрдЯрддрдо рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ рдХрд╛ рджреМрд░рд╛ рдХрд░рдирд╛, рдлрд┐рд░ рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ рдХреЗ рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ рдХрд╛ рджреМрд░рд╛ рдХрд░рдирд╛ рдФрд░ рдЬрдм рддрдХ рдЯреА рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓ рдЬрд╛рддрд╛ рд╣реИред







DFS BFS рд╕реЗ рдЕрд▓рдЧ рдХреИрд╕реЗ рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбреАрдПрдлрдПрд╕ рдЖрдЧреЗ рдмрдврд╝рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдмреАрдПрдлрдПрд╕ рдЬрд▓реНрджреА рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдХрджрдо рдХреЗ рднреАрддрд░ рд╕рдм рдХреБрдЫ рдЕрдзреНрдпрдпрди рдХрд░рддрд╛ рд╣реИред

рдлрд┐рд░ рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ: рдЖрдкрдХреЛ рдХреИрд╕реЗ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

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

рдпрд╣рд╛рдБ рдХреЛрдб рд╣реИ:

//  ,       
// , : adj = {A:[B,C,D], B:[E,F], ... }
function bfs(adj, s, t) {
	// adj -  
	// s -  
	// t -  

	//  
	let queue = []
	//  s  
	queue.push(s)
	//  s         
	s.visited = true
	while(queue.length > 0) {
		//   ()   
		let v = queue.shift()
		// abj[v] -  v
		for(let neighbor of adj[v]) {
			//    
			if(!neighbor.visited) {
				//    
				queue.push(neighbor)
				//    
				neighbor.visited = true
				//     ,  
				if(neighbor === t) return true
			}
		} 
	}
	//  t  ,     
	return false
}

BFS рд╡рд┐рд╢реНрд▓реЗрд╖рдг


рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдмреАрдПрдлрдПрд╕ рдзреАрдорд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдк рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рдХрд░реАрдм рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рд╕рдорд╛рди рд░рдирдЯрд╛рдЗрдо рд╣реИред

рдПрдХ рдХрддрд╛рд░ рдореЗрдВ рдПрдХ рдЧрдВрддрд╡реНрдп рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐, рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдмреАрдПрдлрдПрд╕ рд╕рднреА рдХреЛрдиреЗ рдФрд░ рдЪреЗрд╣рд░реЗ рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдмреАрдПрдлрдПрд╕ рдзреАрдорд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддреЗрдЬ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдмрдбрд╝реЗ рд░реЗрдЦрд╛рдВрдХрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдбреАрдПрдлрдПрд╕ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордп рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдереЛрдВ рдкрд░ рдЦрд░реНрдЪ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЕрдВрддрддрдГ рдЭреВрдареЗ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдмреАрдПрдлрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╕рд░ рджреЛ рдЪреЛрдЯрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рд░рд╛рд╕реНрддрд╛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдмреАрдПрдлрдПрд╕ рд░рдирдЯрд╛рдЗрдо рднреА рдУ (рд╡реА + рдИ) рд╣реИ, рдФрд░ рдЪреВрдВрдХрд┐ рд╣рдо рдПрдХ рдкрдВрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдХреЛрдиреЗ рд╣реИрдВ, рдЗрд╕рдХреА рд╕реНрдерд╛рдирд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ рдУ (рд╡реА) рд╣реИред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рд╕рд╛рджреГрд╢реНрдп


рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рд╕реЗ рдЙрдкрдорд╛ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдбреАрдПрдлрдПрд╕ рдФрд░ рдмреАрдПрдлрдПрд╕ рдХреЗ рдХрд╛рдо рдХреА рдХрд▓реНрдкрдирд╛ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реВрдВред

рдЬрдм рдореИрдВ рдбреАрдПрдлрдПрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рднреЛрдЬрди рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдПрдХ рднреВрд▓рднреБрд▓реИрдпрд╛ рдореЗрдВ рдПрдХ рдорд╛рдЙрд╕ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рддрд╛ рд╣реВрдВред рд▓рдХреНрд╖реНрдп рдХреЛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рдЙрд╕ рдХреЛ рдПрдХ рдореГрдд рдЕрдВрдд рдореЗрдВ рдХрдИ рдмрд╛рд░ рднрд╛рдЧрдиреЗ, рд▓реМрдЯрдиреЗ рдФрд░ рдПрдХ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣ рдЬрдм рддрдХ рдпрд╣ рднреВрд▓рднреБрд▓реИрдпрд╛ рдпрд╛ рднреЛрдЬрди рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рдвреВрдВрдврддрд╛ред



рдПрдХ рд╕рд░рд▓реАрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:



рдмрджрд▓реЗ рдореЗрдВ, рдЬрдм рдореИрдВ рдмреАрдПрдлрдПрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдкрд╛рдиреА рдкрд░ рд╣рд▓рдХреЛрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рддрд╛ рд╣реВрдВред рдкрд╛рдиреА рдореЗрдВ рдПрдХ рдкрддреНрдерд░ рдХреЗ рдЧрд┐рд░рдиреЗ рд╕реЗ рдХреЗрдВрджреНрд░ рд╕реЗ рд╕рднреА рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рдЧрдбрд╝рдмрдбрд╝реА (рд╕рд░реНрдХрд▓) рдХрд╛ рдкреНрд░рд╕рд╛рд░ рд╣реЛрддрд╛ рд╣реИред



рдПрдХ рд╕рд░рд▓реАрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:



рдЬрд╛рдБрдЪ - рдкрд░рд┐рдгрд╛рдо


  • рдЧрд╣рд░рд╛рдИ рдФрд░ рдЪреМрдбрд╝рд╛рдИ рдЦреЛрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧреНрд░рд╛рдл рдХреЛ рдкрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рдбреАрдПрдлрдПрд╕ рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ-рдкреАрдЫреЗ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдмреАрдПрдлрдПрд╕ рдПрдХ рд▓рдХреНрд╖реНрдп рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ рдореЗрдВ рдлреИрд▓рддрд╛ рд╣реИред
  • рдбреАрдПрдлрдПрд╕ рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдмреАрдПрдлрдПрд╕ рдХрддрд╛рд░ред
  • рджреЛрдиреЛрдВ рдХрд╛ рдХреНрд░рдо O (V + E) рд╣реИ, рдФрд░ рд╕реНрдерд╛рдирд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ O (V) рд╣реИред
  • рдЗрди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдПрдХ рдЕрд▓рдЧ рджрд░реНрд╢рди рд╣реИ, рд▓реЗрдХрд┐рди рдЧреНрд░рд╛рдлрд╝ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред

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

рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

All Articles