Эң кыска жолду табуу үчүн BFSди кантип колдонсом болот?
Эң кыска жолду табуу үчүн BFSди кантип колдонсом болот?

Video: Эң кыска жолду табуу үчүн BFSди кантип колдонсом болот?

Video: Эң кыска жолду табуу үчүн BFSди кантип колдонсом болот?
Video: Кыска ЭҢ УЛУУ ДУБА, муну сөзсүз жаттап алыңыз | устаз Макстабек ажы Токтомушев 2024, Май
Anonim

үчүн табуу the эң кыска жол , эмне кылуу керек болгону булактан баштап, а аткаруу биринчи кеңдик издөө жана сиз качан токтотуу табуу сиздин көздөгөн түйүнүңүз. Сизге керек болгон бир гана кошумча нерсе - мурунку [n] массивине ээ болуу, ал ар бир кирген түйүн үчүн мурунку түйүндү сактайт. Булактын мурункусу нөл болушу мүмкүн.

Ошондой эле, BFS эмне үчүн эң кыска жолду табат?

Биз ошону айтабыз BFS болуп саналат биз кааласак, колдоно турган алгоритм эң кыска жолду табыңыз багытталбаган, салмаксыз графикте. үчүн доомат BFS Бул булактан ошол аралыкты басып өткөндө түйүн биринчи жолу табылганда болмок бизге бер эң кыска жол . Салмактуу график үчүн да ушуну айтууга болбойт.

Ошондой эле билесизби, лабиринттеги эң кыска жол кайда? Лабиринттен эң кыска жолду табыңыз

  1. Өйдө: (x, y) –> (x – 1, y)
  2. Солго өтүү: (x, y) –> (x, y – 1)
  3. Төмөн: (x, y) –> (x + 1, y)
  4. Оңго өтүү: (x, y) –> (x, y + 1)

Ошондой эле билүү үчүн, биз кыска жолду табуу үчүн DFS колдоно алабыз?

Жок, сен мүмкүн эмес кыска жолду табуу үчүн DFS колдонуңуз салмаксыз графикте. Андай эмес, табуу the эң кыска жол эки түйүндөрдүн ортосундагы гана BFS тарабынан чечилет. Салмаксыз графикте эң кыска жол булактан көздөгөн түйүндөрүнө чейин өтүшү керек болгон эң аз чектер.

BFS иштөө убактысы кандай?

Татаалдыгы Кеңдик биринчи издөө Кеңдикти биринчи издөө бар иштөө убактысы О(V + E) O(V + E) O(V+E), анткени ар бир чоку жана ар бир чети бир жолу текшерилет. Графикке киргизүүгө жараша O (E) O(E) O(E) O (1) O(1) O(1) жана O (V 2) O(V^2) O(V2) ортосунда болушу мүмкүн.).

Сунушталууда: