SlideShare a Scribd company logo
Computer Science клуб - Екатеринбург
                        Март 2012



        Fun with Formal Program Semantics
      (О формальной семантике программ –
                     просто)
             Шилов Николай Вячеславович




03/10/12           Шилов Николай Вячеславович Всего слайдов 32   1
Тема 4: Верификация программ
              с точки зрения семантики
             языков программирования

            (на примере диалекта ToyPL)




03/10/12          Шилов Николай Вячеславович Всего слайдов 32   2
Великие научные проблемы

• В 1980 г. премии Тьюринга был удостоен Антони
  Хоар за «основополагающий вклад в
  определение и разработку языков
  программирования».
• По-видимому, такое признание заслуг А. Хоара
  может служить весомым аргументом для того,
  чтобы прислушаться к тому, что Антони Хоар
  называет Великими проблемами
  программирования как науки.

03/10/12        Шилов Николай Вячеславович Всего слайдов 32   3
Великие научные проблемы

• По мнению А. Хоара, для того, чтобы какая-либо
  научная проблема могла называться Великой, она
  должна удовлетворять следующему ряду
  требований:
   – проблема должна носить фундаментальный
     характер, её решение будет иметь прежде
     всего научное значение;
   – решение может иметь и прикладное значение,
     но в масштабах всего человечества;



03/10/12        Шилов Николай Вячеславович Всего слайдов 32   4
Великие научные проблемы

     – решение проблемы может потребовать
       десятилетий скоординированных усилий
       учёных и коллективов мирового класса;
     – есть чёткие критерии успеха или провала в
       решении проблемы.




03/10/12          Шилов Николай Вячеславович Всего слайдов 32   5
Великие научные проблемы

• А. Хоар приводит примеры решённых Великих
  научных проблем:
   – полёт человека на Луну,
   – расшифровка генома человека,
   – доказательство Великой теоремы Ферма.
• А в качестве примера «проваленной» Великой
  научной проблемы А. Хоар приводит проблему
  лечения рака: как оказалось, различных причин
  развития рака слишком много, а механизмы его
  развития слишком сложны для того, что бы
  надеяться на панацею.

03/10/12        Шилов Николай Вячеславович Всего слайдов 32   6
Великие проблемы программирования




03/10/12       Шилов Николай Вячеславович Всего слайдов 32   7
Проблема верифицирующего транслятора

• Решение проблемы Верифицирующего
  Транслятора может иметь огромное значение в
  эпоху информационных технологий, т.к.
   – проверка синтаксической правильности
     программы и её трансляция в исполняемый
     машинный код осуществляется полностью
     автоматически,
   – но этап отладки программ до сих пор плохо
     автоматизирован.

03/10/12        Шилов Николай Вячеславович Всего слайдов 32   8
Великие верифицирующего транслятора

• Воспользуемся следующим образным
  сравнением Владимира Анатольевича Захарова:
   – Средства отладки программы, которые
     входят в состав всякой развитой системы
     программирования, могут помочь
     разработчику в той же мере, в какой лопата
     оказывает помощь кладоискателю. Главные
     вопросы - где копать и стоит ли копать
     вообще?


03/10/12       Шилов Николай Вячеславович Всего слайдов 32   9
Великие верифицирующего транслятора

     – Здесь скорее пригодилось бы устройство
       наподобие металлоискателя. Но хороший
       металлоискатель - это тонкий инструмент,
       требующий знания его устройства и умелого
       обращения. Так что кроме лопаты неплохо
       бы использовать и автоматические системы
       поиска ошибок и проверки правильности
       функционирования программ…




03/10/12         Шилов Николай Вячеславович Всего слайдов 32   10
Неформальное введение
           в формальную верификацию
• Формальная верификация – это доказательство
  специфицированных программ, т.е. программ,
  свойства которых специфицированы некоторым
  специальным образом.
• Вычислительная программа – это программа,
  которая за конечное время преобразует
  начальные (входные) в заключительные
  (выходные) значения.




03/10/12        Шилов Николай Вячеславович Всего слайдов 32   11
Неформальное введение
           в формальную верификацию
• Для вычислительных программ используют два
  вида логических спецификаций, которые
  называются:
   – условиями частичной корректности,
   – условиями тотальной корректности.
• Эти условия имеют вид {ϕ}π{ψ} и [ϕ]π[ψ]
  соответственно, где π – программа, предусловие
  ϕ – это условие на входные данные, которое
  требуется перед исполнением программы π, а
  постусловие ψ – это условие на выходные
  данные, гарантируемое после исполнения
  программы π.
03/10/12        Шилов Николай Вячеславович Всего слайдов 32   12
Неформальное введение
           в формальную верификацию
• Говорят, что условие частичной корректности
  {ϕ}π{ψ} истинно (верно), или что программа π
  частично корректна по отношению к предусловию
  ϕ и постусловию ψ (обозначение |={ϕ}π{ψ}), если
  на любых входных данных, которые
  удовлетворяют свойству ϕ, программа π или не
  останавливается (зацикливается, зависает и т.п.),
  или останавливается с выходными данными,
  которые удовлетворяют свойству ψ.




03/10/12        Шилов Николай Вячеславович Всего слайдов 32   13
Неформальное введение
           в формальную верификацию
• Говорят, что условие частичной корректности
  [ϕ]π[ψ] истинно (верно), или что программа π
  частично корректна по отношению к предусловию
  ϕ и постусловию ψ (обозначение |=[ϕ]π[ψ]), если
  на любых входных данных, которые
  удовлетворяют свойству ϕ, любое вычисление
  программы π останавливается с выходными
  данными, которые удовлетворяют свойству ψ.




