Скачиваний:
24
Добавлен:
26.09.2019
Размер:
774.14 Кб
Скачать

Пример доказательства правильности программы методом индуктивных утверждений

Пусть имеется следующая программа поиска максимального значения среди элементов хi,j.

1-8 – это точки, в которых предположительно имеют место следующие утверждения:

  • А1 : х – массив чисел, состоящий из m строк и n столбцов,

(исходная предпосылка);

  • А2 : , кроме того

  • А3: , , при этом .

  • А8 : .

Доказательство.

  1. Путь 1→2: , и т.к. из , то , т.е. утверждение А2 справедливо.

  2. Путь 2→3: Дано утверждение А2. Требуется доказать А3. При первом вхождении в точку 3 ,следовательно, , т.к. . Из утверждения А2, т.к. i не менялось, имеем , но в силу ограничения цикла в точке 2 в точке 3 получаем . Если , то из утверждения А2 следует , иначе, когда , из утверждения А2 получаем, что . Более того, можно утверждать, что , т.к. . Таким образом, видно, что при переходе из точки 2 в точку 3 утверждение А3 оказывается справедливым.

  3. Путь 3→4→5→3. Пусть справедливо утверждение А3. Покажем, что оно остается справедливым при переходе по данному пути. Пусть в точке 3 в какой-то момент времени , для которых выполняются неравенства: , . Тогда при переходе по пути 3→4→5→3 получаем , где . Так как мы двигались по указанному выше пути, то проверка в цикле была истинной, следовательно, . Значение не менялось, кроме того, мы приходим в точку 3 с условием , следовательно, остается максимальным и для нового значения j, т.е. утверждение А3 остается справедливым.

  4. Путь 3→4→6→3. Доказательство аналогично пункту 3 за исключением того, что здесь нашлось , и переменной присвоено это значение. Таким образом, утверждение А3 остается также справедливым.

  5. Путь 3→7→2. Пусть справедливо утверждение А3. Покажем, что при прохождении пути 3→7→2 будет справедливо утверждение А2. Из точки 3 в точку 2 мы попадаем, когда ложна проверка , но из А3 известно, что . Отсюда следует, что или . Тогда утверждение A3 относительно перепишется в виде . Но при прохождении пути 3→7→2 , поэтому , . Утверждение А2 справедливо.

  6. Путь 2→8. Так как мы вышли из точки 2 в точку 8 проверка неравенства оказалась ложной, следовательно, и утверждение A2 , что , преобразуется в утверждение A8 о частичной правильности программы: .

Тема 6.Рекурсивные программы. Методы доказательства их правильности

6.1.Понятие рекурсивных программ. Способы их описания Язык описания рекурсивных программ

Введем упрощенный язык программирования для иллюстрации работы рекурсивных программ. Программа на этом языке состоит из определения функции следующего вида:

F (x1, x2, … xn) = if <условие1> then <выражение1>

else if <условие2> then <выражение2>

. . . .

if <условиеN> then <выражениеN>

else <выражение N+1>

В данном выражении последовательно проверяются условия. Если i-ое условие выдает истину, то функция F выдает значение выражения i. Если ни одно из условий не выдает истину, то функция выдает значение выражения N+1. Рекурсия вводится в этот язык следующим образом: функция F может входить как часть в любом из выражений или условий в программе. Такое появление F называется рекурсивным обращением к этой функции. Дополнительно для каждой такой рекурсивной программы необходимо указать область определения, т.е. указать для каких аргументов х1,…хn применима программа.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]