Алгоритмизация труднорешаемых задач. Часть I. простые примеры и простые эвристики

heuristics for the traveling salesman problem // Teoreticheskiye problemy informatiki i yeyo prilozheniy. - 2001. - Vol. 4. - P. 81-92.)

18. Melnikov B. Multiheuristic approach to discrete optimization problems // Cybernetics and Systems Analysis. - 2006. - Vol. 42. - No. 3. - P. 335-341.

19. Мельников Б., Пивнева С., Рогова О. Репрезентативность случайно сгенерированных недетерминированных конечных автоматов с точки зрения соответствующих базисных автоматов // Стохастическая оптимизация в информатике. - 2010. - Т. 6. - № 1. - С. 74-82.

20. Балинова В. Статистика в вопросах и ответах: учеб. пособие. - М.: ТК Велби, изд-во Проспект, 2004.

21. Философский энциклопедический словарь; гл. редакция: Л. Ильичев, П. Федосеев, С. Ковалев, В. Панов. - М.: Сов. Энциклопедия, 1983.

22. Gurevich Y., Veanes M., Wallace C. Can abstract state machines be useful in language theory? // Theoretical Computer Science (Developments in Language Theory). - 2007. - V 376, No. 1-2. - P. 17-29.

23. Люгер Дж. Искусственный интеллект. Стратегии и методы решения сложных проблем. - Вильямс, 2003.

24. Мельников Б., Радионов А. О выборе стратегии в недетерминированных антагонистических играх // Программирование. - 1998. -№ 5. - С. 55-62.

25. Макаркин С. Еще об одном подходе к решению псевдогеометриче-ской задачи коммивояжера // Вектор науки Тольяттинского государственного университета. - 2012. - № 4, C. 79-82. (Makarkin S. About one approach to solving the traveling salesman problem pseudogeo-metrical // Vektor nauki Tol’yattinskogo gosudarstvennogo universiteta. -

2012. - No. 4. - P. 79-82.)

26. Gutin G., Punnen A. (editors). The Traveling Salesman problem. - Kluwer Academic Publishers, 2002.

27. http://arxiv.org/ftp/arxiv/papers/1204/1204.2350.pdf - Liew Sing. Introducing convex layers to the Traveling Salesman Problem / Preprint: arX-iv:1204.2348. - 2012. - Режим доступа - свободный.

28. Somhom S., Modares A., Enkawa T. Competition-based neural network for the multiple travelling salesmen problem with minimax objective // Computers & Operations Research. - 1999. - Vol. 26, No. 4. - P. 395-407.

УДК 004.023,004.8

АЛГОРИТМИЗАЦИЯ ТРУДНОРЕШАЕМЫХ ЗАДАЧ.

ЧАСТЬ I. ПРОСТЫЕ ПРИМЕРЫ И ПРОСТЫЕ ЭВРИСТИКИ

ГРОМКОВИЧ Юрай,

профессор, доктор физико-математических наук,

Eidgenбssische ТесЬпізсЬв Но^^иіе, Цюрих, Швейцария iurai.hromkovic@inf.ethz.ch

МЕЛЬНИКОВ Борис Феликсович,

профессор, доктор физико-математических наук, Самарский государственный университет,

Самара, Россия bormel@rambler.ru

Аннотация. В статье мы излагаем свой взгляд на т.н. труднорешаемые вычислительные задачи и возможные подходы к их алгоритмизации - на уровне, «несколько превышающем научно-популярный», однако «несколько меньшем, чем научный».

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

Среди рассматриваемых нами примеров задач - известные интеллектуальные игры-головоломки, а также задача коммивояжера и проблемы минимизации недетерминированных конечных автоматов и дизъюнктивных нормальных форм.

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

но дает оптимальное.

Ключевые слова: труднорешаемые задачи; эвристические алгоритмы; искусственный интеллект; задачи дискретной оптимизации.

ALGORITHMICS FOR HARD PROBLEMS.

PART I. SOME SIMPLE EXAMPLES AND SOME SIMPLE HEURISRICS

HROMKOVIC Juraj,

professor, doctor of physical and mathematical sciences,

Eidgenossische Technische Hochschule, Zurich, Switzerland juraj.hromkovic@inf.ethz.ch

