русс | укр

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

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

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

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


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

Вычислительные и комбинаторные алгоритмы


Дата добавления: 2015-07-23; просмотров: 927; Нарушение авторских прав


В 50-е годы во всем мире наблюдался рост численных алгоритмов. Например, решить систему уравнений, вычислить определенный интеграл, найти сумму ряда. При этом задача имела одно решение, а усилия были направлены на то, чтобы достичь его за наименьшее число шагов.

Начиная с 60-х годов, в связи с развитием вычислительной техники начинается бурный рост числа комбинаторных алгоритмов. Для них характерно, что решение задачи связано с перебором вариантов, среди которых требуется найти оптимальный.

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

 

5.4. Поиск решения комбинаторной задачи.

 

Процесс поиска решения комбинаторной задачи может быть представлен графом типа дерево.

 
 


x1 0й уровень

 
 


x2 x3 x4 1й уровень


x5 x6 x7 x8 x9 x10 2й уровень

                                                                 
 
 
                   
 
 
 
             

 

 


n-1й уровень

           
 
     
 


nй уровень

 

Корень дерева (вершина 0го уровня) – это ситуация, в которой мы находимся перед работой алгоритма. Из нее мы можем перейти в одну из ситуаций 1го уровня и так далее. Вершины nго нижнего уровня - это решения. Такие вершины называются целевыми. Вообще говоря, целевые вершины не обязательно должны располагаться на одном уровне, но это всегда можно сделать путем введения фиктивных вершин.



Требуется среди целевых вершин выбрать вершину, соответствующую оптимальному решению.

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

Поэтому поступают следующим образом. Находясь в ситуации, соответствующей некоторой вершине x iго уровня, приписывают смежным с x вершинам i+1го уровня количественную оценку. После этого выбирают на i+1м уровне вершину y с максимальной оценкой. Так находясь в корне дерева – вершине x1, мы оцениваем вершины x2, x3, x4. Если, например, вершина x4 получила максимальную оценку, то на следующем шаге алгоритма выбирается вершина y=x4 и оцениваются вершины x8, x9, x10.

Ситуации, связанные с вершинами x2 и x3, не рассматриваются, то есть ребра х12 и х13 обрываются. Таким образом, каждый раз переходя из вершины х в вершину у, мы обрываем оставшиеся ребра, исходящие из х, тем самым существенно сокращая дерево перебора.

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

Существует сравнительно небольшой класс комбинаторных алгоритмов, для которых глобальный оптимум совпадает с последовательностью локально-оптимальных. Такие алгоритмы называют жадными. На каждом шаге жадный алгоритм “откусывает самый жирный кусок”, а потом пытается “откусить самый жирный среди оставшихся”.

Большинство же комбинаторных алгоритмов подобным свойством не обладают. Для них последовательность локально-оптимальных выборов не обязательно приводит к глобальному оптимуму. Такие алгоритмы называются эвристическими.



<== предыдущая лекция | следующая лекция ==>
Свойства алгоритмов | 


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


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

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

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


 


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

 
 

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

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