Главная » Просмотр файлов » Учебное пособие по методам Флойда

Учебное пособие по методам Флойда (1185162), страница 4

Файл №1185162 Учебное пособие по методам Флойда (Учебное пособие по методам Флойда) 4 страницаУчебное пособие по методам Флойда (1185162) страница 42020-08-21СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 4)

Заглавнымибуквами обозначены блок-схемы, строчными — предикаты.a) ∀ a ∀ P ∃ b {a}P{b} ⇒ {b}P{a}b) ∀ a ∀ P ∃ b 〈a〉P〈b〉 ⇒ {b}P{a}c) ∀ P ∃ a ∃ b {a}P{b}d) ∀ P ∃ a ∃ b 〈a〉P〈b〉e) ∀ P ∃ a ∃ b {a}P{b} ∧ ¬ 〈a〉P〈b〉1.4 ФормулировкаметодовФлойдадлядоказательства корректности программМы рассмотрели доказательство полной корректности программы на примере программы целочисленного деления. Теперь мыопределим методы доказательства корректности программ, представленных в виде блок-схем, в общем случае.Как и в примере, доказательство полной корректности будетпроводиться в два этапа.

Сначала доказывается частичная корректность программы. Для этого мы будем использовать метод индуктивных утверждений Флойда. Вторым шагом проводится доказа-27тельство завершаемости программы. Для решения этой задачи мыбудем использовать метод фундированных множеств Флойда.Метод индуктивных утверждений ФлойдаБудем рассматривать пути в блок-схемах и обозначать ихследующим образом:  – путь в блок-схеме, начинающийся сосвязки e1 и завершающийся связкой ek (связка e1 выходит из некоторого оператора n1, связка ek входит в некоторый оператор nk+1): n1–e1 n2 –e2 … –ek nk+1. Внутри этого пути находятся операторыn2, n3,..., nk.Дадим несколько вспомогательных определений. Определимпредикат допустимости пути  (или просто, предикат пути )R(x,y) : Dx  Dy  {Т, F} и функцию пути  r(x,y) : Dx  Dy Dy.

Предикат пути R(x,y) определяет, какое должно быть значениевходных и промежуточных переменных в начале пути (в моментвыполнения перехода по связке e1), чтобы дальнейшее вычислениешло по пути . Функция пути r(x,y) определяет, как изменятсязначения промежуточных переменных в результате исполнения последователь-ности операторов блок-схемы, находящихся внутрипути .Наиболее простым способом составления формул для предикатапути R(x,y) и функции пути r(x,y) является метод обратныхподстановок.Для каждого m  { 1, …, k } определим предикат Rm(x,y) ифункцию rm(x,y). При m = k это будут предикат и функция пути,состоящего из одной связки (внутри этого пути не будет ни одногооператора).

А при положительных целых m < k это будут предикат28и функция пути от связки em в связку ek (т. е. пути nm –em nm+1 –em+1 … nk –ek nk+1, проходящего через операторы nm+1, …, nk).Таким образом,R(x,y)  R1(x,y)r(x,y)  r1(x,y)Предикаты Rm(x,y) и функции rm(x,y) определим индукциейпо m.Базис индукции (для путей, состоящих из одной связи):Rk(x, y)  Trk(x, y)  yИндуктивное предположение:Зафиксируем некоторое m < k.

Предположим, что Rm+1(x,y) иrm+1(x,y)уже определены, т. е. определены предикат и функцияпути nm+1 –em+1 … nk –ek nk+1, проходящего через операторы nm+2,…, nk.Индуктивный переход:Тогда в пути из связки em в связку ek связка em будет входитьв оператор nm+1, за которым идет путь, рассмотренный в индуктивном предположении. Поэтому можно определить R m(x,y) и rm(x,y)в зависимости от оператора nm+1: Если nm+1 – оператор присваивания ASSIGN: y  g(x,y), тоRm(x, y)  Rm+1(x, g(x, y)) ∧ g(x, y) ≠ ωrm(x, y)  rm+1(x, g(x, y)) Если nm+1 – условный оператор TEST: t(x, y) и связкаem помечена символом T, тоRm(x, y)  Rm+1(x, y) ∧ t(x, y)29rm(x, y)  rm+1(x, y) Если nm+1 – условный оператор TEST: t(x, y) и связкаem помечена символом F, тоRm(x, y)  Rm+1(x, y) ∧ t(x, y)rm(x, y)  rm+1(x, y) Если nm+1 – оператор соединения JOIN, тоRm(x, y)  Rm+1(x, y)rm(x, y)  rm+1(x, y)Обратите внимание, что в этом перечислении нет начальногои завершающего оператора — причина в том, что эти операторы немогут встречаться внутри пути.

Однако в них могут входить и выходить первая или последняя связка пути. Если началом первойсвязки пути  является начальный оператор START: y  f(x), тобудем использовать предикат R'(x)  R(x, f(x)) ∧ f(x) ≠ ω ифункцию r'(x)  r(x, f(x)). Если концом последней связки пути является завершающий оператор HALT: z  h(x, y), то будем использовать предикат R''(x, y)  R(x, y) ∧ h(x, r(x, y)) ≠ ω ифункцию r''(x, y)  h(x, r(x, y)) (r''(x, y) : Dx  Dy  Dz).Индуктивные утверждения. Пусть P – блок-схема, а  = (,) – ее спецификация.