03/10/12        Шилов Николай Вячеславович Всего слайдов 32   14
Неформальное введение
           в формальную верификацию
• Таким образом, для детерминированных
  программ разница между частичной и тотальной
  корректностью состоит в завершаемости
  программы: частичная корректность допускает
  неостановку программы, а тотальная – запрещает.




03/10/12        Шилов Николай Вячеславович Всего слайдов 32   15
Неформальное введение
           в формальную верификацию
• Для доказательства специфицированных
  вычислительных программ существуют два
  метода, разработанных Р. Флойдом в 1960-х гг.




03/10/12        Шилов Николай Вячеславович Всего слайдов 32   16
Метод Р. Флойда
     доказательства частичной корректности
// Предусловие метода.
{ {ϕ}π{ψ} – условие частичной корректности
   детерминированной программы }
• Представить программу π графически в виде
   блок-схемы и выбрать множество контрольных
   точек (на дугах), включающее начало и конец
   программы, такое, чтобы любой цикл по графу
   блок-схемы содержал контрольную точку.



03/10/12        Шилов Николай Вячеславович Всего слайдов 32   17
Метод Р. Флойда
      доказательства частичной корректности
// Аннотация «инвариантами».
• Сопоставить началу программы предусловие ϕ,
   концу программы – постусловие ψ, а каждой из
   оставшихся контрольных точек – некоторое (своё)
   условие «инвариант» этой точки.
• Построить множество «участков» L, состоящее из
   всех невырожденных ациклических маршрутов по
   графу блок-схемы программы между всеми
   парами контрольных точек.

03/10/12         Шилов Николай Вячеславович Всего слайдов 32   18
Метод Р. Флойда
      доказательства частичной корректности
// Доказательство инвариантов.
• Для каждого участка из L доказать: если условие,
   сопоставленное началу участка, верно перед
   началом исполнения участка,
          то условие, сопоставленное концу участка,
               верно после исполнения этого участка.
// Постусловие метода.
• {|={ϕ}π{ψ}, т. е. программа π частично корректна
   по отношению к предусловию ϕ и постусловию ψ}
03/10/12         Шилов Николай Вячеславович Всего слайдов 32   19
Метод Р. Флойда
      доказательства частичной корректности
• Заметим, что метод Р. Флойда для условий
  частичной корректности не является алгоритмом,
  так как он описан (по-просту говоря)
  неформально, включает необходимось
  придумать и доказать инварианты.
• В силу своей неформальности его корректность
  неможет быть доказана (как и корректность
  метода математической индукции), а только
  «показана».

03/10/12         Шилов Николай Вячеславович Всего слайдов 32   20
Метод Р. Флойда
      доказательства частичной корректности
• Упражнение #1: Покажите, что если условие
  частичной корректности верно, то всегда можно
  выбрать контрольные точки и приписать им
  инварианты таким образом, который гарантирует
  успешное применение метода Р. Флойда.




03/10/12         Шилов Николай Вячеславович Всего слайдов 32   21
Понятие о методе потенциалов

• Метод Р. Флойда для доказательства условий
  тотальной корректности называется методом
  потенциалов, он применим только к
  детерминированным программам.
• Частный случай применения этого метода для
  доказательства завершаемости
  детерминированных программ кратко можно
  описать следующим образом:



03/10/12          Шилов Николай Вячеславович Всего слайдов 32   22
Понятие о методе потенциалов

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


03/10/12          Шилов Николай Вячеславович Всего слайдов 32   23
Понятие о методе потенциалов

• Метод Р. Флойда тоже не является алгоритмом,
  так как необходимо придумать фундированное
  множество, отображение в это множество и
  доказать, что потенциалы убывают в результате
  выполнения циклов.
• Корректность метода потенциалов также
  невозможно формально доказать, а только
  неформально обосновать.



03/10/12          Шилов Николай Вячеславович Всего слайдов 32   24
Пример Э. Дейкстры
           применения метода потенциалов
• Задача начальника порта
   – На рейде порта с N причалами находится ровно
     N кораблей. Начальник порта получает
     сообщение о штормовом предупреждении и
     должен назначить каждому из кораблей его
     определенный (индивидуальный) причал.
   – Положения всех кораблей в момент получения
     штормового предупреждения известны.
     Положения причалов фиксированы и тоже
     известны.


03/10/12          Шилов Николай Вячеславович Всего слайдов 32   25
Пример Э. Дейкстры
           применения метода потенциалов
   – Непосредственно в этот момент никакое
     препятствие (особенности береговой линии,
     расположение других причалов или положение
     других кораблей на рейде) не мешает любому
     из кораблей двигаться прямо к любому из
     причалов.
   – Во избежание столкновений маршруты
     кораблей не должны пересекаться.
• Помогите начальнику порта распределить
  корабли по причалам.


03/10/12          Шилов Николай Вячеславович Всего слайдов 32   26
Пример Э. Дейкстры
           применения метода потенциалов
• Геометрическая модель проблемы – это N чёрных
  и N белых точек на плоскости, соответствующих
  положениям кораблей на рейде и расположению
  причалов, а возможные (гипотетические)
  маршруты – отрезки прямых между белыми и
  чёрными точками.
• По условию задачи никакие три из этих точек не
  являются коллинеарными (т. е. не лежат на одной
  прямой).



