- •СамотестирующиЕся и самокорректирующиЕся программы
- •Вводные замечания
- •Общие принципы создания двухмодульных вычислительных процедур и методология самотестирования
- •Устойчивость, линейная и единичная состоятельность
- •Метод создания самокорректирующейся процедуры вычисления теоретико-числовой функции дискретного экспоненцирования
- •Обозначения и определения для функции дискретного возведения в степень вида gxmodulo m.
- •Построение самотестирующейся/самокорректирующейся программной пары для функции дискретного экспоненцирования
- •Метод создания самотестирующейся расчетной программы с эффективным тестирующим модулем
- •Алгоритм st
- •Исследования процесса верификации расчетных программ
- •Области применения самотестирующихся и самокорректирующихся программ и их сочетаний
- •Общие замечания
- •Вычислительная математика
- •Целочисленная арифметика и арифметика многократной точности
- •Теоретико-групповые и теоретико-числовые вычисления
- •Вычисления над полиномами
- •Вычисления над матрицами
- •Линейные рекуррентные соотношения
- •Аппроксимирующие функции
- •Криптография, интерактивные доказательства Вводные замечания
- •Распределение ключей, цифровая подпись, схемы аутентификации
- •Интерактивные системы доказательств
- •Задача «Изоморфизм графа»
- •Протокол ig
- •Чекер для задачи «Изоморфизм графа»
- •Чекер cgip(g,h,k)
- •Другие направления
- •Применение самотестирующихся и самокорректирующихся программ Вводные замечания
- •Применение вычислительных методов к задачам гидролокации
- •Метод наименьших квадратов и задача самотестирования
Линейные рекуррентные соотношения
В работе [KS] исследовались вопросы построения самотестирующихся и самокорректирующихся программ для линейных рекуррентных соотношений, т.е. соотношений видаf(n)=. Такие последовательности являются основными для многих комбинаторных и теоретико-числовых последовательностей, таких как последовательность Фибоначчи и последовательность Лукаша.
Линейные рекуррентные соотношения часто рассматриваются в неявном виде в качестве однородных линейных уравнений вида: . Линейные рекуррентные соотношения часто используются в таких прикладных областях как моделирование динамики изменения народонаселения, различных экономических процессах, при анализе различных трафиков (потоков всевозможных данных, процессов) и т.п. Кроме того, такие последовательности используются при описании различных процессов в робототехнике и цифровой обработке сигналов.
Аппроксимирующие функции
Пусть для данной функции fи границы ошибки, входаx, программаP(x) вычисляющая функциюf,приблизительно корректна, еслиP(x)-f(x). Это обозначается следующим образом:P(x) f(x). Будем также считать, чтоР(,)аппроксимирует функциюfна областиD, еслиP-fна 1-элементах областиD.
Исходя из работ [GLRSW,RS1], можно показать, как тестировать программы, которые вычисляют полиномы и функции, определенные теоремами сложения, когда выход программы, реализующей вычисления над этими полиномами или функциями является приблизительным. В этих работах также показано, как выполнить аппроксимирующие проверку, самотестирование и самокоррекцию полиномов и функциональных уравнений.
В таблице 4.3 показаны некоторые теоремы сложения для функциональных уравнений, где верна следующая форма f(x+y)=G[f(x),f(y)].
Таблица 4.3.
G[f(x),f(y)] |
f(x) |
f(x)+f(y) |
Ax |
|
tg Ax |
|
ctg Ax |
|
|
|
|
|
A th Bx |
|
|
f(x)f(y)- |
cos Ax |
|
|
|
|
|
|
|
|
f(x)f(y)+ |
ch Ax |
Кроме того, в ряде работ (см., например, упоминания в [EKR]) было показано, как строить аппроксимирующие чекеры для ряда модулярных и логарифмических операций, а также функций sin, cos, для умножения и инвертирования матриц, решения систем линейных уравнений и определения детерминантов. Также исследовались проблемы тестирования операций деления с плавающей точкой, одномерных полиномов степени до 9 включительно и многомерных полиномов, а также тестирования ряда других тригонометрических и гиперболических функций.
Криптография, интерактивные доказательства Вводные замечания
Основная идея использования задач самотестирования в криптографии заключается в девизе «Защитить самих защитников». Так как криптографические методы используются для высокоуровневого обеспечения конфиденциальности и целостности информации, собственно программно-техническая реализация этих методов должна быть свободна от программных и/или аппаратных дефектов. Таким образом, самотестирование и самокоррекция программ может эффективно применяться в современных системах защиты информации от несанкционированного доступа.