MELNIKOV Boris,

professor, doctor of physical and mathematical sciences, Samara State University, Samara, Russia bormel@rambler.ru

Abstract. The authors present their views on the hard problems and possible approaches for their algorithmics. The level of presentation is “slightly larger than the popular-science”, but “slightly less than scientific”.

We call attention to the fact that we do not restrict our interpretation of hardness to so called NP-hardness in this book. Problems like primality testing, that are not known to be NP-hard (but that are also not known to be polynomial-time solvable), are in the center of our interest, too. It focuses on a systematic presentation of the fundamental concepts and algorithm design techniques.

Among the examples of the tasks before us, there are the famous intellectual puzzle games, as well as the travelling salesman problem and problems of minimization of nondeterministic finite automata and disjunctive normal forms.

Among the algorithms, we first consider the heuristic, which usually does not guarantee an optimal solution, but with an acceptably high probability yield a solution that is close to it. An important type is the so-called anytime-algorithms, i. e., real-time algorithms that have the best (for now) solution at any given moment; wherein the user in real-time may look these pseudo-optimal solutions, and usually, the sequence of these solutions gives in the limit the optimal one.

Keywords: hard problems; artificial intelligence; heuristic algorithms; discrete optimization problems.

1. Введение

В данной статье мы попытаемся изложить свой взгляд на т.н. труднорешаемые задачи и возможные подходы к их алгоритмизации - на уровне, «несколько превышающем научно-популярный», но «несколько меньшем, чем научный». С закрытием в конце 2009 г. «Компьютерры» подобные статьи в научно-популярных журналах появляются все реже5 - однако, возможно, это вовсе не является «катастрофой»: многие подобные темы сейчас постоянно обсуждаются на форумах, на соответствующих сайтах, вспомним хотя бы «Хабр» [3]. На таком же уровне («между научно-популярным и научным») написаны и некоторые известные книги [4 и др.], однако все же большую часть книг по данной тематике называть «научно-популярными» нельзя [5, 6 и мн. др.].

Итак, как и следует из названия нашей статьи, мы делаем упор на описании методов разработки алгоритмов для труднорешаемых вычислительных задач. При этом мы не сводим рассмотрение трудных задач, а также нашу интерпретацию трудности к т.н. КР-трудности6. В центре нашего внимания находятся проблемы, для которых (пока) не доказаны ни КР-трудность, ни полиномиальная разрешимость, т.е. неизвестно, существуют ли алгоритмы, решающие эту задачу за т.н. полиномиальное время (время, ограниченное некоторым полиномом относительно размера входных данных). Более того, трудными мы считаем такие задачи, для которых полиномиальная разрешимость доказана - однако (пока) неизвестны полиномиальные алгоритмы небольших степеней7.

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

5 А среди многих хороших статей в той же «Компьютерре», не утративших актуальности за прошедшие 10 лет, отметим [1, 2].

6 Мы не будем определять этот термин - об этом на научно-популярном уровне было рассказано в уже процитированной статье [1]; кроме того, для наших целей строгое определение не очень важно. См. классическую книгу [7 и др.].

И, раз мы заговорили о терминах, отметим, что как русский термин «алгоритмизация», так и примененный в названии [8] английский термин «algorithmics» вряд ли можно назвать широко распространенными; гораздо чаще применяется термин «разработка алгоритмов» и т.п. Однако мы все же предпочли этот вариант. Более того, в русскоязычной литературе для каждого из трех слов, составляющих название статьи, нет устоявшихся терминов: «алгоритмизация» или «разработка алгоритмов»? «труднорешаемая», «трудно решаемая» или «трудная»? «проблема» или «задача»?

7 Т.е. мы рассматриваем трудность «с наиболее естественной точки зрения».

ли8. А самый впечатляющий эффект производит такой пример: во многих задачах, очень важных для практики, выполнение любого «наивного» алгоритма требует миллионы лет работы компьютера -в то время как привлечение теоретических понятий дает возможность уменьшить время работы до нескольких секунд.

Рассмотрим общий пример. Существуют вычислительные задачи, которые не выполняются за время порядка 2П, т.е. все алгоритмы для решения этих задач имеют временную сложность, превосходящую 2П. Приведенная таблица подтверждает тот факт, что выполнение алгоритмов для труднорешаемых задач может превысить границы любых физических возможностей. Для функций с временной сложностью 10п, 2п2, п3, 2п и п! таблица 1 показывает, сколько операций должно быть выполнено над входными данными размера 10, 50, 100 и 300. Некоторые числа в клетках таблицы слишком велики - и нам приходится вместо точных значений записывать их длину.

Таблица 1

п 10 50 100 300

10п 100 500 1000 3000

2п2 200 5000 20000 180000

п3 1000 125000 1000000 27000000

2п 1024 16 цифр 31 цифра 91 цифра

п! -3.6106 65 цифр 158 цифр 615 цифр

Пусть, например, у нас есть компьютер, выполняющий 106 операций в секунду. Тогда некоторый алгоритм с временной сложностью п может вычислять результаты для входных данных, длина которых не превосходит п=300, в пределах 3 секунд. Если же временная сложность составляет 2п, то этот же алгоритм для вход-

8 На предположении о трудности проблемы факторизации основано утверждение о надежности применяемого в современной криптографии алгоритма ЯБА. Эта проблема является очень важной для т.н. криптографии с открытым ключом - где необходимо про-извести проверку на простоту достаточно длинного целого числа. (А по возможности ре-шить и значительно более сложную задачу - разложить число на простые множители.) Практический алгоритм проверки простоты числа был разработан только благодаря со-зданию нетривиальной теории, полученной в результате «совместных усилий» трех столь разных наук, как теория чисел, теория вероятностей и «наша» алгоритмизация.

ных слов длины 50 потребует более чем 3 лет работы, а для «=100 -более чем 3х1015 лет9. Сравнивая значения 2« и «! для реальных размеров входных данных - между 100 и 300 - с предполагаемым числом секунд, прошедших с момента Большого Взрыва (числом, состоящим из 21 цифры), мы получаем, что выполнение алгоритмов экспоненциальной сложности с такими данными превышает любые границы физических возможностей.

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

