- •Моделирование как метод исследования сложных систем связи и управления. Общие подходы.
- •Способы исследования реальных объектов:
- •Натурный эксперимент
- •Математическое моделирование
- •Имитационное моделирование
- •Классификация моделей
- •Этапы моделирования
- •Построение модели системы. Математическое моделирование. Имитационное моделирование.
- •Иерархия моделей. Адекватность и сложность модели. Иерархия моделей
- •Адекватность модели
- •Пример имитационной модели фильтра нижних частот.
- •Элементы цепи:
- •Как работает фильтр нижних частот (фнч): (не уверен)
- •Пример имитационной модели информационной системы.
- •Моделирование дискретных случайных величин.
- •Формирование дискретной случайной величины с равновероятным распределением
- •Формирование дискретной случайной величины с не равновероятным распределением
- •Формирование дискретной случайной величины с не равновероятным распределением и с числом значений больше 2
- •Моделирование непрерывных случайных величин с равномерным распределением.
- •Моделирование непрерывных случайных величин с гауссовским распределением.
- •Моделирование случайных векторов с независимыми компонентами
- •Моделирование гауссовского случайного вектора с заданными средним и корреляционной матрицей.
- •Модели каналов связи
- •Помехи в информационных системах.
- •Модели случайных процессов. Постоянный процесс. Винеровский процесс. Процессы авторегрессии различных порядков.
- •Идентификация модели авторегрессии на примере процесса авторегрессии 1-го порядка
- •Общая постановка задачи фильтрации в информационных системах. Нерекуррентная и рекуррентная фильтрация.
- •Фильтр Калмана и его свойства. Принцип предсказания и коррекции.
- •Вычислительная сложность алгоритма обработки сигналов в информационных системах. Функция сложности алгоритма.
- •Вычислительная сложность
- •Функция сложности алгоритма
- •Методы снижения сложности алгоритмов
- •Алгоритмы экспоненциальной и полиноминальной сложности. Порядок сложности алгоритмов.
- •Методы анализа сложности алгоритма. Непосредственный подсчет. Рекуррентная формула для асимптотической сложности. Оценка асимптотической сложности по рекуррентной формуле.
- •Анализ вычислительной сложности перемножения матриц и векторов
- •Методы снижения сложности алгоритмов.
- •Перемножение комплексных матриц и векторов
- •Перемножение двух комплексных матрицы
- •Метод Штрассена быстрого умножения матриц и его асимптотическая сложность.
- •Методы быстрого умножения комплексных чисел, векторов и матриц. Метод 3м.
Методы снижения сложности алгоритмов.
Как правило, при решении задач моделирования оказывается, что вычислительная сложность алгоритма очень высока, следовательно, невозможно провести моделирование. Поэтому, требуется решить задачу упрощения вычислительной сложности (снижение сложности алгоритма, чтобы можно было в реальности провести моделирование).
Существуют два подхода для снижения вычислительной сложности:
Возможности снижения сложности без изменения выходных данных:
Преобразования алгоритма экспоненциальной сложности в алгоритм с полиноминальной сложностью (самый радикальный подход, на практике почти невозможно сделать). NP-> P
Снижение порядка сложности (менее радикальный подход, но его также крайне редко сделать): P: NK где K – порядок сложности
Снижение мультипликативной константы в функции f(N) сложности. (Если есть алгоритм полиномиальный, у него есть коэффициент альфа на NK и нет универсального способа уменьшения вычислительной сложности алгоритма, но есть общие методы:
Метод “Разделяй и властвуй” (согласно этому методу, исходная сложная задача (большой размер входных данных) разбивается на нескольких более простых задач. Решение сложной задачи формируется из решения подзадач. Очень часто такой подход носит рекурсивный характер.)
Метод исключения повторяющихся операций (согласно этому методу, нужно выявить повторяющиеся операции и их исключить, самое трудное в данном методе – это найти повторяющиеся операции)
Метод оптимального порядка выполнения операций (Данный метод используется, когда от порядка выполнения операций результат не зависит, а сложность зависит)
Существует теория сложности алгоритмов, которая занимается анализом сложности и снижением сложности алгоритмов. Существует две возможности для снижения вычислительной сложности:
Сложность снижается без изменения результата работы алгоритма;
Сложность снижается с изменением результата работы алгоритма.
Теория сложности занимается только 1-ым способом.
При решении задачи моделирования очень часто возникает ситуация, когда разработанная модель слишком сложна и нужно либо упрощать эту модель (но при этом снижается её адекватность), либо использовать более производительный (и более дорогой) компьютер, либо тратить много времени на ожидание результатов расчёта.
Иногда теория сложности может предложить способ сокращения сложности без изменения результата. как можно снизить вычислительную сложность.
Мы рассмотрели 2 подхода– когда результат работы не меняется и когда меняется.
Когда меняется результат мы это не рассматриваем – смотрим способы как снизить сложность не меняя результат работы алгоритма.
Рассмотрим способы снижения сложности, не изменяющие результат работы алгоритма. Нужно чтобы результат оставался тем же.
Снижение вычислительной сложности:
Преобразование алгоритма, имеющего экспоненциальную сложность в алгоритм с полиномиальной сложностью. Сделать это удаётся в исключительно редких случаях.
Снижение порядка сложности (m) алгоритма с полиномиальной сложностью.
Уменьшение значений мультипликативных постоянных.
Например,
,
где
– мультипликативная постоянная.
Эта цель представляется более лёгкой для достижения, но тоже не всегда.
К сожалению не существует универсального (для всех случаев) метода снижения вычислительной сложности, но существуют некоторые подходы
Как можем взять и выявить повторяющиеся операции? Рассмотрим пример выявления повторяющихся операций для задачи перемножения комплексных чисел.
Сложений: 2
Умножений: 4
Допустим, в нашем процессоре нет аппаратного умножителя –тогда нужно за счёт увеличения сложений уменьшить умножения
Сложений: 5
Умножений: 3 – меньше на 1
Здесь
мы получаем сокращение числа умножений
на
,
что соответствует общему снижению
сложности или времени выполнения
операции тоже примерно на
,
но это только в случае, если у нас нету
встроенного умножителя – когда умножение
намного сложнее, чем сложение.
Доказано что невозможно перемножить 2 комплексных числа делая только 2 умножения –минимум 3.
Следующий вопрос – а если у нас имеется умножитель, тогда метод не приведёт к уменьшению сложности, а наоборот.
Как правило мы же не перемножаем 2 комплексных числа просто – мы перемножаем комплексные векторы, матрицы и т.д. Что будет если у нас перемножаются комплексные матрицы и векторы?
