Основы ооп на языке C#. Часть 2. базовый синтаксис.YakubovichDA
Рассматриваются базовые понятия и конструкции языка C#:
- структура консольного приложения;
- переменные и типы данных;
- арифметические и логические операторы;
- условные вычисления;
- циклы;
- массивы;
- ввод и вывод данных.
основы ооп на языке C#. часть 1. введение в программированиеYakubovichDA
Основы объектно-ориентированного программирования на языке C#. Часть 1. Введение в программирование.
Рассматривается базовые понятие алгоритмов, блок-схем, объектно-ориентированного программирования на базе платформы .NET Framework.
Лабораторные работы (практикум) по программированию на языке C Sharp (СИ решетка). Материал разработан специально для ресурса www.studentam-in.ru на котором Вы можете найти бесплатные учебные материалы и получить качественные образовательные услуги: китайский и английский перевод; репетиторство; заказ курсовых, контрольных; создание презентации, баннера, контента, сайта и многое другое.
Презентация для курса лекций по программированию на языке C Sharp (СИ решетка). Материал разработан специально для ресурса www.studentam-in.ru на котором Вы можете найти бесплатные учебные материалы и получить качественные образовательные услуги: китайский и английский перевод; репетиторство; заказ курсовых, контрольных; создание презентации, баннера, контента, сайта и многое другое.
Статический анализ кода: современный взглядAndrey Karpov
Статический анализ - это методология выявления ошибок в исходном тексте программы, основанная на просмотре кода программистом, помеченного статическим анализатором там, где потенциально может находиться ошибка. Многие относятся к статическому анализу как к устаревшему и не актуальному методу. Действительно, существует ряд моментов, из-за которых кажется, что статический анализ приносил пользу раньше, когда средства разработки были намного менее функциональны. Однако если отбросить устаревшее, то оказывается, что методология статического анализа по-прежнему позволят существенно сократить цену устранения многих дефектов, за счет их обнаружения еще на стадии конструирования (кодирования). Более того, развитие языков, появление таких технологий программирования как OpenMP, увеличение среднего размера проекта делают применение статических анализаторов все более привлекательным для контроля качества проекта.
Основы ооп на языке C#. Часть 2. базовый синтаксис.YakubovichDA
Рассматриваются базовые понятия и конструкции языка C#:
- структура консольного приложения;
- переменные и типы данных;
- арифметические и логические операторы;
- условные вычисления;
- циклы;
- массивы;
- ввод и вывод данных.
основы ооп на языке C#. часть 1. введение в программированиеYakubovichDA
Основы объектно-ориентированного программирования на языке C#. Часть 1. Введение в программирование.
Рассматривается базовые понятие алгоритмов, блок-схем, объектно-ориентированного программирования на базе платформы .NET Framework.
Лабораторные работы (практикум) по программированию на языке C Sharp (СИ решетка). Материал разработан специально для ресурса www.studentam-in.ru на котором Вы можете найти бесплатные учебные материалы и получить качественные образовательные услуги: китайский и английский перевод; репетиторство; заказ курсовых, контрольных; создание презентации, баннера, контента, сайта и многое другое.
Презентация для курса лекций по программированию на языке C Sharp (СИ решетка). Материал разработан специально для ресурса www.studentam-in.ru на котором Вы можете найти бесплатные учебные материалы и получить качественные образовательные услуги: китайский и английский перевод; репетиторство; заказ курсовых, контрольных; создание презентации, баннера, контента, сайта и многое другое.
Статический анализ кода: современный взглядAndrey Karpov
Статический анализ - это методология выявления ошибок в исходном тексте программы, основанная на просмотре кода программистом, помеченного статическим анализатором там, где потенциально может находиться ошибка. Многие относятся к статическому анализу как к устаревшему и не актуальному методу. Действительно, существует ряд моментов, из-за которых кажется, что статический анализ приносил пользу раньше, когда средства разработки были намного менее функциональны. Однако если отбросить устаревшее, то оказывается, что методология статического анализа по-прежнему позволят существенно сократить цену устранения многих дефектов, за счет их обнаружения еще на стадии конструирования (кодирования). Более того, развитие языков, появление таких технологий программирования как OpenMP, увеличение среднего размера проекта делают применение статических анализаторов все более привлекательным для контроля качества проекта.
Применение инструментов символьных вычислений для проверки решений задач из курсов для конструкторов и технологов в интеллектуальной обучающей веб-системе «Волга»
TMPA-2015: Multi-Module Application Tracing in z/OS EnvironmentIosif Itkin
Multi-Module Application Tracing in z/OS Environment
Rostislav Efremov, Saint Petersburg State University, Saint Petersburg
12 - 14 November 2015
Tools and Methods of Program Analysis in St. Petersburg
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Platonov Sergey
Кто-то верно подметил, что разработчики статических анализатора часто сталкиваются с "проблемой айсберга". Им сложно объяснить разработчикам, почему сложно написать и развивать статические анализаторы кода. Дело в том, что сторонние наблюдатели видят только вершину всего процесса, так как им доступен для изучения только простой интерфейс, который предоставляют анализаторы для взаимодействия с миром. Это ведь не графический редактор с сотнями кнопок и рычажков. В результате и возникает ощущение, что раз прост интерфейс взаимодействия, то и прост продукт. На самом деле статические анализаторы кода — это сложные программы, в которых живут и взаимодействуют разнообразнейшие методы поиска дефектов. В них реализуется множество экспертные системы, выдающие заключения о коде на основе как точных, так и эмпирических алгоритмах. В парном докладе, основатели анализатора PVS-Studio расскажут о том, как незаметно потратить 10 лет, чтобы написать хороший анализатор. Дьявол кроется в деталях!
Formal Methods in Robotics
Dmitry Mordvinov, Yury Litvinov, Saint Petersburg State University, Saint Petersburg
12 - 14 November 2015
Tools and Methods of Program Analysis in St. Petersburg
Уменьшение влияния человеческого фактора при разработке бизнес приложенийngrebnev
В этом докладе мы постараемся рассказать о принципах разработки инструментов для написания бизнес-логики, позволяющих сократить количество ошибок. Речь пойдет о нескольких практиках, принятых в отделе технологического развития нашей компании. Принципы будут проиллюстрированы на примере инструментария компании для платформы Microsoft .NET.
Максимум статических проверок. Под статическими проверками мы понимаем проверки времени компиляции. Этот принцип является важным, но, к сожалению, зачастую недооценивается разработчиками инструментария разработки. Проверки времени компиляции могут отлавливать большой спектр ошибок. Есть и другая особенность – это удобство. Ошибки времени исполнения сложнее воспринимаются, труднее найти причину ошибки.
Разнообразие и декларативность проверок. Проверки общего назначения удобно задавать в декларативном виде. При этом сами проверки должен осуществлять фреймворк. За счет уменьшения дублирования и декларативности снижается вероятность ошибок. Проверки должны быть, как техническими, так и уровня доменной модели. Мы будем говорить о проверках уровня доменной модели.
Возможность анализа декларативных проверок. Любые ограничения порождают некоторую модель. Эту модель (проверки) можно формально верифицировать. Вообще, проблема доказательства большинства свойств программы невозможна. Этот вопрос выходит далеко за рамки нашего доклада. Но существует возможность верификации более слабых (менее выразительных моделей).
Во второй части мы обсудим функционал, который мы называем "состояния". Эти "состояния" образуют что-то вроде автомата, или структуру Крипке. Так вот, существуют алгоритмы проверки выполнимости темпоральных логик на таких структурах.
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...Iosif Itkin
The Application of Static Analysis to Optimize the Dynamic Detection of Race Conditions
Yakov Roskoshnyy, Dmitry Tsitelov, Vitaly Trifanov, Roman Elizarov,Saint Petersburg State University of Information Technologies, Mechanics and Optics, Saint Petersburg
12 - 14 November 2015
Tools and Methods of Program Analysis in St. Petersburg
Применение инструментов символьных вычислений для проверки решений задач из курсов для конструкторов и технологов в интеллектуальной обучающей веб-системе «Волга»
TMPA-2015: Multi-Module Application Tracing in z/OS EnvironmentIosif Itkin
Multi-Module Application Tracing in z/OS Environment
Rostislav Efremov, Saint Petersburg State University, Saint Petersburg
12 - 14 November 2015
Tools and Methods of Program Analysis in St. Petersburg
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Platonov Sergey
Кто-то верно подметил, что разработчики статических анализатора часто сталкиваются с "проблемой айсберга". Им сложно объяснить разработчикам, почему сложно написать и развивать статические анализаторы кода. Дело в том, что сторонние наблюдатели видят только вершину всего процесса, так как им доступен для изучения только простой интерфейс, который предоставляют анализаторы для взаимодействия с миром. Это ведь не графический редактор с сотнями кнопок и рычажков. В результате и возникает ощущение, что раз прост интерфейс взаимодействия, то и прост продукт. На самом деле статические анализаторы кода — это сложные программы, в которых живут и взаимодействуют разнообразнейшие методы поиска дефектов. В них реализуется множество экспертные системы, выдающие заключения о коде на основе как точных, так и эмпирических алгоритмах. В парном докладе, основатели анализатора PVS-Studio расскажут о том, как незаметно потратить 10 лет, чтобы написать хороший анализатор. Дьявол кроется в деталях!
Formal Methods in Robotics
Dmitry Mordvinov, Yury Litvinov, Saint Petersburg State University, Saint Petersburg
12 - 14 November 2015
Tools and Methods of Program Analysis in St. Petersburg
Уменьшение влияния человеческого фактора при разработке бизнес приложенийngrebnev
В этом докладе мы постараемся рассказать о принципах разработки инструментов для написания бизнес-логики, позволяющих сократить количество ошибок. Речь пойдет о нескольких практиках, принятых в отделе технологического развития нашей компании. Принципы будут проиллюстрированы на примере инструментария компании для платформы Microsoft .NET.
Максимум статических проверок. Под статическими проверками мы понимаем проверки времени компиляции. Этот принцип является важным, но, к сожалению, зачастую недооценивается разработчиками инструментария разработки. Проверки времени компиляции могут отлавливать большой спектр ошибок. Есть и другая особенность – это удобство. Ошибки времени исполнения сложнее воспринимаются, труднее найти причину ошибки.
Разнообразие и декларативность проверок. Проверки общего назначения удобно задавать в декларативном виде. При этом сами проверки должен осуществлять фреймворк. За счет уменьшения дублирования и декларативности снижается вероятность ошибок. Проверки должны быть, как техническими, так и уровня доменной модели. Мы будем говорить о проверках уровня доменной модели.
Возможность анализа декларативных проверок. Любые ограничения порождают некоторую модель. Эту модель (проверки) можно формально верифицировать. Вообще, проблема доказательства большинства свойств программы невозможна. Этот вопрос выходит далеко за рамки нашего доклада. Но существует возможность верификации более слабых (менее выразительных моделей).
Во второй части мы обсудим функционал, который мы называем "состояния". Эти "состояния" образуют что-то вроде автомата, или структуру Крипке. Так вот, существуют алгоритмы проверки выполнимости темпоральных логик на таких структурах.
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...Iosif Itkin
The Application of Static Analysis to Optimize the Dynamic Detection of Race Conditions
Yakov Roskoshnyy, Dmitry Tsitelov, Vitaly Trifanov, Roman Elizarov,Saint Petersburg State University of Information Technologies, Mechanics and Optics, Saint Petersburg
12 - 14 November 2015
Tools and Methods of Program Analysis in St. Petersburg
СОВМЕСТНОЕ ПРИМЕНЕНИЕ КОНТРАКТОВ И ВЕРИФИКАЦИИ ДЛЯ ПОВЫШЕНИЯ КАЧЕСТВА АВТОМАТ...ITMO University
При создании систем со сложным поведением важную роль играет контроль качества разрабатываемых программ. Цена ошибки в таких системах может быть слишком велика, поэтому важно не просто проверить соответствие создаваемой программы всем предъявленным к ней требованиям, но и сделать этот процесс эффективным, максимально автоматизировав его. На практике этого можно добиться, формализовав все требования к программе и храня полученную исполнимую спецификацию непосредственно вместе с кодом программы. Рассмотрены существующие методы контроля качества современных программных систем и автоматных программ, а также описан процесс создания среды, позволяющей поддержать сразу три подхода к проверке качества программ с явным выделением состояний: проверку на модели, модульное тестирование и контракты. Предложенный подход позволяет сохранить корректность записи сформулированных требований при изменении самой программы, а также интерактивно контролировать ее качество.
Слайды использовались на краткосрочных курсах повышения квалификации учителей информатики, 2 лекции по 1 час 20 минут.
Изложен опорный (предельно ужатый) материал по основами C++.
Отладка и оптимизация многопоточных OpenMP-программTatyanazaxarova
Задача знакомства программистов с областью разработки параллельных приложений становится все актуальней. Данная статья является кратким введением в создание многопоточных приложений, основанных на технологии OpenMP. Описаны подходы к отладке и оптимизации параллельных приложений.
Управление компанией с использованием метода критического цепи (МКЦ)Евгений Пикулев
Частная презентация, рассказывающая о недостатках метода критического пути, и о достоинствах метода критической цепи. Полезна для собственников и руководителей компаний.
Жизненный цикл разработки ПО (SDLC)
Этапы жизненного цикла разработки
Этап планирования
Этап разработки
Этап поддержки
Роли в жизненном цикле разработки ПО
Артефакты в жизненном цикле разработки ПО
Терминология
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
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