• Для алгоритма, выполняющегося за время «3, размер «легкорешаемых» входных данных может быть увеличен путем умножения на константу V2, c l[t до \Jt • л/2 - т.е. можно обрабатывать в ijl раз более длинные размеры входных данных, чем ранее.

• Однако для алгоритма, выполняющегося за время 2«, размер «легкорешаемых» входных данных может быть увеличен только на 1 бит.

Итак, алгоритмы с экспоненциальной временной сложностью нельзя считать практически применимыми, а алгоритмы с полиномиальной временной сложностью (т.е. O(nc) для малых c) - можно. Поэтому не будет преувеличением сказать, что самой важной целью теоретической информатики - а возможно, и самым интеллектуальным видом человеческой деятельности! - является именно разработка применимых на практике алгоритмов решения трудных проблем и их хорошая программная реализация10.

2. Некоторые простые примеры

Во введении было приведено совсем немного примеров: из конкретных задач мы упомянули только проблему факторизации. Однако можно считать, что еще некоторые примеры были нами рассмотрены ранее [в 9]. Продолжая тематику и примеры той статьи, продолжим рассмотрение т.н. головоломок и повторим мысль о том, что к ним, как и к интеллектуальным играм, нельзя относиться несерьезно: практически любой хороший учебник по искусственному интеллекту начинается с их рассмотрения и описания возможных методов их решения. И, по-видимому, са-

9 «Мы будем ждать, пока не кончится время, - и встретимся после конца...» (Б. Гребенщиков).

10 «Ah, gentlemen, you know why we are here. We’ve not much time, and quite a problem here» (Andrew Lloyd Webber and Tim Rice).

мый распространенный пример - это «пресловутая» задача о ханойских башнях; однако она, конечно, к труднорешаемым все же не относится11. Также очень интересны головоломки, созданные на основе известных компьютерных игр, - различных пасьянсов, сапера, тетриса, а также судоку и т.н. японских кроссвордов, уже рассматривавшихся нами [9]12. Важно отметить, что, несмотря на простоту их формулировок, все эти задачи можно с нашей точки зрения рассматривать как труднорешаемые - причем возможные методы их решения практически совпадают с методами решения «более серьезных» задач13. А выше мы уже упоминали интеллектуальные игры (которые желательно не путать с головоломками - несмотря на то, что одна из самых известных головоломок называется «игрой в 15»): выбор очередного хода в интеллектуальной игре тоже можно рассматривать в качестве примера трудной задачи14.

Перейдем к описанию формулировок трех задач, названных нами выше более серьезными; две из них уже были кратко рассмотрены [9], мы здесь рассмотрим их подробнее, при этом введем

11 Хотя последнее утверждение можно и оспорить, если рассматривать ее не как задачу реализации заранее найденного человеком алгоритма ее решения (а именно так эта задача обычно и рассматривается в литературе, не связанной с искусственным интеллектом), а как задачу поиска такого решения.

12 Правильнее - японские картинки, как они и были названы в одной из научно-популярных статей М. Гарднера, вышедшей примерно за 20 лет до обретения этой головоломкой популярности. Однако, к сожалению, примененное нами название в русском языке устоялось; кроме того, в качестве автора этой головоломки М. Гарднер в литературе обычно не упоминается.

А на сайте несколько лет назад проводились очень интересные турниры по программированию сложных задач [11], и эти турниры можно назвать высшим уровнем олимпиад по программированию (задачи и их решения на сайте имеются в настоящее время). Среди задач этих турниров были интерпретации всех упомянутых нами головоломок. Более того, практически все предложенные там задачи тоже можно считать труднорешаемыми. А также, например, и специальные интерпретации большинства задач финалов самого престижного студенческого командного чемпионата мира по программированию - версии АСМ и ІОІ [см., например, 12, 13], где еще в 1992 г. была задача про вышеупомянутые японские картинки.

13 Причем именно судоку в первую очередь считается такой «серьезной задачей», описывающей Ш’-полноту [см., например, 14].

14 Это отражено в научно-популярной статье, изданной одним из авторов данной статьи [15]. См. также [9, 16].

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

Нами уже была сформулирована задача вершинной минимизации недетерминированных конечных автоматов (НКА) [9]; повторим ее более подробно. Задана прямоугольная матрица, заполненная элементами 0 или 1. Некоторую пару подмножеств строк и столбцов назовем блоком, если:

• во-первых, на всех их пересечениях стоят 1;

• во-вторых, это множество нельзя пополнить ни строкой, ни столбцом, - без нарушения первого свойства.

При этом т.н. допустимым решением11 является множество блоков, покрывающих все элементы 1 заданной матрицы. Требуется выбрать допустимое решение, содержащее минимальное число блоков, - т.н. оптимальное решение.

Рис. 1

15 А для самой трудности существует несколько вариантов классификации -однако в данной статье мы не будем касаться этой темы.

16 Переборные алгоритмы для точного решения этих задач тривиальны -однако не всегда реализуемы на практике. Но для каждой из них несколько десятилетий назад описаны алгоритмы точного решения, которые «с некоторой натяжкой» могут быть охарактеризованы как эвристические. Их вряд ли можно назвать алгоритмами полного перебора - однако их сложность экспоненциальна.

17 Это очень важное понятие - но не будем его строго определять. Смысл всегда будет по-нятен из контекста.

На рис. 1 приведен простой пример к этой задаче. В нем имеются следующие 5 блоков:

а=(А,Б,С,0}х(и}, Р={Л,С,П}^(2,и}, у=(Б,С,0}х(Х,и},

д=(с,о}*(х,г,и} и ю={п}х{х,у,г,и}

(элементы блока в показаны красным цветом). Для покрытия всех значений 1 заданной матрицы достаточно использовать 3 из этих 5 блоков, а именно - в, у и ш.

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

Простой пример приведен на рис. 2. Здесь п=3 (т.е. мы рассматриваем «обычный» куб) и имеются 3 плоскости, каждая из которых имеет размер 1 (т.е. является отрезком):

а=[(1,0,0),(1,0,1)], в=[(0,0,1),(1,0,1)] и у=[(0,0,1),(0,1,1)].

Для покрытия достаточно выбрать 2 из этих 3 плоскостей: а и у. Третьей рассмотрим «пресловутую» задачу коммивояжера (ЗКВ). Задана матрица, в которой в клетке, находящейся на пересечении 7-й строки и у-го столбца, записана стоимость проезда из /-го города в у-й. Требуется составить маршрут (тур) коммивояжера, проходящий по всем городам, начинающийся и кончающийся в одном и том же городе; каждый из туров и является допустимым решением. Требуется выбрать допустимое решение, имеющее минимально возможную стоимость.

/

р <1.0.1) 1

