При обходе многосвязного графа порядок обхода узлов может сильно влиять (на много порядков) на количество узлов, которые будут отслеживаться методом обхода. Некоторые виды алгоритмов будут намного лучше при использовании в первую очередь в ширину; другие будут намного лучше при использовании глубинного поиска.
С одной стороны, выполнение поиска в глубину в двоичном дереве с N листовыми узлами требует, чтобы метод обхода отслеживал узлы lgN, в то время как поиск в ширину потребовал бы отслеживания как минимум N / 2 узлов (поскольку он может сканировать все остальные узлы перед сканированием любых листовых узлов; непосредственно перед сканированием первого листового узла он обнаружил бы N / 2 родительских узлов листьев, которые должны отслеживаться отдельно, поскольку ни один из них не ссылается друг на друга).
С другой стороны, выполнение заливки в сетке NxN с помощью метода, который, если его пиксель еще не был окрашен, окрашивает этот пиксель, а затем заливает его соседей, потребует постановки в очередь координат пикселей O (N) при использовании поиск в ширину, но координаты пикселей O (N ^ 2) при использовании поиска в глубину. При использовании поиска в ширину будет казаться, что краска «растекается» независимо от формы, которую нужно нарисовать; при использовании алгоритма в глубину для рисования прямоугольной спирали, каждая линия которой прямая с одной стороны и зубчатая с другой (какие стороны должны быть прямыми и зубчатыми, зависит от точного используемого алгоритма), все прямые участки будут окрашены перед любыми зазубринами, что означает, что система должна отслеживать местоположение каждой зазубрины отдельно.
person
supercat
schedule
30.04.2015