Рассмотрим следующий метод доказательства частичной корректности программы P относительно спецификации .Шаг 1. Точки сечения. Выберем подмножество связок блок-схемы. Эти связки мы будем называть точками сечения. Выбранноемножество точек сечения должно быть таким, чтобы каждый циклв блок-схеме содержал, по крайней мере, одну точку сечения.30Все ориентированные пути между точками сечения, не содержащие других точек сечения, мы будем называть промежуточнымибазовыми путями. Пути, начинающиеся в начальном операторе, заканчиваю-щиеся в точке сечения и не содержащие других точек сечения, мы будем называть начальными базовыми путями.

Пути, начинающиеся в точке сечения, заканчивающиеся в одном из завершающихся операторов и не содержащие других точек сечения, мыбудем называть конечными базовыми путями. И наконец, пути, начинающиеся в начальном операторе, заканчивающиеся в одном иззавершающихся операторов и не содержащие других точек сечения,мы будем называть простыми базовыми путями.Шаг 2. Индуктивные утверждения.

Выберем для каждой точки сечения i предикат pi(x, y), который характеризует отношениемежду переменными блок-схемы при прохождении данной связки.Будем называть эти предикаты индуктивными утверждениями.Кроме того, свяжем входной предикат (x) с начальным оператором блок-схемы, а выходной предикат (x, z) – со всемизавершающими операторами.Шаг 3.

Условия верификации. На третьем шаге сконструируемдля каждого промежуточного базового пути , начинающегося вточке сечения i и завершающегося в точке сечения j, условия верификации: x  Dx  y  Dy [ (x) ∧ pi(x, y) ∧ R(x, y)  pj( x, r(x,y) ) ]Эти условия утверждают, что если предикат p i(x, y) истинендля некоторых значений переменных x и y, и эти значения такие,что, начиная из точки сечения i, вычисление пойдет по пути  и31успешно достигнет конца пути, то предикат p j(x, y) будет истинендля значений переменных x и y, после прохождения по пути .Для начального базового пути , завершающегося в точке сечения j, условия верификации будут выглядеть следующим образом: x  Dx [ (x) ∧ R'(x)  pj( x, r'(x) ) ]В этом случае условия утверждают, что если входной предикат(x) истинен для некоторых значений входных переменных и этизначения такие, что начальное вычисление пойдет по пути  иуспешно достигнет конца пути, то предикат p j(x, y) будет истинендля значений переменных x и y, после прохождения по пути .Для каждого конечного базового пути , начинающегося в точкесечения i, условия верификации конструируются следующим образом: x  Dx  y  Dy [ (x) ∧ pi(x, y) ∧ R''(x, y)  (x, r''(x,y)) ]Здесь условия верификации утверждают, что если предикатpi(x, y) истинен для некоторых значений переменных x и y и этизначения такие, что, начиная из точки сечения i, вычисление пойдет по пути , то предикат (x, z) будет истинен для значенийпеременных x и z после успешного завершения работы блок-схемыпри прохождении по пути .Если в блок-схеме существуют простые базовые пути, то длякаждого такого пути  (входящего в оператор HALT с функциейh) условие верификации будут выглядеть следующим образом: x  Dx[ (x) ∧ R'(x) ∧ h(x, r'(x)) ≠ ω  (x, h(x,r'(x))) ]32В этом случае условия утверждают, что если входной предикат(x) истинен для некоторых значений входных переменных и этизначения такие, что вычисление пойдет по пути  и успешно достигнет его конца, то выходной предикат (x, z) будет истинен длязначений переменных x и z после завершения работы блок-схемыпри прохождении по пути .Лемма 5.

Пусть все условия верификации истинны. Пусть дановычисление блок-схемы P, входные переменные которого удовлетворяют входному предикату . Тогда для каждого прохода вычисления Ck – Ck+1 через точку сечения i, предикат pi(x, y) будет истинен на значениях переменных x и y в конфигурации Ck.Теорема 1. (Метод индуктивных утверждений Флойда)Пусть даны блок-схема P и ее спецификация  = (, ). Выполним следующие действия:1. Выберем точки сечения;2. Найдем подходящий набор индуктивных утверждений;3. Построим условия верификации для всех базовых путей.Если все условия шага 3 истинны, то блок-схема P частичнокорректна относительно спецификации .Доказательства леммы и теоремы предоставляется читателю вкачестве упражнения.Все шаги метода Флойда, за исключением второго, могут бытьвыполнены относительно автоматически.

А вот выбор подходящегонабора индуктивных утверждений требует хорошего пониманияфункционирования программы и поэтому сложно поддается автоматизации.33Метод фундированных множеств ФлойдаДалее мы рассмотрим метод доказательства завершаемости программ, представленных в виде блок-схем.Напомним некоторые определения. Частично-упорядоченныммножеством (W, ≺) называется непустое множество W и любоебинарное отношение ≺ на этом множестве, которое удовлетворяетследующим свойствам:1. Для всех a, b, c  W из a ≺ b и b ≺ c следуетa ≺c [Транзитивность]2.

Для всех a, b  W из a ≺ b следует ( b ≺ a ) [Асиметричность]3. Для всех a  W ( a ≺ a ) [Иррефлексивность]Знаком ≻ будем обозначать бинарное отношение такое, что длялюбых a, b  W a ≻ b тогда и только тогда, когда b ≺ a. Частичноупорядоченное множество (W, ≺) называется фундированным, еслине существует бесконечно убывающей последовательности его элементов, т. е. такой последовательности {ai}, что a1 ≻ a2 ≻ a3 ≻ … .Наиболее известным примером фундированного множества является множество натуральных чисел с отношением порядка <.Пусть P – блок-схема, а  – ее входной предикат. Рассмотримследующий метод доказательства завершаемости программы P на.Шаг 1.

Характеристики

Тип файла
PDF-файл
Размер
518,02 Kb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6375
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее