Россия |
Обобщения и применения модели Хопфилда
Задача коммивояжера
Задача коммивояжера является оптимизационной задачей, часто возникающей на практике. Она может быть сформулирована следующим образом: для некоторой группы городов с заданными расстояниями между ними требуется найти кратчайший маршрут с посещением каждого города один раз и с возвращением в исходную точку. Было доказано, что эта задача принадлежит большому множеству задач, называемых "NP-полными" (недетерминистски полиномиальными). Для NP-полных задач не известно лучшего метода решения, чем полный перебор всех возможных вариантов, и, по мнению большинства математиков, маловероятно, чтобы лучший метод был когда-либо найден. Так как такой полный поиск практически неосуществим для большого числа городов, то эвристические методы используются для нахождения приемлемых, хотя и неоптимальных решений.
Существует решение этой задачи, основанное на сетях с обратными
связями. Допустим, что города, которые необходимо посетить, помечены
буквами ,
,
и
, а
расстояния между парами городов есть
,
и т.д.
Решением является упорядоченное множество из городов. Задача
состоит в отображении его в вычислительную сеть с использованием
нейронов в режиме с большой крутизной характеристики (
приближается к бесконечности). Каждый город представлен строкой из
нейронов. Выход одного и только одного нейрона из них равен единице (все
остальные равны нулю). Этот равный единице выход нейрона показывает
порядковый номер, в котором данный город посещается при обходе. В
табл. 23.1 приведен случай, когда город
посещается первым, город
— вторым, город
— третьим и город
— четвертым. Для такого
представления требуется
нейронов — число, которое быстро
растет с
увеличением числа городов. Длина полученного маршрута была бы равна
Так как каждый город
посещается только
один раз, и в каждый момент посещается лишь один город, то в каждой
строке и в каждом столбце имеется по одной единице. Для задачи с
городами всего имеется
! различных маршрутов обхода. Если
, то
имеется
возможных маршрутов. Если принять во
внимание, что в нашей галактике (Млечном Пути) имеется лишь
звезд, то станет ясным, что полный перебор всех возможных маршрутов для
1000 городов даже на самом быстром в мире компьютере займет время,
сравнимое с геологической эпохой.
Продемонстрируем теперь, как сконструировать сеть для решения этой
NP-полной проблемы. Каждый нейрон снабжен двумя индексами, которые
соответствуют городу и порядковому номеру его посещения в маршруте.
Например, показывает, что город
был
-м по порядку
городом маршрута.
Функция энергии должна удовлетворять двум требованиям: во-первых, должна быть малой только для тех решений, которые имеют по одной единице в каждой строке и в каждом столбце; во-вторых, должна оказывать предпочтение решениям с короткой длиной маршрута.
Первое требование удовлетворяется введением следующей, состоящей из трех сумм, функции энергии:
![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}+\\](/sites/default/files/tex_cache/8c4889ea742a874e8b2cf017fbfcdca0.png)
![+
\frac{C}{2}\left[\left(\sum_x\sum_iOUT_{xi}\right)-n\right]^2,](/sites/default/files/tex_cache/caf59de97f6963a00f67e2798cd9aee7.png)
где ,
и
— некоторые константы.
Этим достигается выполнение
следующих условий:
- Первая тройная сумма равна нулю в том и только в том случае, если каждая строка (город) содержит не более одной единицы.
- Вторая тройная сумма равна нулю в том и только в том случае, если каждый столбец (порядковый номер посещения) содержит не более одной единицы.
-
Третья сумма равна нулю в том и только в том случае, если матрица содержит ровно
единиц. Второе требование — предпочтение коротких маршрутов — удовлетворяется с помощью добавления следующего члена к функции энергии:
Заметим, что этот член представляет собой длину любого допустимого
маршрута. Для удобства индексы определяются по модулю , т. е.
, a
— некоторая константа.
При достаточно больших значениях ,
и
низкоэнергетические состояния будут представлять допустимые маршруты, а
большие значения
гарантируют, что будет найден короткий
маршрут.
Теперь зададим значения весов, т. е. установим соответствие между членами в функции энергии и членами общей формы.
Получаем
(не допускает более
одной
единицы в строке)
(не допускает более одной единицы в
столбце)
(глобальное ограничение)
(член, отвечающий за
длину
цикла),
где , если
, в противном
случае
Кроме
того, каждый нейрон имеет смещающий вес
, соединенный с
и
равный
Был проведен эксперимент, в котором задача коммивояжера была решена для 10 городов. В этом случае возбуждающая функция была равна
![OUT=\frac12[1+\th(NET/U_0)].](/sites/default/files/tex_cache/0b9780ff2f1dea0425ed3ede088e18b1.png)
Как показали результаты, 16 из 20 прогонов сошлись к допустимому маршруту и около 50% решений оказались кратчайшими маршрутами, что было установлено с помощью полного перебора. Наш результат станет более впечатляющим, если осознать, что имеется 181440 допустимых маршрутов.