03/10/12          Шилов Николай Вячеславович Всего слайдов 32   27
Пример Э. Дейкстры
           применения метода потенциалов
• Необходимо построить (если это вообще
  возможно) N попарно непересекающихся
  отрезков, у каждого из которых один конец – это
  некоторая белая точка, а другой – некоторая
  чёрная точка.




03/10/12          Шилов Николай Вячеславович Всего слайдов 32   28
Пример Э. Дейкстры
           применения метода потенциалов
VAR X: СОЕД;
X:= ПЕРВ ;
WHILE ¬ХОР(X)        DO X := ЩЁЛК(X) OD.




03/10/12          Шилов Николай Вячеславович Всего слайдов 32   29
Пример Э. Дейкстры
           применения метода потенциалов
• Для любого значения X типа СОЕД примем в
  качестве его потенциала P(X) сумму длин
  отрезков, которые входят в X: P(X)= Σ[B,W]∈X |B,W|.
• В силу неравенства треугольника |B’W”| + |B,W’|
  < |B’W’| + |B,W’|.




03/10/12          Шилов Николай Вячеславович Всего слайдов 32   30
Пример Э. Дейкстры
           применения метода потенциалов
• Поэтому
P(X) = (Σ[B,W]∈X|B,W|) =
  = (|B',W'| + |B",W"|) + (Σ[B,W]∈X{[B',W'],[B",W"]} |B,W|) >
  >(|B',W"| + |B",W'|) + (Σ[B,W]∈X{[B',W'],[B",W"]} |B,W|) =
                     = (Σ[B,W]∈ЩЁЛК(X) |B,W|) = P(ЩЁЛК(X)).
• Следовательно, согласно методу потенциалов,
  программа (вернее, алгоритм) завершает свою
  работу.


03/10/12            Шилов Николай Вячеславович Всего слайдов 32   31
Метод потенциалов
           доказательства завершаемости
• Упражнение #2: Покажите, что если
  детерминированный алгоритм (программа)
  завершается, то всегда можно выбрать
  потенциальную функцию, которая гарантирует
  успешное применение метода потенциалов.




03/10/12          Шилов Николай Вячеславович Всего слайдов 32   32

More Related Content

What's hot

Доклад АКТО-2012 Душкин, Смирнова
Доклад АКТО-2012 Душкин, СмирноваДоклад АКТО-2012 Душкин, Смирнова
Доклад АКТО-2012 Душкин, Смирнова
Dmitry Dushkin
 
TMPA-2015: Multi-Module Application Tracing in z/OS Environment
TMPA-2015: Multi-Module Application Tracing in z/OS EnvironmentTMPA-2015: Multi-Module Application Tracing in z/OS Environment
TMPA-2015: Multi-Module Application Tracing in z/OS Environment
Iosif Itkin
 
Insane Byte' 2017
Insane Byte' 2017Insane Byte' 2017
Insane Byte' 2017
Alexander Babich
 
Регрессионное тестирование
Регрессионное тестированиеРегрессионное тестирование
Регрессионное тестированиеMarat Akhin
 
C++ осень 2013 лекция 7
C++ осень 2013 лекция 7C++ осень 2013 лекция 7
C++ осень 2013 лекция 7Technopark
 
Случайное тестирование
Случайное тестированиеСлучайное тестирование
Случайное тестированиеMarat Akhin
 
Тестирование программного обеспечения: что, зачем и почему?
Тестирование программного обеспечения: что, зачем и почему?Тестирование программного обеспечения: что, зачем и почему?
Тестирование программного обеспечения: что, зачем и почему?Marat Akhin
 
Тестирование лекция 2 весна 2014
Тестирование лекция 2 весна 2014Тестирование лекция 2 весна 2014
Тестирование лекция 2 весна 2014Technopark
 
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Platonov Sergey
 
TMPA-2015: Formal Methods in Robotics
TMPA-2015: Formal Methods in RoboticsTMPA-2015: Formal Methods in Robotics
TMPA-2015: Formal Methods in Robotics
Iosif Itkin
 
C++ осень 2013 лекция 5
C++ осень 2013 лекция 5C++ осень 2013 лекция 5
C++ осень 2013 лекция 5Technopark
 
Тестирование весна 2013 лекция 2
Тестирование весна 2013 лекция 2Тестирование весна 2013 лекция 2
Тестирование весна 2013 лекция 2Technopark
 
Уменьшение влияния человеческого фактора при разработке бизнес приложений
Уменьшение влияния человеческого фактора при разработке бизнес приложенийУменьшение влияния человеческого фактора при разработке бизнес приложений
Уменьшение влияния человеческого фактора при разработке бизнес приложений
ngrebnev
 
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
Iosif Itkin
 
C++ осень 2012 лекция 1
C++ осень 2012 лекция 1C++ осень 2012 лекция 1
C++ осень 2012 лекция 1Technopark
 
C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.
Igor Shkulipa
 
Проблема тестовых входных данных
Проблема тестовых входных данныхПроблема тестовых входных данных
Проблема тестовых входных данныхMarat Akhin
 
Полнота тестирования ПО
Полнота тестирования ПОПолнота тестирования ПО
Полнота тестирования ПОMarat Akhin
 
Тестовый оракул: что, где, когда
Тестовый оракул: что, где, когдаТестовый оракул: что, где, когда
Тестовый оракул: что, где, когдаMarat Akhin
 
