
- •1 Лекция (04.09.2024) Тема: «Модели и их виды»
- •Способы исследования реальных объектов:
- •Адекватность модели
- •Иерархия моделей
- •Классификация моделей
- •Этапы моделирования
- •2 Лекция (18.09.2024) Тема: «Моделирование случайных величин»
- •Формирование дискретной случайной величины с равновероятным распределением
- •Формирование дискретной случайной величины с не равновероятным распределением
- •Формирование дискретной случайной величины с не равновероятным распределением и с числом значений больше 2
- •3 Лекция (02.10.2024) Тема: «Моделирование гауссовской случайной величины»
- •Моделирование (формирование)
- •Моделирование (формирование) релеевской случайной величины
- •Моделирование (формирование) случайных векторов
- •Формирование (моделирование) гауссовских случайных векторов с независимыми компонентами
- •4 Лекция (16.10.2024) Формирование гауссовского случайного вектора с корреляцией
- •Моделирование систем связи
- •5 Лекция (30.10.2024)
- •6 Лекция (13.11.2024) Тема: «Фильтрация в технических системах»
- •7 Лекция (27.11.2024) Тема: «Вычислительная сложность моделирования»
- •Функция сложности алгоритма
- •Методы снижения сложности алгоритмов
- •Быстрые алгоритмы умножения матриц
Методы снижения сложности алгоритмов
Как правило, при решении задач моделирования оказывается, что выч. сложность алгоритма очень высока -> невозможно провести моделирование. Поэтому требуется решить задачу, упрощение (снижение сложности алгоритма, чтобы можно было в реальности провести моделирование).
Известно два подхода для снижения выч. сложности:
Результат работы алгоритма не изменяется
Вектор x -> Алгоритм-> вектор y
Вектор y = вектор F (вектор x)
Данный подход наиболее желателен, так как результат работы алгоритма тот же, а сложность меньше.
Применяется, когда подход первый невозможно применить или он себя исчерпал
Результат работы алгоритма изменяется (данные на выходе изменяются, но не очень существенно).
Вектор x -> Алгоритм-> вектор y с тильдой
Вектор y с тильдой = вектор Fс тильдой (вектор x)
Алгоритм изменяется, но не значительно изменяется. вектор y ~ y с тильдой.
Существенно можно снизить сложность, но будут потери.
Рассматриваем ток первые подход. (сокращение сложности, без изменения результата)
Возможности снижения сложности без изменения выходных данных
Преобразования алгоритма с экспоненциальной сложность в полиноминальную. (На практике почти невозможно сделать): NP-> P
Снижение порядка сложности (Иногда возможно снизить): P: NK где K – порядок сложности
Снижение мультипликативной постоянной альфа в алгоритме с полиноминальной сложность. (Если есть алгоритм полиноминальный, у него есть коэффициент альфа на NK нет универсального способа уменьшения выч сложности алгоритма, но есть методы:
Метод «Разделяй и властвуй» - согласно этому методу, исходная сложная задача (большой размер входных данных) разбивается на нескольких простых задач. Каждая задача решается каким-либо методом. Затем решение подзадач комбинируется, а затем на их основе. Очень часто такой подход носит рекурсивный характер. (Пример: быстрое преобразование Фурье, алгоритм Штрассена для быстрого умножения матриц.)
Метод исключения повторяющихся операций. (выявить повторяющиеся операции и их исключить, самое трудное – найти повторяющиеся операции).
Задача перемножения двух комплексных чисел:
(a+jb)(c+jb) = (ac-bd)+j(bc+ad)
Одно комплексное число в компе – пара действительных чисел.
В данном случае результат – пара действительных чисел. 4 действительных умножения и 2 действительных сложения (действительные операции без j). Задача – сократить кол-во таких операций. Если для выполнение этих операций используется процессор без аппаратного умножения, то время операций умножения в разы больше, чем время операций сложения. Задача упрощение сводится к задаче сокращения кол-ва операций умножения
Рисунок 1 – Унгерн (Метод 3М)
3 умножения получилось и 5 сложений. В данных условиях время выполнение сократилось на 25% .
Если применяются современные процессоры с аппаратным умножителем, то метод 3М увеличивает трудоёмкость.
Вектор y = матрица а * матрица b * вектор x
Матрица размерности N = MN NN N
Y = (A*B) * X
Y = A * (B*X)
С точки зрения математики результат одинаковый. Но с точки зрения трудозатрат. (второй лучше)
2N3 – N2 (тут умножение матриц) + 2N2-N (тут умножение матрицы на вектор) = 2N3 + N2 – N
(2N2 – N)2 (тут умножение матрицы на вектор) = 4N2 – 2N
Засчёт правильного выбора порядка выполнения операций, сложность сократилась в 50 раз, при N = 100.
Выбор правильной последовательности можно сократить выч сложность. алгоритма.