powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Обоснование корректности алгоритма
6 сообщений из 6, страница 1 из 1
Обоснование корректности алгоритма
    #36133182
Фотография _konstantine_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне надо написать о корректности написанного мной алгоритма.
Что должно включать описание корректности (или обоснование корректности), т.е. как обосновать?
...
Рейтинг: 0 / 0
Обоснование корректности алгоритма
    #36133208
me_dved
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_konstantine_Мне надо написать о корректности написанного мной алгоритма.
Что должно включать описание корректности (или обоснование корректности), т.е. как обосновать?
Слыхали про "частичную корректность" и "полную корректность"?
откуда-то (с)перто
Пусть P(x,z) - программа P с входными аргументами x и выходными z. Пусть Q(y) - некоторое логическое условие (предикат) над переменными программы y. Язык для записи предикатов Q(y) формализовать не будем. Отметим только, что он может быть шире языка, на котором записываются условия в программах, и включать, например, кванторы. Предусловием программы P(x,z) будем называть предикат Pre(x), заданный на входах программы. Постусловием программы P(x,z) будем называть предикат Post(x,z), связывающий входы и выходы программы. Для простоты будем полагать, что программа P не изменяет своих входов x в процессе своей работы. Теперь несколько определений:

Определение 1 (частичной корректности): Программа P(x,z) корректна (частично, или условно) по отношению к предусловию Pre(x) и постусловию Post(x,z), если из истинности предиката Pre(x) следует, что для программы P(x,z), запущенной на входе x, гарантируется выполнение предиката Post(x,z) при условии завершения программы.

Условие частичной корректности записывается в виде триады Хоара, связывающей программу с ее предусловием и постусловием:

[Pre(x)]P(x,z)[Post(x,z)]
Определение 2 (полной корректности): Программа P(x,z) корректна (полностью, или тотально) по отношению к предусловию Pre(x) и постусловию Post(x,z), если из истинности предиката Pre(x) следует, что для программы P(x,z), запущенной на входе x, гарантируется ее завершение и выполнение предиката Post(x,z).

Условие полной корректности записывается в виде триады Хоара, связывающей программу с ее предусловием и постусловием:

{Pre(x)}P(x,z){Post(x,z)}
Доказательство полной корректности обычно состоит из двух независимых этапов - доказательства частичной корректности и доказательства завершаемости программы
...
Рейтинг: 0 / 0
Обоснование корректности алгоритма
    #36133848
Фотография _konstantine_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это все замечательно и как это обычно оформляется, как доказывается корректность?
...
Рейтинг: 0 / 0
Обоснование корректности алгоритма
    #36133871
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_konstantine_Мне надо написать о корректности написанного мной алгоритма.
Что должно включать описание корректности (или обоснование корректности), т.е. как обосновать?
Можно обосновать корректность ВЫБОРА того или иного алгоритма. К примеру, если тебе надо чего-то сортировать, то выбор будет определяться требованиями: скорости, памяти, объёмом диска и особенностями сортируемых данных (уникальные / неуникальные, фактор кардинальности).

Если ты сам СОЗДАЛ алгоритм (в чём я сильно сомневаюсь т.к фундаметнальные алгоритмы созданы математиками еще пол-века назад, а всё остальное является композитом их частичных реализаций) то тебе надо его просто описать в виде блок-схемы. И привести парочку модульных тестов, которые доказывают что на выходе - корректные данные. Если есть КОНКУРИРУЮЩИЙ алгоритм - то привести его со сравнительной характеристикой.
...
Рейтинг: 0 / 0
Обоснование корректности алгоритма
    #36133938
Прогер СПБ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
1) Написать и согласовать требования к нему в виде ТЗ.

2) Описать граничные условия работы.
Множество допустимых входных параметров, непротиворечивость параметров, достаточность параметров

3) Описать критерий оценки качества алгоритма.
В зависимости от конкретного алгоритма: скорость в кадрах/мегабатах/записях в секунду, или что то еще. Это должно быть число, описывающее работу алгоритма по принципу больше показатель - лучше алгоритм.

4) Создать набор тестовых данных, позволяющих проводить оценки. Набор должен включать и противоречивые данные: отсутствие части информации, неверный формат и т.д.

5) Провести оценки на выбранных данных по выбранному критерию на реальном( или аналогичном ) оборудовании. Показать по результатам что критерии достигнуты и все работает устойчиво.

6) Дать заключение, что алгоритм корректен.

Все оформлять письменно и активно обсуждать с заинтересованными лицами.
...
Рейтинг: 0 / 0
Обоснование корректности алгоритма
    #36133946
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо конечно, но этот текст лучше адресовать Константину.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Обоснование корректности алгоритма
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]