Опубликован: 27.07.2006 | Уровень: специалист | Доступ: платный
Лекция 9:

Обобщения и применения модели Хопфилда

Задача коммивояжера

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

Существует решение этой задачи, основанное на сетях с обратными связями. Допустим, что города, которые необходимо посетить, помечены буквами A, B, C и D, а расстояния между парами городов есть d_{ab}, d_{bc} и т.д.

Решением является упорядоченное множество из n городов. Задача состоит в отображении его в вычислительную сеть с использованием нейронов в режиме с большой крутизной характеристики ( \lambda приближается к бесконечности). Каждый город представлен строкой из n нейронов. Выход одного и только одного нейрона из них равен единице (все остальные равны нулю). Этот равный единице выход нейрона показывает порядковый номер, в котором данный город посещается при обходе. В табл. 23.1 приведен случай, когда город C посещается первым, город A — вторым, город D — третьим и город B — четвертым. Для такого представления требуется n^2 нейронов — число, которое быстро растет с увеличением числа городов. Длина полученного маршрута была бы равна d_{ca} + d_{ad} + d_{db} + d_{bc}. Так как каждый город посещается только один раз, и в каждый момент посещается лишь один город, то в каждой строке и в каждом столбце имеется по одной единице. Для задачи с n городами всего имеется n! различных маршрутов обхода. Если n = 60, то имеется 6934155\times 10^{78} возможных маршрутов. Если принять во внимание, что в нашей галактике (Млечном Пути) имеется лишь 10^{11} звезд, то станет ясным, что полный перебор всех возможных маршрутов для 1000 городов даже на самом быстром в мире компьютере займет время, сравнимое с геологической эпохой.

город Порядок следования
1 2 3 4
A 0 1 0 0
B 0 0 0 1
C 1 0 0 0
D 0 0 1 0

Продемонстрируем теперь, как сконструировать сеть для решения этой NP-полной проблемы. Каждый нейрон снабжен двумя индексами, которые соответствуют городу и порядковому номеру его посещения в маршруте. Например, OUT_{xj} = 1 показывает, что город x был j -м по порядку городом маршрута.

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

Первое требование удовлетворяется введением следующей, состоящей из трех сумм, функции энергии:

E=\frac A2\sum_{x}\sum_i\sum_{j\ne i} OUT_{xi}OUT_{xj}+
\frac{B}{2}\sum_i\sum_x\sum_{y\ne x}OUT_{xi}OUT_{yi}+\\
+
\frac{C}{2}\left[\left(\sum_x\sum_iOUT_{xi}\right)-n\right]^2,

где A, B и C — некоторые константы. Этим достигается выполнение следующих условий:

  1. Первая тройная сумма равна нулю в том и только в том случае, если каждая строка (город) содержит не более одной единицы.
  2. Вторая тройная сумма равна нулю в том и только в том случае, если каждый столбец (порядковый номер посещения) содержит не более одной единицы.
  3. Третья сумма равна нулю в том и только в том случае, если матрица содержит ровно n единиц. Второе требование — предпочтение коротких маршрутов — удовлетворяется с помощью добавления следующего члена к функции энергии:

    E=\frac{D}{2}\sum_x\sum_{y\ne x}\sum_i d_{xy}
OUT_{xi}(OUT_{y,i+1}+OUT_{y,i-1}),

Заметим, что этот член представляет собой длину любого допустимого маршрута. Для удобства индексы определяются по модулю n, т. е. OUT_{n+j} = OUT_j, a D — некоторая константа.

При достаточно больших значениях A, B и C низкоэнергетические состояния будут представлять допустимые маршруты, а большие значения D гарантируют, что будет найден короткий маршрут.

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

Получаем

w_{xi,yо}=-A\delta_{xy}(1-\delta_{iо}) (не допускает более одной единицы в строке)

-B\delta_{ij}(1-\delta_{xy}) (не допускает более одной единицы в столбце)

-C (глобальное ограничение)

-Dd_{xy}(\delta_{j,i+1}+\delta_{j,i-1}) (член, отвечающий за длину цикла),

где \delta_{ij} = 1, если i = j, в противном случае \delta_{ij} = 0. Кроме того, каждый нейрон имеет смещающий вес x_i, соединенный с +1 и равный C_n.

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

OUT=\frac12[1+\th(NET/U_0)].

Как показали результаты, 16 из 20 прогонов сошлись к допустимому маршруту и около 50% решений оказались кратчайшими маршрутами, что было установлено с помощью полного перебора. Наш результат станет более впечатляющим, если осознать, что имеется 181440 допустимых маршрутов.

Дмитрий Степаненко
Дмитрий Степаненко
Россия
Фанис Галимянов
Фанис Галимянов
Россия, Казань, Татарский государственный гуманетарно-педагогический уневерситет, 2009