Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2260.doc
Скачиваний:
71
Добавлен:
24.09.2019
Размер:
3.71 Mб
Скачать

2. Алгоритмы и сложность

2.1. Понятие алгоритма

Начнем с примеров оптимизационных задач дискретной математики.

1. Имеется несколько городов и известны расстояния между ними. Два города считаются соседними, если существует дорога, соединяющая эти города, не проходящая через другой город. Требуется найти кратчайший путь между некоторой (или любой) парой городов (задача о кратчайшем пути).

2. Имеется m станков и n деталей, каждую деталь можно обрабатывать на любом станке, но время обработки детали на разных станках – разное. Предположим, что время обработки -й детали на j-м станке известно. Требуется так организовать производство деталей, чтобы суммарное время работы было наименьшим (задача об оптимальном назначении).

3. Путешественник хочет объехать n городов, побывав в каждом городе ровно по одному разу, и вернуться в исходный город, при этом расходы на путешествие должны быть минимальными (задача коммивояжера).

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

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

Во-вторых, каждому варианту сопоставлена некоторая числовая характеристика (длина пути, суммарное время работы, стоимость путешествия).

В-третьих, требуется выбрать вариант, для которого эта числовая характеристика достигает экстремального значения.

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

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

Относительно понятия алгоритма следует отметить, что единого «истинного» определения понятия «алгоритма» нет. Приведем несколько определений алгоритма известных авторов.

«Алгоритм – это конечный набор правил, который определяет последовательность операций для решения конкретного множества задач и обладает пятью важными чертами: конечность, определённость, ввод, вывод, эффективность» (Д. Кнут, ).

«Алгоритм – это всякая система вычислений, выполняемых по строго определённым правилам, которая после какого-либо числа шагов заведомо приводит к решению поставленной задачи» (А. Колмогоров, ).

«Алгоритм – это точное предписание, определяющее вычислительный процесс, идущий от варьируемых исходных данных к искомому результату» (А. Марков, ).

Различные определения алгоритма в явной или неявной форме содержат следующий ряд формальных признаков.

Конечность – при корректно заданных исходных данных алгоритм должен завершать работу и выдавать результат за конечное число шагов.

Детерминированность (определённость). В каждый момент времени следующий шаг работы однозначно определяется состоянием системы. Таким образом, алгоритм выдаёт один и тот же результат (ответ) для одних и тех же исходных данных.

Данные – любой алгоритм применяется к исходным данным и выдает результат.

Массовость – алгоритм служит не для решения какой-либо конкретной задачи, а для решения целого класса задач.

Для каждой задачи может существовать множество алгоритмов, приводящих к цели. Увеличение эффективности алгоритмов составляет одну из задач современной информатики. В связи с этим вводят понятия сложности алго­ритма.

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