Алгоритм поиска Hill Climbing Применяется к коммивояжеру

Допустим, нам дано 7 городов A,B,C,D,E,F,G, и у нас есть начальное состояние ABCDEFGA с некоторой стоимостью 'x'. Я не понимаю, какими будут потомки этого узла. продолжится ли вторая итерация алгоритма восхождения на холм?

Будет ли узел ABCDEFGA, являющийся начальным состоянием, иметь 6 потомков? Как и в

второй итерацией будет ACBDEFGA, ADCBEFGA, AECDBFGA, AFCDEBGA, AGCDEFBA?

Третья итерация: допустим, ADCBEFGA выбран во второй итерации, тогда будет ли третья итерация обменивать город "C" на все другие города и так далее?

Я просто хотел бы знать, правильно ли я понимаю алгоритм.


person anonuser0428    schedule 20.02.2013    source источник


Ответы (1)


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

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

Просто поменяв местами второй город на какой-нибудь другой, вы получите следующее:

# first iteration
start: ABCDEFGA
next: ACBDEFGA, ADCBEFGA, AECDBFGA, AFCDEBGA, AGCDEFBA

# second iteration
start: ADCBEFGA
next: ACDBEFGA, ABCDEFGA, AECBDFGA, AFCBEDGA, AGCBEFDA

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

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

person Tyler Ferraro    schedule 20.02.2013
comment
Но если мы продолжим менять одно и то же место, не приведет ли это к множеству избыточных состояний, как в этом случае, в конце второй итерации в «следующей» строке у нас снова повторяется начальное состояние. Это допустимо? - person anonuser0428; 20.02.2013
comment
Да, это приведет к избыточным состояниям, но оно все равно будет менее подходящим, чем ваше текущее решение, и поэтому никогда не будет двигаться назад. Но этот алгоритм не является оптимальным алгоритмом для решения задачи коммивояжера по этой, среди прочего, причине. - person Tyler Ferraro; 20.02.2013