Вопросы к Поиску с Алисой
Для обхода и обработки внутренних узлов в деревьях используются, например, такие алгоритмы:
Обход в глубину (DFS). olegtalks.ru proglib.io Алгоритм начинает с корневого узла и последовательно проверяет все исходящие из него рёбра. proglib.io Если ребро ведёт в вершину, которая ранее не рассматривалась, то алгоритм рекурсивно запускается уже для неё, а после его выполнения продолжается проверка других рёбер. proglib.io Существует три модификации алгоритма с разным способом перебора узлов: proglib.io
Обход в прямом порядке, или предупорядоченный обход (pre-order walk). proglib.io Перебор начинается с родительского узла и идёт вниз, к дочерним. proglib.io
Обход в обратном порядке, или поступорядоченный (post-order walk). proglib.io Сначала перебирают левого и правого потомков, а потом родителя. proglib.io
Симметричный обход. proglib.io Начинают с левого потомка, потом родитель, потом правый потомок. proglib.io
Обход в ширину (BFS). olegtalks.ru proglib.io Алгоритм работает не по веткам, а по уровням дерева. proglib.io Он начинает с корневого узла (первый уровень) и двигается по всем рёбрам, выходящим из него, перебирая последовательно каждый дочерний элемент (второй уровень). proglib.io Когда все рёбра проверены, алгоритм переходит на следующий уровень и начинает перебирать дочерние элементы дочерних элементов (элементы третьего уровня) и так далее. proglib.io
Также существуют алгоритмы обхода, которые не классифицируются ни как поиск в глубину, ни как поиск в ширину. ru.wikipedia.org Один из таких алгоритмов — метод Монте-Карло, который сосредотачивается на анализе наиболее обещающих ходов, основываясь на расширении дерева поиска при случайном выборе пространства поиска. ru.wikipedia.org