Jump to content

Алгоритм перечисления

В информатике алгоритм перечисления — это алгоритм , который перечисляет ответы на вычислительную задачу . Формально такой алгоритм применяется к задачам, которые принимают входные данные и выдают список решений, аналогично функциональным задачам . Для каждого входа алгоритм перечисления должен создать список всех решений без дубликатов, а затем остановиться. Производительность алгоритма перебора измеряется с точки зрения времени, необходимого для получения решений, либо с точки зрения общего времени, необходимого для получения всех решений, либо с точки зрения максимальной задержки между двумя последовательными решениями и с точки зрения предварительной обработки времени . , считается временем до вывода первого решения. Эта сложность может быть выражена через размер входных данных, размер каждого отдельного выходного сигнала или общий размер набора всех выходных данных, аналогично тому, что делается с алгоритмами, чувствительными к выходным данным .

Формальные определения

[ редактировать ]

Проблема с перечислением определяется как отношение над строками произвольного алфавита :

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

Общие классы сложности

[ редактировать ]

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

Очень общий такой класс — EnumP . [1] класс задач, для которых правильность возможного результата можно проверить за полиномиальное время на входе и выходе. Формально для такой проблемы должен существовать алгоритм A, который принимает в качестве входных данных входную задачу x , выходной сигнал-кандидат y и решает проблему принятия решения о том, является ли y правильным выходным сигналом для входного x , за полиномиальное время по x и й . Например, этот класс содержит все задачи, которые сводятся к перечислению свидетелей проблемы в классе NP .

Другие определенные классы включают следующие. В случае проблем, которые также есть в EnumP , эти проблемы упорядочены от наименее к наиболее конкретным:

  • Выходной полином — класс задач, полный результат которых можно вычислить за полиномиальное время.
  • Инкрементальное полиномиальное время — класс задач, в которых для всех i -й результат i может быть получен за полиномиальное время по входному размеру и по числу i .
  • Полиномиальная задержка — класс задач, в которых задержка между двумя последовательными выходными данными является полиномиальной на входе (и не зависит от выхода).
  • Сильно полиномиальная задержка — класс задач, в которых задержка перед каждым выходом полиномиальна по размеру этого конкретного выхода (и не зависит от входа или других выходов). Обычно предполагается, что предварительная обработка является полиномиальной.
  • Постоянная задержка — класс задач, в которых задержка перед каждым выходом постоянна, т. е. не зависит от ввода и вывода. Обычно предполагается, что фаза предварительной обработки имеет полиномиальный входной сигнал.

Общие методы

[ редактировать ]
  • Поиск с возвратом . Самый простой способ перечислить все решения — систематически исследовать пространство возможных результатов ( разделяя его на каждом последовательном шаге). [2] Однако выполнение этого может не дать хороших гарантий относительно задержки, т. е. алгоритм обратного отслеживания может потратить много времени на исследование частей пространства возможных результатов, которые не приводят к полному решению.
  • Поиск с фонариком : этот метод улучшает возврат назад, исследуя пространство всех возможных решений, но решая на каждом этапе проблему того, можно ли расширить текущее частичное решение до частичного решения. [1] Если ответ отрицательный, то алгоритм может немедленно вернуться назад и избежать потери времени, что упрощает предоставление гарантий по задержке между любыми двумя полными решениями. В частности, этот метод хорошо применим к саморедуцируемым задачам.
  • Замыкание при операциях над множествами . Если мы хотим перечислить непересекающееся объединение двух множеств, то мы можем решить проблему, перечислив первый набор, а затем второй набор. Если объединение не является непересекающимся, но множества можно перечислять в отсортированном порядке , то перечисление можно выполнять параллельно для обоих наборов, устраняя дубликаты на лету. Если объединение не является непересекающимся и оба множества не отсортированы, то дубликаты можно устранить за счет более высокого использования памяти, например, с помощью хеш-таблицы . Аналогично, декартово произведение двух наборов можно эффективно пересчитать, перечислив один набор и объединив каждый результат со всеми результатами, полученными при перечислении второго шага.

Примеры задач перечисления

[ редактировать ]

Связь с теорией вычислимости

[ редактировать ]

Понятие алгоритмов перечисления также используется в области теории вычислимости для определения некоторых классов высокой сложности, таких как RE , класс всех рекурсивно перечислимых задач. Это класс множеств, для которых существует алгоритм перечисления, который будет производить все элементы набора: алгоритм может работать вечно, если набор бесконечен, но каждое решение должно быть получено алгоритмом через конечное время.

  1. ^ Jump up to: а б Строжецкий, Янн; Мэри, Арно (2019). «Эффективное перечисление решений, полученных с помощью операций закрытия» . Дискретная математика и теоретическая информатика . 21 (3). дои : 10.23638/DMTCS-21-3-22 .
  2. ^ Прочтите, Рональд К .; Тарьян, Роберт Э. (1975). «Границы алгоритмов возврата для перечисления циклов, путей и связующих деревьев» . Сети . 5 (3): 237–252. дои : 10.1002/net.1975.5.3.237 .
  3. ^ Хаген, Матиас (2008). Проблемы алгоритмической и вычислительной сложности MONET . Геттинген: Кювилье. ISBN  9783736928268 .
  4. ^ Баган, Гийом; Дюран, Арно; Гранжан, Этьен (2007). Дюпарк, Жак; Хензингер, Томас А. (ред.). «Об ациклических конъюнктивных запросах и перечислении постоянной задержки». Информатика Логика . Конспекты лекций по информатике. 4646 . Шпрингер Берлин Гейдельберг: 208–222. дои : 10.1007/978-3-540-74915-8_18 . ISBN  9783540749158 .
  5. ^ Маркиз, П.; Дарвич, А. (2002). «Карта обобщения знаний». Журнал исследований искусственного интеллекта . 17 : 229–264. arXiv : 1106.1819 . дои : 10.1613/jair.989 . S2CID   9919794 .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: f3ab2ebeb14b9a3aff95aaac200a135f__1672781280
URL1:https://arc.ask3.ru/arc/aa/f3/5f/f3ab2ebeb14b9a3aff95aaac200a135f.html
Заголовок, (Title) документа по адресу, URL1:
Enumeration algorithm - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)