а

(0.1.0) 0/ /

/

О I

Рис. 2

Простой пример приведен на рис. 3 - на нем показаны 2 способа задания одного и того же частного случая ЗКВ. Для малых размерностей входные данные часто изображаются в виде графа. Если стоимости проезда «туда» и «обратно» для всех пар городов совпадают, то такой граф удобно считать не ориентированным - только такие примеры мы и будем рассматривать. При этом матрицы симметричны относительно главной диагонали - и в нашем примере те элементы, которые можно не задавать, показаны красным цветом.

2

СО 6 1 5 2

6 ао 7 т 15

1 7 со 9 6

5 13 9 ОС 11

2 15 6 11 со

Сі) " ©

Рис. 3а Рис. 3б

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

25

пространство состояний можно считать графом, причем обычно -неориентированным. На рис. 4 и 5 показаны возможные графы, описывающие пространства состояний для рассматривавшихся нами примеров: на рис. 4 - для примера к задаче минимизации ДНФ, на рис. 5 - для задачи минимизации НКА. Мы считаем, что в обоих примерах новое решение может быть получено на основе предыдущего путем удаления или добавления ровно одного элемента (плоскости или блока) - но отметим, что часто применяются и другие соответствующие вспомогательные алгоритмы. На обоих рисунках красным цветом показаны оптимальные решения.

Рис. 4 Рис. 5

В приведенных примерах пространства состояний невелики, однако в реальных условиях их размер часто экспоненциально (и более) зависит от размеров входных данных. Поэтому поиск приемлемого допустимого решения в таком графе - самый важный момент в алгоритмизации труднорешаемых задач. Этот поиск соответствует построению (явному или неявному) некоторого подграфа, являющегося т.н. корневым деревом. И естественная процедура построения (перебора вершин) этого дерева называется бэктрекингом18 - несложные примеры можно найти в большинстве книг по искусственному интеллекту [см., например, 17, 18].

2. Жадные алгоритмы

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

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

18 Русская терминология не устоялась. Используются, например, термины «поиск (перебор) с возвратами», но они, по-видимому, неудачны. Слово «бэктрекинг» (в русских текстах) применяется достаточно часто.

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

• А в узком смысле эвристика является методом получения непротиворечивого алгоритма, который для типичных частных случаев (входов) рассматриваемых оптимизационных проблем дает допустимые решения приемлемого качества за приемлемое (например полиномиальное) время. Однако при этом не существует строгого доказательства того, что алгоритм ведет себя именно подобным образом, или мы не знаем такого доказательства19. Поэтому цель эвристики - «пообещать» хорошее поведение алгоритма для типичных примеров рассматриваемой оптимизационной задачи.

Итак, эвристические алгоритмы обычно не гарантируют получение оптимального решения - однако с приемлемо большой вероятностью дают решение, близкое к оптимальному. При этом очень часто необходимы их варианты, т.н. anytime-алгоритмы20 -т.е. алгоритмы реального времени, которые в каждый определенный момент работы имеют лучшее (на данный момент) решение; при этом пользователь в режиме реального времени может просматривать эти псевдо-оптимальные решения, а последовательность таких решений в пределе обычно дает оптимальное.

Самым простым примером эвристических (но не anytime) алгоритмов являются, по-видимому, жадные алгоритмы. Немного упрощая ситуацию, можно сказать, что они последовательно строят решение за несколько шагов, на каждом шаге включая ту «часть допустимого решения», которая в данный момент представляется наиболее выгодной. Например, в задачах минимизации конечных автоматов и дизъюнктивных нормальных форм - это блок (плоскость), добавляющий к текущему решению максимальное число новых клеток, в которых записана 1. А в ЗКВ - элемент матрицы (из тех, которые можно добавить к строящемуся туру), имеющий минимальную стоимость.

