Проблема поиска - Search problem

В теории сложности вычислений и теории вычислимости , задача поиска является типом вычислительной задачи представляется бинарным отношением . Если R - бинарное отношение, такое что field ( R ) ⊆ Γ + и T - машина Тьюринга , то T вычисляет R, если:

  • Если x таково, что существует некоторый y такой, что R ( x , y ), то T принимает x с выходом z таким образом, что R ( x , z ) (может быть несколько y , и T нужно найти только один из них)
  • Если x таково, что не существует y такого, что R ( x , y ), то T отклоняет x

Интуитивно проблема состоит в том, чтобы найти структуру «y» в объекте «x». Алгоритм , как говорят , чтобы решить эту проблему , если по крайней мере одна соответствующая структура существует, и затем одно вхождение этой структуры производится выход; в противном случае алгоритм останавливается с соответствующим выводом («Элемент не найден» или любое подобное сообщение).

Такие проблемы очень часто возникают в теории графов , например, когда поиск в графах структур, таких как конкретное сопоставление , клики , независимое множество и т. Д., Представляет интерес.

Обратите внимание, что график частичной функции является бинарным отношением, и если T вычисляет частичную функцию, то имеется не более одного возможного выхода.

Отношение R можно рассматривать как задачу поиска, и говорят, что машина Тьюринга, которая вычисляет R, решает ее. Каждой поисковой задаче соответствует проблема решения , а именно:

Это определение может быть обобщено на n -арные отношения с использованием любой подходящей кодировки, которая позволяет сжать несколько строк в одну строку (например, перечислив их последовательно с разделителем).

Определение

Проблема поиска определяется:

логическая функция, которая сообщает нам, является ли данное состояние целевым.
отображение состояния на набор новых состояний

Задача

Найдите решение, если вам не дан алгоритм решения проблемы, а только спецификация того, как выглядит решение.

Метод поиска

  • Общий алгоритм поиска: учитывая график, начальные узлы и целевые узлы, постепенно исследуйте пути от начальных узлов.
  • Поддерживайте границы изученных путей от начального узла.
  • По мере продолжения поиска граница расширяется до неисследованных узлов, пока не будет обнаружен целевой узел.
  • Способ расширения границы определяет стратегию поиска.
   Input: a graph,
       a set of start nodes,
       Boolean procedure goal(n) that tests if n is a goal node.
   frontier := {s : s is a start node};
   while frontier is not empty:
       select and remove path <n0, ..., nk> from frontier;
       if goal(nk)
           return <n0, ..., nk>;
       for every neighbor n of nk
           add <n0, ..., nk, n> to frontier;
   end while

Смотрите также

Ссылки

Эта статья включает в себя материалы из задачи поиска на PlanetMath , который находится под лицензией Creative Commons Attribution / Share-Alike License .