C++ осень 2013 лекция 3
C++ осень 2013 лекция 3C++ осень 2013 лекция 3
C++ осень 2013 лекция 3Technopark
 

What's hot (20)

Доклад АКТО-2012 Душкин, Смирнова
Доклад АКТО-2012 Душкин, СмирноваДоклад АКТО-2012 Душкин, Смирнова
Доклад АКТО-2012 Душкин, Смирнова
 
TMPA-2015: Multi-Module Application Tracing in z/OS Environment
TMPA-2015: Multi-Module Application Tracing in z/OS EnvironmentTMPA-2015: Multi-Module Application Tracing in z/OS Environment
TMPA-2015: Multi-Module Application Tracing in z/OS Environment
 
Insane Byte' 2017
Insane Byte' 2017Insane Byte' 2017
Insane Byte' 2017
 
Регрессионное тестирование
Регрессионное тестированиеРегрессионное тестирование
Регрессионное тестирование
 
C++ осень 2013 лекция 7
C++ осень 2013 лекция 7C++ осень 2013 лекция 7
C++ осень 2013 лекция 7
 
Случайное тестирование
Случайное тестированиеСлучайное тестирование
Случайное тестирование
 
Тестирование программного обеспечения: что, зачем и почему?
Тестирование программного обеспечения: что, зачем и почему?Тестирование программного обеспечения: что, зачем и почему?
Тестирование программного обеспечения: что, зачем и почему?
 
Тестирование лекция 2 весна 2014
Тестирование лекция 2 весна 2014Тестирование лекция 2 весна 2014
Тестирование лекция 2 весна 2014
 
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
 
TMPA-2015: Formal Methods in Robotics
TMPA-2015: Formal Methods in RoboticsTMPA-2015: Formal Methods in Robotics
TMPA-2015: Formal Methods in Robotics
 
C++ осень 2013 лекция 5
C++ осень 2013 лекция 5C++ осень 2013 лекция 5
C++ осень 2013 лекция 5
 
Тестирование весна 2013 лекция 2
Тестирование весна 2013 лекция 2Тестирование весна 2013 лекция 2
Тестирование весна 2013 лекция 2
 
Уменьшение влияния человеческого фактора при разработке бизнес приложений
Уменьшение влияния человеческого фактора при разработке бизнес приложенийУменьшение влияния человеческого фактора при разработке бизнес приложений
Уменьшение влияния человеческого фактора при разработке бизнес приложений
 
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
 
C++ осень 2012 лекция 1
C++ осень 2012 лекция 1C++ осень 2012 лекция 1
C++ осень 2012 лекция 1
 
C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.
 
Проблема тестовых входных данных
Проблема тестовых входных данныхПроблема тестовых входных данных
Проблема тестовых входных данных
 
Полнота тестирования ПО
Полнота тестирования ПОПолнота тестирования ПО
Полнота тестирования ПО
 
Тестовый оракул: что, где, когда
Тестовый оракул: что, где, когдаТестовый оракул: что, где, когда
Тестовый оракул: что, где, когда
 
C++ осень 2013 лекция 3
C++ осень 2013 лекция 3C++ осень 2013 лекция 3
C++ осень 2013 лекция 3
 

Viewers also liked

La Vida
La VidaLa Vida
Юрий Владимирович Матиясевич. Десятая проблема Гильберта. Решение и применени...
Юрий Владимирович Матиясевич. Десятая проблема Гильберта. Решение и применени...Юрий Владимирович Матиясевич. Десятая проблема Гильберта. Решение и применени...
Юрий Владимирович Матиясевич. Десятая проблема Гильберта. Решение и применени...Computer Science Club
 
User Experience 2008: Платежные терминалы глазами пользователей
User Experience 2008: Платежные терминалы глазами пользователейUser Experience 2008: Платежные терминалы глазами пользователей
User Experience 2008: Платежные терминалы глазами пользователейMaria Chaykina
 
Bi quyet tu duy trieu phu
Bi quyet tu duy trieu phuBi quyet tu duy trieu phu
Bi quyet tu duy trieu phuTruong Tho
 
Zavádějte službu jako projekt!
Zavádějte službu jako projekt!Zavádějte službu jako projekt!
Zavádějte službu jako projekt!
KISK FF MU
 
B A S E D E D A T O S E S T A M P A D O
B A S E  D E  D A T O S  E S T A M P A D OB A S E  D E  D A T O S  E S T A M P A D O
B A S E D E D A T O S E S T A M P A D OMariliCabanillas
 
CompensationStructure
CompensationStructureCompensationStructure
CompensationStructureMichael Walsh
 
Juomasekoituksia mobiilisti
Juomasekoituksia mobiilistiJuomasekoituksia mobiilisti
Juomasekoituksia mobiilisti
Pauliina Venho
 
XM603 Group4 - 16012010 Q2
XM603 Group4 - 16012010 Q2XM603 Group4 - 16012010 Q2
XM603 Group4 - 16012010 Q2
Dinsor Rimnatee
 
Descripción del Curso
Descripción del CursoDescripción del Curso
Descripción del Curso
Natalia Silocchi
 
Prezentace projektu Masarykův onkologický ústav
Prezentace projektu Masarykův onkologický ústavPrezentace projektu Masarykův onkologický ústav
Prezentace projektu Masarykův onkologický ústav
KISK FF MU
 
Aprendre junts
Aprendre juntsAprendre junts
Aprendre juntsemmsantboi
 
Dia6
Dia6Dia6

Viewers also liked (20)

La Vida
La VidaLa Vida
La Vida
 
