Помощь в написании студенческих работ
Антистрессовый сервис

Модель доказательства корректности перестановки данных в векторе

РефератПомощь в написанииУзнать стоимостьмоей работы

Алгоритм программы состоит в построении для одномерного массива целых чисел Т длины N (array Т |1:ЛГ|) эквивалентного массива Г той же длины N, что и массив Г, и его элементы должны располагаться в порядке возрастания их значений. Иными словами, цель данного алгоритма — сортировка элементов исходного массива Т по их возрастанию. Доказательство правильности алгоритма сортировки элементов массива Т… Читать ещё >

Модель доказательства корректности перестановки данных в векторе (реферат, курсовая, диплом, контрольная)

Рассматривается формальное доказательство экспериментальной программы, заданной структурной логической схемой. Для нее составляются утверждения с помощью логических операторов, задаваемых комбинациями логических переменных (true/false), логическими операциями (конъюнкция, дизъюнкция и др.) и кванторами всеобщности и существования (табл. 6.1)1.

Таблица 6.1

Логические операции.

Название операции.

Пример

Значение.

Конъюнкция.

х & у

х и у

Дизъюнкция.

х * у

х или у

Отрицание.

-•х

Не х

Импликация.

х->у

Если ху то у

1 См.: Лаврищева Е. М. Программная инженерия. Парадигмы, технологии и CASEсредства., 2016. — 284 с.

Окончание табл. 6.1

Название операции.

Пример

Значение.

Эквивалентность.

х = у

хравнозначно у

Квантор всеобщности.

V х Р (х)

Для всех х условие истинно.

Квантор существования.

3 х Р (х)

Существует х, для которого р (х) истинно.

Алгоритм программы состоит в построении для одномерного массива целых чисел Т длины N (array Т |1:ЛГ|) эквивалентного массива Г той же длины N, что и массив Г, и его элементы должны располагаться в порядке возрастания их значений. Иными словами, цель данного алгоритма — сортировка элементов исходного массива Т по их возрастанию. Доказательство правильности алгоритма сортировки элементов массива Т проведем с использованием ряда утверждений относительно элементов этого алгоритма, который описывается 111—116.

П1. Входное условие алгоритма задается в виде начального утверждения:

Abcg: 1: Лг| — массив целых) & (Г[ 1: А] массив целых).

Выходное утверждение Acnd запишем как конъюнкции таких условий:

  • (а) (Г — массив целых) & (Г — массив целых);
  • (б) (Vi, если i < N, то 3 j (Ti) < Г (/)));
  • (в) (Vi, если г < ЛГ, го (Ti) < Г (i + 1)); т. е. Aend — это
  • (Г — массив целых) &  — массив целых)

& Vi, если i < К то 3 j (Г (г) < ГО')).

& V/, если i < N., то (Г (г) < T'(i + 1)).

Для расположения элементов массива Т в порядке возрастания их величин в массиве Г используется алгоритм пузырьковой сортировки, суть которого заключается в предварительном копировании массива Т в массив Г, а затем сортировке элементов согласно условию их возрастания.

Операторы алгоритма размещены в прямоугольниках. Условия выбора альтернативных путей представлены как условие, в кружках заданы точки с начальным Abeg и конечным Aend условиями и состояниями алгоритма, кружок с нулем задает начальное состояние, а с одной звездочкой — состояние после обмена местами двух соседних элементов в массиве Г, кружок с двумя звездочками — состояние после обмена местами всех пар за один проход всего массива Г.

Кроме уже известных переменных Г, Г и N, в алгоритме использованы еще две переменные: i — целое и М — булева переменная, значением которой являются логические константы true и false.

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

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

Так, оператор присваивания означает, что для всех i (i 0) выполняется (T'[i: = T[i]).

Результат выполнения алгоритма в точке с нулем может быть выражен утверждением:

Модель доказательства корректности перестановки данных в векторе.

Доказательство очевидно, поскольку за семантикой оператора присваивания (поэлементная пересылка чисел из (Гв Г')) сами элементы не изменяются. К тому же в данной точке их порядок в Г и Г' одинаковый. Итак, получили, что выполняется условие «б» исходного утверждения.

Модель доказательства корректности перестановки данных в векторе.

Заметим, что первая строка доказанного утверждения совпадает с условием исходного утверждения Лепс|, которое остается справедливым до конца работы алгоритма и поэтому в следующих утверждениях приводиться не будет.

Оператор изменяет местами элементы массива.

В результате работы оператора будет справедливым такое утверждение:

Модель доказательства корректности перестановки данных в векторе.

которое является частью условия «в» утверждения Леп (1 (для одной конкретной пары смежных элементов массива Т).

Очевидно также, что семантика оператора обмена местами не нарушает условие «б» выходного утверждения ЛСП (1.

Алгоритм выполняет всевозможные замены данных в каждой паре смежных элементов массива Г' за один проход через Г', т. е. оператор обмена работал один или больше раз. Однако пузырьковая сортировка не дает гарантии, что достигнуто упорядочение за один проход, но массиву Т', поскольку после очередного обмена индекс i увеличивается на единицу независимо от того, как соотносится новый элемент Тг) с предшествующим элементом Ti — 1).

В этой точке также справедливо утверждение:

Модель доказательства корректности перестановки данных в векторе.

Часть алгоритма, обозначенная точкой с двумя звездочками, выполняется до тех пор, пока не будет упорядочен весь массив, т. е. не будет выполняться условие «в» утверждения ЛеП ( для всех элементов массива Т'

Модель доказательства корректности перестановки данных в векторе.

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

Доказано, что выполнение программы завершено успешно, что означает ее правильность.

ПЗ. Этот алгоритм можно представить в виде серии теорем, которые доказываются. Начиная с первого утверждения и переходя от одного преобразования к другому, определяют индуктивный путь вывода, т. е. если одно утверждение является истинным, то истинно и другое. Иными словами, если первое утверждение — Л, и первая точка преобразования — Л2, то первой теоремой будет: —> Л2.

Если Л3 — следующая точка преобразования, то второй теоремой будет: Л2 —?>А3

Таким образом, формулируется общая теорема: Л, —" Aj, где Л, и Л;— — смежные точки преобразования.

Последняя теорема формулируется так, что условие, «истинное» в последней точке, отвечает истинности выходного утверждения: Ак —> Ле11с|.

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

Доказали, что Ак —> Ле11(1, а значит, верно Л; —> Л, +1 и т. д., пока не получим, что А{ —> Л0.

П4. Далее специфицируются утверждения if — then.

П5. Чтобы доказать, что программа корректная, необходимо последовательно расположить все утверждения, начиная с Л) и заканчивая ЛС1к1, что подтверждает истинность входного и выходного условий.

П6. Доказательство программы завершено.

Показать весь текст
Заполнить форму текущей работой