Как да използвам BFS, за да намеря най-краткия път?
Как да използвам BFS, за да намеря най-краткия път?
Anonim

Да се намирам на най-краткият път , всичко, което трябва да направите, е да започнете от източника и да извършите a широчина първо потърсете и спрете, когато намирам вашият дестинационен възел. Единственото допълнително нещо, което трябва да направите, е да имате масив previous[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, за да намерите най-краткия път в непретеглена графика. Не е така, намиране на най-краткият път между два възела се решава изключително от BFS. В непретеглена графика най-краткият път са най-малкият брой ръбове, които трябва да бъдат преминати от изходни до дестинационни възли.

Какво е времето за работа на BFS?

Сложността на Търсене на първо място Търсене в ширина има време на работа на O (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).

Препоръчано: