2014-05-05 3 views
0

Я просматриваю понятия поиска глубины (DFS) и поиска в Breath-first (BFS), но я всегда забываю, могу ли я принять некоторые правила.Могу ли я сделать предположения в BFS и DFS?

Я знаю, что в DFS я начну с корня и, насколько могу быть, доберусь, (...) и в BFS я начну посещать корень и все его соседи (...)

Мой вопрос в том, что у меня есть несколько вариантов, могу ли я сделать предположения или «правила»?

т.е .:

  • DSF в графе, что мои узлы являются письма - я решил, что от корня я начала поиска в алфавитном порядке.

  • BFS в дереве - я решил, что всегда буду начинать соседа слева.

В порядке ли это определение или существует основное правило (помимо цели поиска)?

ответ

2

Нет никакого основного правила для этого. Исходя из вашей цели использования BFS или DFS, если важно, какой заказ вы используете, вы должны это сделать, иначе любой заказ - в алфавитном порядке, в случайном порядке и т. Д. - это нормально. Важно только то, что в BFS вы должны сначала встретить непосредственных соседей root, сделать то же самое для всех увиденных узлов в том порядке, в котором вы видели. например, если R является корнем дерева и [LC, RC] являются его дочерью. и каждый из них имеет детей [LC1, LC2] и [RC1, RC2] при выполнении BFS, после посещения R вы можете посетить LC и RC в любом порядке. Однако, если вы впервые встретите LC, вам нужно сначала проверить LC1 и LC2, затем RC1 и RC2. Снова вы можете проверить LC1 и LC2 в любом порядке. И сделать это очень просто, используя Queue. Следовательно, первое, что вы посещаете, на следующем уровне вы сначала увидите своих соседей.

Смежные вопросы