stringtranslate.com

Структурная индукция

Структурная индукцияметод доказательства , который используется в математической логике (например, в доказательстве теоремы Лося ), информатике , теории графов и некоторых других областях математики. Это обобщение математической индукции по натуральным числам , которое может быть далее обобщено до произвольной нётеровой индукции . Структурная рекурсия — метод рекурсии, имеющий такое же отношение к структурной индукции, как обычная рекурсия имеет к обычной математической индукции .

Структурная индукция используется для доказательства того, что некоторое предложение P ( x ) справедливо для всех x некоторого вида рекурсивно определенной структуры, такой как формулы , списки или деревья . На структурах определяется обоснованный частичный порядок («подформула» для формул, «подсписок» для списков и «поддерево» для деревьев). Доказательство структурной индукции — это доказательство того, что предложение справедливо для всех минимальных структур и что если оно справедливо для непосредственных подструктур определенной структуры S , то оно должно справедливо и для S . (Формально говоря, это удовлетворяет предпосылкам аксиомы обоснованной индукции , которая утверждает, что эти два условия достаточны для того, чтобы предложение справедливо для всех x .)

Структурно рекурсивная функция использует ту же идею для определения рекурсивной функции: «базовые случаи» обрабатывают каждую минимальную структуру и правило для рекурсии. Структурная рекурсия обычно доказывается корректной структурной индукцией; в особенно простых случаях индуктивный шаг часто опускается. Функции length и ++ в примере ниже являются структурно рекурсивными.

Например, если структуры являются списками, обычно вводят частичный порядок "<", в котором L < M всякий раз, когда список L является хвостом списка M . При таком порядке пустой список [] является единственным минимальным элементом. Доказательство структурной индукции некоторого предложения P ( L ) тогда состоит из двух частей: доказательства того, что P ([]) истинно, и доказательства того, что если P ( L ) истинно для некоторого списка L , и если L является хвостом списка M , то P ( M ) также должно быть истинным.

В конце концов, может существовать более одного базового случая и/или более одного индуктивного случая, в зависимости от того, как была построена функция или структура. В этих случаях доказательство структурной индукции некоторого предложения P ( L ) состоит из:

  1. доказательство того, что P ( BC ) верно для каждого базового случая BC ,
  2. доказательство того, что если P ( I ) истинно для некоторого экземпляра I и M может быть получено из I путем применения любого одного рекурсивного правила один раз, то P ( M ) также должно быть истинным.

Примеры

Древнее родословное древо, показывающее 31 человека в 5 поколениях

Древо предков — это общеизвестная структура данных, показывающая родителей, бабушек и дедушек и т. д. человека, насколько это известно (см. рисунок для примера). Оно рекурсивно определяется:

Например, свойство «Предковое дерево, простирающееся на g поколений, показывает не более 2 g − 1 человек» можно доказать с помощью структурной индукции следующим образом:

Следовательно, по структурной индукции каждое дерево предков удовлетворяет этому свойству.

В качестве другого, более формального примера рассмотрим следующее свойство списков:

Здесь ++ обозначает операцию конкатенации списков, len() — длину списка, а L и M — списки.

Чтобы доказать это, нам нужны определения длины и операции конкатенации. Пусть ( h : t ) обозначает список, голова (первый элемент) которого — h , а хвост (список оставшихся элементов) — t , и пусть [] обозначает пустой список. Определения длины и операции конкатенации следующие:

Наше предложение P ( l ) заключается в том, что EQ истинно для всех списков M, когда L равно l . Мы хотим показать, что P ( l ) истинно для всех списков l . Мы докажем это с помощью структурной индукции по спискам.

Сначала мы докажем, что P ([]) истинно; то есть EQ истинно для всех списков M , когда L оказывается пустым списком [] . Рассмотрим EQ :

Итак, эта часть теоремы доказана; уравнение EQ верно для всех M , когда L равно [] , поскольку левая и правая части равны.

Далее рассмотрим любой непустой список I . Поскольку I непустой, у него есть головной элемент x и хвостовой список xs , поэтому мы можем выразить его как ( x : xs ) . Гипотеза индукции заключается в том, что EQ истинно для всех значений M, когда L равно xs :

Мы хотели бы показать, что если это так, то EQ также верно для всех значений M , когда L = I = ( x : xs ) . Продолжаем, как и прежде:

Таким образом, из структурной индукции получаем, что P ( L ) истинно для всех списков L .

Хорошо упорядоченный

Так же, как стандартная математическая индукция эквивалентна принципу хорошо упорядоченного порядка , структурная индукция также эквивалентна принципу хорошо упорядоченного порядка. Если множество всех структур определенного вида допускает хорошо обоснованный частичный порядок, то каждое непустое подмножество должно иметь минимальный элемент. (Это определение « хорошо обоснованного ».) Значение леммы в этом контексте заключается в том, что она позволяет нам вывести, что если есть какие-либо контрпримеры к теореме, которую мы хотим доказать, то должен быть минимальный контрпример. Если мы можем показать, что существование минимального контрпримера влечет еще меньший контрпример, мы получаем противоречие (поскольку минимальный контрпример не является минимальным), и поэтому множество контрпримеров должно быть пустым.

В качестве примера такого типа аргумента рассмотрим множество всех бинарных деревьев . Мы покажем, что количество листьев в полном бинарном дереве на один больше, чем количество внутренних узлов. Предположим, что есть контрпример; тогда должен существовать один с минимально возможным количеством внутренних узлов. Этот контрпример, C , имеет n внутренних узлов и l листьев, где n + 1 ≠ l . Более того, C должен быть нетривиальным, потому что тривиальное дерево имеет n = 0 и l = 1 и, следовательно, не является контрпримером. Следовательно, C имеет по крайней мере один лист, родительский узел которого является внутренним узлом. Удалим этот лист и его родителя из дерева, продвигая родственный узел листа на позицию, ранее занимаемую его родителем. Это уменьшает как n , так и l на 1, поэтому новое дерево также имеет n + 1 ≠ l и, следовательно, является меньшим контрпримером. Но по гипотезе C уже был наименьшим контрпримером; следовательно, предположение о том, что изначально были какие-либо контрпримеры, должно быть ложным. Частичный порядок, подразумеваемый здесь под «меньше», — это тот, который говорит, что S < T всякий раз, когда S имеет меньше узлов, чем T.

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

Ссылки

Ранние публикации о структурной индукции включают: