Єдиний елемент глибокого першочергового пошуку, який ви налаштовуєте, - це порядок дослідження дітей. Звичайна версія протікає у довільному порядку, тобто в порядку, в якому зберігаються діти.
Єдина можлива альтернатива (до найкоротших шляхів), яку я можу придумати, - це жадібний підхід, який дивиться на дітей у порядку їх відстані від поточного вузла (від малого до великого). Побудувати контрприклад для цього правила легко:
[ джерело ]
Тепер це не є доказом того, що не існує стратегії вибору наступної дитини, яку слід досліджувати, яка змусить ДФС знайти найкоротші шляхи.
Однак, незалежно від правила¹, ви можете побудувати графіки, у яких DFS здійснює довгий об’їзд у самому першому вузлі, як і я для жадного правила. Присвоїти ребра і ваги , такі , що правило вибирає для відвідування перший і призначити на вагу більше , ніж один з . Тому правдоподібно, що DFS ніколи не може знайти найкоротші шляхи (загалом графіки).( s , a ) a ( a , b ) ( s , t )(s,t)(s,a)a(a,b)(s,t)
Зауважте, що оскільки ви можете виразити кожен зважений графік (додатне ціле число) як незважений графік - просто замініть ребра вартістю ланцюжком з вузлами - ці ж приклади стосуються DFS на невагомих графах. Тут ситуація насправді ще більш похмура: без ваг, що може використовувати ДФС для визначення наступної дитини, яку відвідує?c - 1cc−1
- Поки правило є детермінованим. Якщо це не так, воно, очевидно, не завжди може знайти найкоротші шляхи.