147
Для решения нашей задачи необходимо получить как можно больше нулей в матрице смежности.
Для этого из каждой строки вычтем ее минимальный элемент (приведение по строкам), а затем вы-
чтем из каждого столбца его минимальный элемент (приведение по столбцам). Сумма констант при-
ведения по строкам и столбцам определяет оценку снизу для всех туров. Стоимость тура не может
быть меньше. Если для приведенной матрицы удастся построить оптимальный тур, то он будет оп-
тимальным и для исходной матрицы. Стоимость тура будет равна сумме стоимости тура для приве-
денной матрицы и сумме констант приведения.
Далее выбор оптимального тура проводится с помощью перебора вариантов. При выборе оче-
редного хода можно оценить, как изменится общая стоимость тура. Используя эти оценки, можно
резко сократить количество рассматриваемых вариантов.
2.1.12 Теория расписаний
Интересный круг задач связан с теорией расписаний. Как правило, они связаны с составлением
наилучшего графика работ одним или несколькими исполнителями. Некоторые решаются простыми
изящными алгоритмами, другие, иначе как полным перебором, не решить. Перед рассмотрением за-
дач этого класса вспомним кое-что о сортировке.
Сортировка. Как известно, под сортировкой (упорядочением) понимается перераспределение
элементов массива в некотором определенном порядке. Основная цель сортировки - облегчить после-
дующий поиск элементов в таком упорядоченном массиве. Примерами упорядоченных объектов яв-
ляются:
а) размещение книг в хранилищах библиотек;
б) расположение товаров на складах;
в) номера в телефонных справочниках и т.д.
Как правило, сортировка в олимпиадных задачах не является основной темой, однако в ряде слу-
чаев ее применение не только сокращает время работы программы, но существенным образом влияет
на эффективность ее реализации.
Для примера рассмотрим одну из задач (Котов В.М., Волков И.А., Харитонович А.И.1996):
Имеется 2N чисел. Известно, что их можно разбить на пары таким образом, что произведения
чисел в парах равны. Показать эти пары. Все числа натуральные. 1< N< 10000.
Если мы будем решать ее полным перебором, то, очевидно, можем не уложиться во временные
ограничения (постарайтесь оценить, сколько вариантов Вам придется рассмотреть при максималь-
ном возможном значении N). Основная идея задачи состоит в том, чтобы не использовать операцию
умножения. Если числа натуральные (т.е. больше 0), то одна из пар должна содержать максимальное
и минимальное число. Если их убрать из рассмотрения, то следующую пару можно сформировать та-
ким же образом, выбрав из оставшихся чисел максимальное и минимальное. Таким образом, если мы
отсортируем все числа в порядке неубывания, то взяв попарно первое и последнее число, второе и
предпоследнее и т.д., получим требуемый результат.
Задание. Самостоятельно рассмотрите случай, если числа целые. Определите, как изменится
алгоритм решения задачи. На какие подзадачи разделится задача.
Сортировка - хороший пример задачи, которую можно решать с помощью множества различных
алгоритмов. Каждый из них имеет и свои достоинства и свои недостатки, поэтому выбирать наилуч-
ший алгоритм необходимо, исходя из конкретной постановки задачи.
Существенным критерием выбора нужного метода, среди многих возможных, является его эко-
номичность, т. е. время работы. Хорошей мерой эффективности может служить число необходимых
сравнений элементов. Рассмотрим некоторые виды сортировок.
Сортировка выбором. Этот метод сортировки основан на следующих принципах:
1. Выбирается максимальный элемент.