Абстрактные типы данных (АТД)



         

Доказательство достаточной полноты - часть 2


Приведем точное определение этого понятия:

Определение: вес

Вес правильно построенного стекового выражения, не содержащего ни item, ни empty, определяется по индукции следующим образом:

  • (W1) Вес выражения new равен 0.
  • (W2) Вес выражения put (s, x) равен ws + 1, где ws - это вес s.
  • (W3) Вес выражения remove (s) равен ws- 1, где ws - это вес s.
  • Содержательно, правило корректного веса утверждает, что стековое выражение корректно тогда и только тогда, когда в нем самом и в каждом из его подвыражений имеется не меньше операций put (вставляющих элементы в стек), чем операций remove (выталкивающих элементы с вершины стека). Если рассмотреть такое выражение как представление некоторого вычисления над стеком, то это означает, что мы никогда не будем пытаться вытолкнуть больше элементов, чем втолкнули. Напомним, что на этом этапе мы сосредоточились на функциях put и remove, оставив в стороне запросы item и empty.

    Интуитивно сформулированное правило выглядит верным, но нам следует все же доказать, что оно имеет место. Удобно ввести еще одно вспомогательное правило и одновременно доказывать справедливость обоих этих правил:

    Правило нулевого веса

    Пусть e - это правильно построенное и корректное стековое выражение, не содержащее item или empty. Тогда empty (e) истинно тогда и только тогда, когда вес e равен 0.

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

    empty:

    Аксиомы стека

    Для всех x: G, s: STACK [G]

  • (A3) empty (new)
  • (A4) not empty (put (s, x))
  • При уровне вложенности 0 (без скобок) выражение e должно совпадать с new, поэтому его вес равен 0 и оно корректно, так как у new нет никаких предусловий. Аксиома A3 утверждает, что empty (new) истинно. Это обеспечивает базис индукции как для правила корректного веса, так и для правила нулевого веса.

    Индукционный шаг: предположим, что оба правила выполняются для всех выражений с уровнем вложенности не более n.


    Содержание  Назад  Вперед