Юрий Владимирович Матиясевич. Десятая проблема Гильберта. Решение и применени...
Юрий Владимирович Матиясевич. Десятая проблема Гильберта. Решение и применени...Юрий Владимирович Матиясевич. Десятая проблема Гильберта. Решение и применени...
Юрий Владимирович Матиясевич. Десятая проблема Гильберта. Решение и применени...
 
Marketing
MarketingMarketing
Marketing
 
User Experience 2008: Платежные терминалы глазами пользователей
User Experience 2008: Платежные терминалы глазами пользователейUser Experience 2008: Платежные терминалы глазами пользователей
User Experience 2008: Платежные терминалы глазами пользователей
 
Bi quyet tu duy trieu phu
Bi quyet tu duy trieu phuBi quyet tu duy trieu phu
Bi quyet tu duy trieu phu
 
Zavádějte službu jako projekt!
Zavádějte službu jako projekt!Zavádějte službu jako projekt!
Zavádějte službu jako projekt!
 
B A S E D E D A T O S E S T A M P A D O
B A S E  D E  D A T O S  E S T A M P A D OB A S E  D E  D A T O S  E S T A M P A D O
B A S E D E D A T O S E S T A M P A D O
 
CompensationStructure
CompensationStructureCompensationStructure
CompensationStructure
 
Juomasekoituksia mobiilisti
Juomasekoituksia mobiilistiJuomasekoituksia mobiilisti
Juomasekoituksia mobiilisti
 
Doc1josh
Doc1joshDoc1josh
Doc1josh
 
Resume
ResumeResume
Resume
 
Basic SWAT
Basic SWATBasic SWAT
Basic SWAT
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 
XM603 Group4 - 16012010 Q2
XM603 Group4 - 16012010 Q2XM603 Group4 - 16012010 Q2
XM603 Group4 - 16012010 Q2
 
Descripción del Curso
Descripción del CursoDescripción del Curso
Descripción del Curso
 
Prezentace projektu Masarykův onkologický ústav
Prezentace projektu Masarykův onkologický ústavPrezentace projektu Masarykův onkologický ústav
Prezentace projektu Masarykův onkologický ústav
 
Aprendre junts
Aprendre juntsAprendre junts
Aprendre junts
 
Dia6
Dia6Dia6
Dia6
 
DPP07DF060A140402
DPP07DF060A140402DPP07DF060A140402
DPP07DF060A140402
 
Nwp 23
Nwp 23Nwp 23
Nwp 23
 

Similar to 20120309 formal semantics shilov_lecture04

20120309 formal semantics shilov_lecture05
20120309 formal semantics shilov_lecture0520120309 formal semantics shilov_lecture05
20120309 formal semantics shilov_lecture05Computer Science Club
 
20120218 model cheсking_karpov_lecture01
20120218 model cheсking_karpov_lecture0120120218 model cheсking_karpov_lecture01
20120218 model cheсking_karpov_lecture01Computer Science Club
 
Путь к чистому и компактному коду исполняемых спецификаций
Путь к чистому и компактному коду исполняемых спецификацийПуть к чистому и компактному коду исполняемых спецификаций
Путь к чистому и компактному коду исполняемых спецификаций
Vagif Abilov
 
Использование ЦОР на уроке
Использование ЦОР на урокеИспользование ЦОР на уроке
Использование ЦОР на урокеbranka5
 
СОВМЕСТНОЕ ПРИМЕНЕНИЕ КОНТРАКТОВ И ВЕРИФИКАЦИИ ДЛЯ ПОВЫШЕНИЯ КАЧЕСТВА АВТОМАТ...
СОВМЕСТНОЕ ПРИМЕНЕНИЕ КОНТРАКТОВ И ВЕРИФИКАЦИИ ДЛЯ ПОВЫШЕНИЯ КАЧЕСТВА АВТОМАТ...СОВМЕСТНОЕ ПРИМЕНЕНИЕ КОНТРАКТОВ И ВЕРИФИКАЦИИ ДЛЯ ПОВЫШЕНИЯ КАЧЕСТВА АВТОМАТ...
СОВМЕСТНОЕ ПРИМЕНЕНИЕ КОНТРАКТОВ И ВЕРИФИКАЦИИ ДЛЯ ПОВЫШЕНИЯ КАЧЕСТВА АВТОМАТ...
ITMO University
 
пр 15.docx
пр 15.docxпр 15.docx
пр 15.docx
ssuser6d63bc1
 
прак 15.docx
прак 15.docxпрак 15.docx
прак 15.docx
ssuser6d63bc1
 
Technology readiness level presentation
Technology readiness level  presentationTechnology readiness level  presentation
Technology readiness level presentation
RenatLotfullin1
 
Технический заказчик в проектах создания ИС
Технический заказчик в проектах создания ИСТехнический заказчик в проектах создания ИС
Технический заказчик в проектах создания ИС
SQALab
 
Sef Tech Customer Bezugliy Presentation
Sef Tech Customer Bezugliy PresentationSef Tech Customer Bezugliy Presentation
Sef Tech Customer Bezugliy Presentationsef2009
 
МиСПИСиТ (введение)
МиСПИСиТ (введение)МиСПИСиТ (введение)
Основы программирования на C++
Основы программирования на C++Основы программирования на C++
Основы программирования на C++
Olga Maksimenkova
 
До проекта за 70 вопросов
До проекта за 70 вопросовДо проекта за 70 вопросов
До проекта за 70 вопросов
Aleksandr Ovchinnikov
 
