Скачиваний:
0
Добавлен:
01.05.2025
Размер:
557.57 Кб
Скачать

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

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

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

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

Определение 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.

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

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

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

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

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

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

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

2.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 – Блок-схема алгоритма решения задачи

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]