Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Описание метода прямого перебора



Концепция решения задач методом прямого перебора.

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

Алгоритм формирования перестановок на основе упорядоченных пар

 

Определение 1. Два числа ik,, ik+l называются упорядоченной парой при условии, что ik+l > ik.

Определение 2. Первое число упорядоченной пары называется обры­вающим числом.

Определение 3. Хвостом перестановки п из п чисел называется по­следовательность чисел, начиная с последнего числа до первого обрывающего числа: п = (i1, i2, ..., ik, ik+l, ..., i„). Собственно обрывающее число в хвост пере­становки не включается.

Шаг 1 . Формируется первоначальная перестановка из п чисел = (l, 2, 3, ..., п)и пересылается в банк сгенерированных перестановок.

Шаг 2. В перестановке находится хвост, в нем определяется минимальное число, но большее, чем обрывающее число.

Шаг 3. Найденные минимальное и обрывающее числа переставляются местами.

Шаг 4. Полученный хвост упорядочивается в порядке возрастания чисел. После упорядочения результат направляется в банк сгенерированных перестано­вок. Производится проверка: все ли перестановки сгенерированы. Если не все, то переход на шаг 2. Исходными данными для шага 2 являются результаты, полу­ченные на шаге 4.

 

Замечание. Минимальное число, найденное в хвосте перестановки, должно быть больше, чем обрывающее число. Если это условие не выполняется, то происходит поиск следующе­го по возрастанию числа.

 

Проектирование сценария диалога

В итоговой программной реализации необходимо предусмотреть следующие возможно­сти:

1) Ввод и редактирование количества городов;

2) Ввод и редактирование матрицы расстояний;

3) Вывод оптимального значения пути для посещаемых городов;

4) Вывод последовательности посещения городов.

Описание структур данных

Для создания качественного программного обеспечения необходимо детально разрабо­тать все структуры данных, применяемые в ходе решения задачи. Для хранения мат­рицы расстояний была создана структура Matrix, её поля представлены в таблице 1.

 

Таблица 1- Описание структуры Matrix

Поле Тип Назначение
C int ** Массив расстояний между городами
Fn char[13] Имя файла в котором сохраняется матрица
S char Флаг показывающий сохранялась ли матрица в файле

 

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

 

Таблица 2 - Описание структуры CitiesSet

Поле Тип Назначение
Ksi int Нижняя оценка множества
Cps_num unsigned int Количество пройденных городов
r, m unsigned int Перспективная пара для текущего подмножества
CM Matrix Матрица расстояний между городами для текущего подмноже­ства
СС Couple Матрица пройденного пути

 

Для хранения информации о пройденном пути была создана структура Couple. Все поля структуры описаны в Таблице 3.

 

Таблица 3 – Описание структуры Couple

Поле Тип Назначение Обозначение на схеме
Sc, jk int Счётчик циклов Sc, jk
MatrRast double* Матрица расстояний MR
KolGor int Количество городов KolGor
MasStep Step * Массив структур, содержащих все шаги расчётов MS
TempMas int * Массив оптимального посещения городов TempMas
AllVal double Итоговый путь AllVal
CurVal double Значение из матрицы расстояний CurVal
BackVal double Путь на предыдущем шаге BackVal

 

Ниже, на рис. 4 представлена блок-схема алгоритма решения задачи методом Литла.

.


Рис. 4 – Блок-схема алгоритма решения задачи

 


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-06-05; Просмотров: 1558; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.01 с.)
Главная | Случайная страница | Обратная связь