Управление проектами
Управление проектамиУправление проектами
Управление проектамиMikhail Kalinin
 
Введение в алгоритмы и структуры данных
Введение в алгоритмы и структуры данныхВведение в алгоритмы и структуры данных
Введение в алгоритмы и структуры данных
Нижегородский институт управления
 
331 информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с
331  информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с331  информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с
331 информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с
dfdkfjs
 
Отладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программОтладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программ
Tatyanazaxarova
 
Управление компанией с использованием метода критического цепи (МКЦ)
Управление компанией с использованием метода критического цепи (МКЦ)Управление компанией с использованием метода критического цепи (МКЦ)
Управление компанией с использованием метода критического цепи (МКЦ)
Евгений Пикулев
 
Lection 3 4_pm
Lection 3 4_pmLection 3 4_pm
Lection 3 4_pm
Yana Brodetski
 
2021 10 14.2 смк-news
2021 10 14.2 смк-news2021 10 14.2 смк-news
2021 10 14.2 смк-news
ssuser84f1dd
 

Similar to 20120309 formal semantics shilov_lecture04 (20)

20120309 formal semantics shilov_lecture05
20120309 formal semantics shilov_lecture0520120309 formal semantics shilov_lecture05
20120309 formal semantics shilov_lecture05
 
20120218 model cheсking_karpov_lecture01
20120218 model cheсking_karpov_lecture0120120218 model cheсking_karpov_lecture01
20120218 model cheсking_karpov_lecture01
 
Путь к чистому и компактному коду исполняемых спецификаций
Путь к чистому и компактному коду исполняемых спецификацийПуть к чистому и компактному коду исполняемых спецификаций
Путь к чистому и компактному коду исполняемых спецификаций
 
Использование ЦОР на уроке
Использование ЦОР на урокеИспользование ЦОР на уроке
Использование ЦОР на уроке
 
СОВМЕСТНОЕ ПРИМЕНЕНИЕ КОНТРАКТОВ И ВЕРИФИКАЦИИ ДЛЯ ПОВЫШЕНИЯ КАЧЕСТВА АВТОМАТ...
СОВМЕСТНОЕ ПРИМЕНЕНИЕ КОНТРАКТОВ И ВЕРИФИКАЦИИ ДЛЯ ПОВЫШЕНИЯ КАЧЕСТВА АВТОМАТ...СОВМЕСТНОЕ ПРИМЕНЕНИЕ КОНТРАКТОВ И ВЕРИФИКАЦИИ ДЛЯ ПОВЫШЕНИЯ КАЧЕСТВА АВТОМАТ...
СОВМЕСТНОЕ ПРИМЕНЕНИЕ КОНТРАКТОВ И ВЕРИФИКАЦИИ ДЛЯ ПОВЫШЕНИЯ КАЧЕСТВА АВТОМАТ...
 
пр 15.docx
пр 15.docxпр 15.docx
пр 15.docx
 
прак 15.docx
прак 15.docxпрак 15.docx
прак 15.docx
 
Technology readiness level presentation
Technology readiness level  presentationTechnology readiness level  presentation
Technology readiness level presentation
 
Технический заказчик в проектах создания ИС
Технический заказчик в проектах создания ИСТехнический заказчик в проектах создания ИС
Технический заказчик в проектах создания ИС
 
Sef Tech Customer Bezugliy Presentation
Sef Tech Customer Bezugliy PresentationSef Tech Customer Bezugliy Presentation
Sef Tech Customer Bezugliy Presentation
 
МиСПИСиТ (введение)
МиСПИСиТ (введение)МиСПИСиТ (введение)
МиСПИСиТ (введение)
 
Основы программирования на C++
Основы программирования на C++Основы программирования на C++
Основы программирования на C++
 
До проекта за 70 вопросов
До проекта за 70 вопросовДо проекта за 70 вопросов
До проекта за 70 вопросов
 
Управление проектами
Управление проектамиУправление проектами
Управление проектами
 
Введение в алгоритмы и структуры данных
Введение в алгоритмы и структуры данныхВведение в алгоритмы и структуры данных
Введение в алгоритмы и структуры данных
 
331 информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с
331  информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с331  информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с
331 информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с
 
Отладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программОтладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программ
 
Управление компанией с использованием метода критического цепи (МКЦ)
Управление компанией с использованием метода критического цепи (МКЦ)Управление компанией с использованием метода критического цепи (МКЦ)
Управление компанией с использованием метода критического цепи (МКЦ)
 
Lection 3 4_pm
Lection 3 4_pmLection 3 4_pm
Lection 3 4_pm
 
2021 10 14.2 смк-news
2021 10 14.2 смк-news2021 10 14.2 смк-news
2021 10 14.2 смк-news
 

More from Computer Science Club

20141223 kuznetsov distributed
20141223 kuznetsov distributed20141223 kuznetsov distributed
20141223 kuznetsov distributed
Computer Science Club
 
Computer Vision
Computer VisionComputer Vision
Computer Vision
Computer Science Club
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugsComputer Science Club
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugsComputer Science Club
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugsComputer Science Club
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12Computer Science Club
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11Computer Science Club
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10Computer Science Club
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09Computer Science Club
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02Computer Science Club
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01Computer Science Club
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04Computer Science Club
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01Computer Science Club
 

More from Computer Science Club (20)

