|
|
|
Обоснование корректности алгоритма
|
|||
|---|---|---|---|
|
#18+
Мне надо написать о корректности написанного мной алгоритма. Что должно включать описание корректности (или обоснование корректности), т.е. как обосновать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2009, 20:45:42 |
|
||
|
Обоснование корректности алгоритма
|
|||
|---|---|---|---|
|
#18+
_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)} Доказательство полной корректности обычно состоит из двух независимых этапов - доказательства частичной корректности и доказательства завершаемости программы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2009, 21:43:11 |
|
||
|
Обоснование корректности алгоритма
|
|||
|---|---|---|---|
|
#18+
Это все замечательно и как это обычно оформляется, как доказывается корректность? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2009, 08:23:43 |
|
||
|
Обоснование корректности алгоритма
|
|||
|---|---|---|---|
|
#18+
_konstantine_Мне надо написать о корректности написанного мной алгоритма. Что должно включать описание корректности (или обоснование корректности), т.е. как обосновать? Можно обосновать корректность ВЫБОРА того или иного алгоритма. К примеру, если тебе надо чего-то сортировать, то выбор будет определяться требованиями: скорости, памяти, объёмом диска и особенностями сортируемых данных (уникальные / неуникальные, фактор кардинальности). Если ты сам СОЗДАЛ алгоритм (в чём я сильно сомневаюсь т.к фундаметнальные алгоритмы созданы математиками еще пол-века назад, а всё остальное является композитом их частичных реализаций) то тебе надо его просто описать в виде блок-схемы. И привести парочку модульных тестов, которые доказывают что на выходе - корректные данные. Если есть КОНКУРИРУЮЩИЙ алгоритм - то привести его со сравнительной характеристикой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2009, 10:45:15 |
|
||
|
Обоснование корректности алгоритма
|
|||
|---|---|---|---|
|
#18+
mayton, 1) Написать и согласовать требования к нему в виде ТЗ. 2) Описать граничные условия работы. Множество допустимых входных параметров, непротиворечивость параметров, достаточность параметров 3) Описать критерий оценки качества алгоритма. В зависимости от конкретного алгоритма: скорость в кадрах/мегабатах/записях в секунду, или что то еще. Это должно быть число, описывающее работу алгоритма по принципу больше показатель - лучше алгоритм. 4) Создать набор тестовых данных, позволяющих проводить оценки. Набор должен включать и противоречивые данные: отсутствие части информации, неверный формат и т.д. 5) Провести оценки на выбранных данных по выбранному критерию на реальном( или аналогичном ) оборудовании. Показать по результатам что критерии достигнуты и все работает устойчиво. 6) Дать заключение, что алгоритм корректен. Все оформлять письменно и активно обсуждать с заинтересованными лицами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2009, 13:33:15 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=36133946&tid=1344331]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
18ms |
get forum data: |
4ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 419ms |

| 0 / 0 |
