русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Решение задачи о расстановке скобок при перемноженииматриц


Дата добавления: 2014-05-29; просмотров: 1982; Нарушение авторских прав


Вычислим количество операций умножения, которые необходимо выполнить приперемножении трех матриц и размерностью соответственно и

Заметим, что операция умножения матриц ассоциативна и следовательно,

Несложно подсчитать, что количество операций умножения, которые необходимо выполнить при вычислении произведения будет а при вычислении т.е. в 10 раз больше. Таким образом, расстановка скобок при перемножениибольшого количества матриц может существенно повлиять на трудоемкость вычисления результата.

Сформулируем задачу в общем виде.

Рассмотрим произведение матиц …, имеющих размерности соответственно …,

Обозначим – минимальноевозможное количество операций умноженияпри вычислении произведения Очевидно, что Кроме того, будем считать, что

Разобьем произведение следующим образом где Индекс будем называть точкой разрыва. Тогда , где – количество операций умножения при перемножении матриц и Другими словами, оптимальная расстановка скобок между матрицами и сводится к поиску точки разрыва при которойколичество операций умножения матриц и минимально.

Запишем окончательное рекуррентное соотношение, позволяющее вычислить минимальное количество операций умножения, в следующем виде:

Определим для примера минимальное количество операций умножения для матриц и из рассмотренного выше примера:

На 9 и 10 представлена функцияOptimalM,реализующая алгоритм поиска оптимальной расстановки скобок при перемножении нескольких матриц.

 

Рис. 9. Функция оптимальной расстановки скобок при перемножении матриц

 

 

Рис. 10. Реализация функцииOptimalM

 

На рис. 11приведен примерпрограммы, вызывающейфункциюOptimalMдля оптимальнойрасстановки скобокпри перемножении шести матриц, а на рис. 12– результат выполнения этой программы.



 

Рис. 11. Пример вызова функцииOptimalM

 

 

Рис. 12. Результат выполнения программы, представленной на рис. 11

 

Функция OptimalMимеетчетыре входных параметра: i (номер первой матрицы), j(номер последней матрицы), n (общее количество перемножаемых матриц),c(массивразмерностбюn, содержащий размерности матриц), а также один выходной параметр s (двумерный массив размерностьюn, содержащий точки разрыва). Кроме того,к точке вызова возвращаетсяминимальное количество операций умножения, необходимых для перемножения матриц заданной размерности.

Функция OptimalMявляется рекурсивной, так как она в процессе своей работы вызывает саму себя. Дно рекурсии достигается при совпадении значений двух первых параметров функции.

Расстановку скобок в заданной последовательности матриц можно осуществить с помощью двумерного массива s, возвращаемого функциейвпоследнемпараметре. Поясним принцип использования этого массива для расстановки скобок при перемножении шести матриц размерности которых заданы массивом Mcна рис. 7.11. Массив (матрица)s, который используется далеедля расстановки скобок, является результатом работы программы (рис. 11) ивыведен нарис. 12.

Скобки расставляются по принципу«сначала внешние – затем внутренние». Найдем элемент в матрицеsна рис. 12. Он равен 3. Это означает, что точка разрыва находится между первой и шестой матрицей послетретьей матрицы, что позволяет расставить внешние скобки следующим образом:

Точку разрыва между первойи третьей матрицей определяет элемент а между четвертой и шестой – После расстановки скобок выражение будет выглядеть следующим образом Полученная расстановка скобок позволяет получить минимальное количество операций умножения, равное 15125.

 



<== предыдущая лекция | следующая лекция ==>
Решение задачи о рюкзаке | Решение задачивычисления длины наибольшей общей подпоследовательности


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.