20141223 kuznetsov distributed
20141223 kuznetsov distributed20141223 kuznetsov distributed
20141223 kuznetsov distributed
 
Computer Vision
Computer VisionComputer Vision
Computer Vision
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04
 
20140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-0320140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-03
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01
 
20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 
20131006 h10 lecture2_matiyasevich
20131006 h10 lecture2_matiyasevich20131006 h10 lecture2_matiyasevich
20131006 h10 lecture2_matiyasevich
 

20120309 formal semantics shilov_lecture04

  • 1. Computer Science клуб - Екатеринбург Март 2012 Fun with Formal Program Semantics (О формальной семантике программ – просто) Шилов Николай Вячеславович 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 1
  • 2. Тема 4: Верификация программ с точки зрения семантики языков программирования (на примере диалекта ToyPL) 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 2
  • 3. Великие научные проблемы • В 1980 г. премии Тьюринга был удостоен Антони Хоар за «основополагающий вклад в определение и разработку языков программирования». • По-видимому, такое признание заслуг А. Хоара может служить весомым аргументом для того, чтобы прислушаться к тому, что Антони Хоар называет Великими проблемами программирования как науки. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 3
  • 4. Великие научные проблемы • По мнению А. Хоара, для того, чтобы какая-либо научная проблема могла называться Великой, она должна удовлетворять следующему ряду требований: – проблема должна носить фундаментальный характер, её решение будет иметь прежде всего научное значение; – решение может иметь и прикладное значение, но в масштабах всего человечества; 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 4
  • 5. Великие научные проблемы – решение проблемы может потребовать десятилетий скоординированных усилий учёных и коллективов мирового класса; – есть чёткие критерии успеха или провала в решении проблемы. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 5
  • 6. Великие научные проблемы • А. Хоар приводит примеры решённых Великих научных проблем: – полёт человека на Луну, – расшифровка генома человека, – доказательство Великой теоремы Ферма. • А в качестве примера «проваленной» Великой научной проблемы А. Хоар приводит проблему лечения рака: как оказалось, различных причин развития рака слишком много, а механизмы его развития слишком сложны для того, что бы надеяться на панацею. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 6
  • 7. Великие проблемы программирования 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 7
  • 8. Проблема верифицирующего транслятора • Решение проблемы Верифицирующего Транслятора может иметь огромное значение в эпоху информационных технологий, т.к. – проверка синтаксической правильности программы и её трансляция в исполняемый машинный код осуществляется полностью автоматически, – но этап отладки программ до сих пор плохо автоматизирован. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 8
  • 9. Великие верифицирующего транслятора • Воспользуемся следующим образным сравнением Владимира Анатольевича Захарова: – Средства отладки программы, которые входят в состав всякой развитой системы программирования, могут помочь разработчику в той же мере, в какой лопата оказывает помощь кладоискателю. Главные вопросы - где копать и стоит ли копать вообще? 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 9
  • 10. Великие верифицирующего транслятора – Здесь скорее пригодилось бы устройство наподобие металлоискателя. Но хороший металлоискатель - это тонкий инструмент, требующий знания его устройства и умелого обращения. Так что кроме лопаты неплохо бы использовать и автоматические системы поиска ошибок и проверки правильности функционирования программ… 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 10
  • 11. Неформальное введение в формальную верификацию • Формальная верификация – это доказательство специфицированных программ, т.е. программ, свойства которых специфицированы некоторым специальным образом. • Вычислительная программа – это программа, которая за конечное время преобразует начальные (входные) в заключительные (выходные) значения. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 11
  • 12. Неформальное введение в формальную верификацию • Для вычислительных программ используют два вида логических спецификаций, которые называются: – условиями частичной корректности, – условиями тотальной корректности. • Эти условия имеют вид {ϕ}π{ψ} и [ϕ]π[ψ] соответственно, где π – программа, предусловие ϕ – это условие на входные данные, которое требуется перед исполнением программы π, а постусловие ψ – это условие на выходные данные, гарантируемое после исполнения программы π. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 12
  • 13. Неформальное введение в формальную верификацию • Говорят, что условие частичной корректности {ϕ}π{ψ} истинно (верно), или что программа π частично корректна по отношению к предусловию ϕ и постусловию ψ (обозначение |={ϕ}π{ψ}), если на любых входных данных, которые удовлетворяют свойству ϕ, программа π или не останавливается (зацикливается, зависает и т.п.), или останавливается с выходными данными, которые удовлетворяют свойству ψ. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 13
  • 14. Неформальное введение в формальную верификацию • Говорят, что условие частичной корректности [ϕ]π[ψ] истинно (верно), или что программа π частично корректна по отношению к предусловию ϕ и постусловию ψ (обозначение |=[ϕ]π[ψ]), если на любых входных данных, которые удовлетворяют свойству ϕ, любое вычисление программы π останавливается с выходными данными, которые удовлетворяют свойству ψ. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 14
  • 15. Неформальное введение в формальную верификацию • Таким образом, для детерминированных программ разница между частичной и тотальной корректностью состоит в завершаемости программы: частичная корректность допускает неостановку программы, а тотальная – запрещает. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 15
  • 16. Неформальное введение в формальную верификацию • Для доказательства специфицированных вычислительных программ существуют два метода, разработанных Р. Флойдом в 1960-х гг. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 16
  • 17. Метод Р. Флойда доказательства частичной корректности // Предусловие метода. { {ϕ}π{ψ} – условие частичной корректности детерминированной программы } • Представить программу π графически в виде блок-схемы и выбрать множество контрольных точек (на дугах), включающее начало и конец программы, такое, чтобы любой цикл по графу блок-схемы содержал контрольную точку. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 17
  • 18. Метод Р. Флойда доказательства частичной корректности // Аннотация «инвариантами». • Сопоставить началу программы предусловие ϕ, концу программы – постусловие ψ, а каждой из оставшихся контрольных точек – некоторое (своё) условие «инвариант» этой точки. • Построить множество «участков» L, состоящее из всех невырожденных ациклических маршрутов по графу блок-схемы программы между всеми парами контрольных точек. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 18
  • 19. Метод Р. Флойда доказательства частичной корректности // Доказательство инвариантов. • Для каждого участка из L доказать: если условие, сопоставленное началу участка, верно перед началом исполнения участка, то условие, сопоставленное концу участка, верно после исполнения этого участка. // Постусловие метода. • {|={ϕ}π{ψ}, т. е. программа π частично корректна по отношению к предусловию ϕ и постусловию ψ} 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 19
  • 20. Метод Р. Флойда доказательства частичной корректности • Заметим, что метод Р. Флойда для условий частичной корректности не является алгоритмом, так как он описан (по-просту говоря) неформально, включает необходимось придумать и доказать инварианты. • В силу своей неформальности его корректность неможет быть доказана (как и корректность метода математической индукции), а только «показана». 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 20
  • 21. Метод Р. Флойда доказательства частичной корректности • Упражнение #1: Покажите, что если условие частичной корректности верно, то всегда можно выбрать контрольные точки и приписать им инварианты таким образом, который гарантирует успешное применение метода Р. Флойда. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 21
  • 22. Понятие о методе потенциалов • Метод Р. Флойда для доказательства условий тотальной корректности называется методом потенциалов, он применим только к детерминированным программам. • Частный случай применения этого метода для доказательства завершаемости детерминированных программ кратко можно описать следующим образом: 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 22
  • 23. Понятие о методе потенциалов – выбирается конечное множество числовых значений, которые называются потенциалами; – каждому возможному набору значений используемых переменных сопоставляется некоторый потенциал; – тогда, если каждое исполнение тела любого цикла в алгоритме уменьшает значение потенциала, то алгоритм завершает работу. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 23
  • 24. Понятие о методе потенциалов • Метод Р. Флойда тоже не является алгоритмом, так как необходимо придумать фундированное множество, отображение в это множество и доказать, что потенциалы убывают в результате выполнения циклов. • Корректность метода потенциалов также невозможно формально доказать, а только неформально обосновать. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 24
  • 25. Пример Э. Дейкстры применения метода потенциалов • Задача начальника порта – На рейде порта с N причалами находится ровно N кораблей. Начальник порта получает сообщение о штормовом предупреждении и должен назначить каждому из кораблей его определенный (индивидуальный) причал. – Положения всех кораблей в момент получения штормового предупреждения известны. Положения причалов фиксированы и тоже известны. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 25
  • 26. Пример Э. Дейкстры применения метода потенциалов – Непосредственно в этот момент никакое препятствие (особенности береговой линии, расположение других причалов или положение других кораблей на рейде) не мешает любому из кораблей двигаться прямо к любому из причалов. – Во избежание столкновений маршруты кораблей не должны пересекаться. • Помогите начальнику порта распределить корабли по причалам. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 26
  • 27. Пример Э. Дейкстры применения метода потенциалов • Геометрическая модель проблемы – это N чёрных и N белых точек на плоскости, соответствующих положениям кораблей на рейде и расположению причалов, а возможные (гипотетические) маршруты – отрезки прямых между белыми и чёрными точками. • По условию задачи никакие три из этих точек не являются коллинеарными (т. е. не лежат на одной прямой). 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 27
  • 28. Пример Э. Дейкстры применения метода потенциалов • Необходимо построить (если это вообще возможно) N попарно непересекающихся отрезков, у каждого из которых один конец – это некоторая белая точка, а другой – некоторая чёрная точка. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 28
  • 29. Пример Э. Дейкстры применения метода потенциалов VAR X: СОЕД; X:= ПЕРВ ; WHILE ¬ХОР(X) DO X := ЩЁЛК(X) OD. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 29
  • 30. Пример Э. Дейкстры применения метода потенциалов • Для любого значения X типа СОЕД примем в качестве его потенциала P(X) сумму длин отрезков, которые входят в X: P(X)= Σ[B,W]∈X |B,W|. • В силу неравенства треугольника |B’W”| + |B,W’| < |B’W’| + |B,W’|. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 30
  • 31. Пример Э. Дейкстры применения метода потенциалов • Поэтому P(X) = (Σ[B,W]∈X|B,W|) = = (|B',W'| + |B",W"|) + (Σ[B,W]∈X{[B',W'],[B",W"]} |B,W|) > >(|B',W"| + |B",W'|) + (Σ[B,W]∈X{[B',W'],[B",W"]} |B,W|) = = (Σ[B,W]∈ЩЁЛК(X) |B,W|) = P(ЩЁЛК(X)). • Следовательно, согласно методу потенциалов, программа (вернее, алгоритм) завершает свою работу. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 31
  • 32. Метод потенциалов доказательства завершаемости • Упражнение #2: Покажите, что если детерминированный алгоритм (программа) завершается, то всегда можно выбрать потенциальную функцию, которая гарантирует успешное применение метода потенциалов. 03/10/12 Шилов Николай Вячеславович Всего слайдов 32 32