19 «You’re far to keen and where and how, and not so hot on why» (Andrew Lloyd Webber and Tim Rice).

20 Аналогично бэктрекингу, краткого русского термина, к сожалению, не существует. Название «алгоритмы реального времени» недостаточное (оно не полностью отражает суть), а «постепенно приближающие псевдооптимальные алгоритмы реального времени» - весьма громоздкое.

На первый взгляд кажется, что жадные эвристики очень хороши - однако для каждой из рассмотренных нами задач можно легко придумать примеры, когда это не так. Нами уже были рассмотрены именно такие примеры - для задач минимизации дизъюнктивных нормальных форм и недетерминированных конечных автоматов [9]. Более того, рассматривая следующий пример, мы увидим, что жадный алгоритм может давать решения, стоимости которых сколь угодно больше оптимальных. Пусть в задаче коммивояжера города (вершины графа) - {V , у2, V Vу6}; стоимости некоторых ребер заданы на рис. 6; стоимости всех не изображенных ребер равны 2. Предположим, что а - некоторое очень большое число. Очевидно, что жадный алгоритм в первую очередь выбирает все ребра стоимости 1. При этом однозначно определяется Гамильтонов тур

v2, Vl v4 v9 vв v), но после выбора ребер стоимости 1 стоимость тура увеличивается еще на а - т.е. становится равной а+521. Однако оптимальным решением является тур

(VI, v4, v3, VI, v5, v6, VI) -его стоимость равна 8. А поскольку мы можем выбрать а сколь угодно большим, то и разность между а+5 и 8 может быть сколь угодно большой.

14 а 1ч

Рис. 6

Мы привели возможные недостатки жадных алгоритмов на малых размерностях рассматриваемых нами оптимизационных задач. В реальных условиях все примеры значительно сложнее приведенных здесь - но из «малых» примеров мы выбрали очень интересные. И очевидно, что в случае больших размерностей эти недостатки должны еще больше «портить жизнь» - т.е. давать неоптимальные решения со значительно большими вероятностями, либо давать решения, более далекие от оптимальных, и т.п. Выхо-

21 «Метились мы в дамки, да масть ушла мимо» (Б. Гребенщиков).

28

дом из такой ситуации является применение более сложных эвристик. Применительно к задаче коммивояжера некоторые подобные эвристики были рассмотрены в работе одного из авторов [19], мы их рассмотрим в части II данной статьи.

Литература:

1. Разборов А. Theoretical Computer Science: взгляд математика // Компьютерра. - 2001. - № 2.

2. Николенко С. Теория и практика сложности // Компьютерра. - 2005. -№ 31.

3. http://habrahabr.ru/ - Habrahabr. - Режим доступа - свободный.

4. Левитин А. Алгоритмы: введение в разработку и анализ. Научно-популярное издание. - М.: Вильямс, 2006.

5. Громкович Ю. Теоретическая информатика. Введение в теорию автоматов, теорию вычислимости, теорию сложности, теорию алгоритмов, рандомизацию, теорию связи и криптографию. - СПб.: БХВ-Петербург, 2010.

6. Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгоритмы. Построение и анализ. - М.: Вильямс, 2012.

7. Гэри М., Джонсон Д. Вычислительные машины и труднорешаемые задачи. - М.: Мир, 1982.

8. Hromkovic J. Algorithmics for Hard Problems. Introduction to Combinatorial Optimization, Randomization, Approximation, and Heuristics. -Springer, 2004.

9. Мельников Б. Научим машину надежде? // Философские проблемы информационных технологий и киберпространства. - 2013. - № 1. -С. 51-64. (Melnikov B. Let us teach computer to hope, don’t we? // Fi-losofskiye problemy informatsionnykh tekhnologiy i kiberprostranstva. -

2013. - No. 1. - P. 51-64.)

10. Гарднер М. От мозаик Пенроуза к надежным шифрам. - М.: Мир, 1993.

11. http://www.zcontest.ru/ - Открытый Зеленоградский турнир. - Режим доступа - свободный.

12. http://acm.sgu.ru/ - Saratov State University: Online Contester. - Режим доступа - свободный.