Мой любимый пример - классический результат Ашока Чандры и Филиппа Мерлина 1977 года . Они показали, что проблема удержания запросов разрешима для конъюнктивных запросов. Проблема удержания конъюнктивного запроса оказывается эквивалентной решению, существует ли гомоморфизм между двумя входными запросами. Это перефразирует проблему семантики, включающую квантификацию по бесконечному множеству, в синтаксическую, требующую проверки лишь конечного числа возможных гомоморфизмов. Сертификат гомоморфизма имеет только линейный размер, поэтому проблема в NP.
Эта теорема обеспечивает одну из основ теории оптимизации запросов к базе данных. Идея состоит в том, чтобы преобразовать запрос в другой, более быстрый. Однако требуется уверенность в том, что процесс оптимизации не создает новый запрос, который не дает ответов в некоторых базах данных, в которых исходный запрос действительно дал результаты.
Формально запрос к базе данных - это выражение в форме , где - список свободных переменных, является списком связанных переменных, а является формулой первого порядка с переменными и языка с символами отношения. Запрос может содержать экзистенциальные и универсальные квантификаторы, формула может содержать конъюнкцию и дизъюнкцию реляционных атомов, а также может появляться отрицание. Запрос применяется к экземпляру базы данных , который представляет собой набор отношений. Результатом является набор кортежей; когда кортежx.Q(x,y)xyQ(x,y)xyQIt в результате заменяется на тогда формула может быть удовлетворена. Затем можно сравнить два запроса: содержится в если всякий раз, когда применяется к произвольному экземпляру базы данных, выдаю некоторые результаты, тогда применяемый к тому же экземпляру, также выдаю некоторые результаты. (Это нормально, если не приводит к результатам, но дает, но для сдерживания импликация должна выполняться для каждого возможного экземпляра.) Проблема запроса запроса задается: с учетом двух запросов к базе данныхxQ(t,y)Q1Q2Q1IQ2IQ1Q2Q1и , содержится ли в ?Q2Q1Q2
До Чандра-Мерлина было не совсем ясно, что проблема разрешима. Используя только определение, нужно количественно определить бесконечный набор всех возможных баз данных. Если запросы не ограничены, то проблема, по сути, неразрешима: пусть будет формулой, которая всегда верна, тогда содержится в если допустимо. (Это проблема Гильберта Entscheidungs , показанная неразрешимой Церковью и Тьюрингом в 1936 году.)Q1Q1Q2Q2
Чтобы избежать неразрешимости, конъюнктивный запрос имеет довольно ограниченную форму: содержит только экзистенциальные квантификаторы, а отрицание и дизъюнкция недопустимы. Таким образом, является положительной экзистенциальной формулой только с соединением реляционных атомов. Это небольшой фрагмент логики, но этого достаточно, чтобы выразить большую часть полезных запросов к базе данных. Классический оператор в SQL выражает конъюнктивные запросы; большинство запросов поисковых систем являются конъюнктивными запросами.QQSELECT ... FROM
Можно определить гомоморфизмы между запросами простым способом (аналогично гомоморфизму графа с небольшим дополнительным учетом). Теорема Чандра-Мерлина гласит: учитывая два конъюнктивных запроса и , содержится в если существует гомоморфизм запросов от к . Это устанавливает членство в NP, и легко показать, что это также NP-сложный.Q1Q2Q1Q2Q2Q1
- Ашок К. Чандра и Филипп М. Мерлин, Оптимальная реализация конъюнктивных запросов в реляционных базах данных , STOC '77 77–90. doi: 10.1145 / 800105.803397
Разрешимость содержания запроса была позже распространена на объединения конъюнктивных запросов (экзистенциальные положительные запросы, где разрешена дизъюнкция), хотя разрешение дизъюнкции повышает сложность до -complete. Результаты разрешимости и неразрешимости также были установлены для более общей формы содержания запроса , включающей оценки полукольца, которые возникают при подсчете количества ответов, при объединении аннотаций в происхождении или при объединении результатов запросов в вероятностных базах данных.ΠP2