Чи монотонна відстань на Манхеттені, коли вона використовується як евристична функція?


25

Я маю квадратну карту. Допускається лише горизонтальний і вертикальний рух (без діагоналей). Вартість руху завжди 1.

Я реалізую алгоритм A * на цій карті, використовуючи відстань на Манхеттені як евристику відстані. Чи відповідає це евристика? Чи можу я уникнути перевірки g(node)на наявність вузлів, які знаходяться у ЗАКРИТИЙ набір?

Редагувати: Під послідовними маю на увазі монотонні.


1
Якщо вартість вашої руху рівномірна на кожній плитці, ви можете замінити A * на Пошук
стрибків

Гей, це приємно!
Еміліано

Відповіді:


10

Насправді відповісти на ваше запитання: відстань manhatten є послідовною, коли ви обмежені рухатися вертикально / горизонтально по незваженій сітці (це може бути легко показано визначенням у wikipedia) . Так, так, у вашому випадку ви можете уникнути повторної перевірки вузлів у закритому наборі.

Однак, якщо ви дозволите рух по діагоналі або під кутом будь-якого кута, відстань від людини стає недопустимою, оскільки вона завищує діагональні витрати, що обов'язково означає, що вона не є послідовною.


Так, саме таку відповідь я шукав. Було б непогано знати, що станеться, якщо євристична функція h(x) = min(manhattan(p1), manhattan(p2))(тобто, p1 або p2 - хороша кінцева точка, і я хочу досягти найближчої). Це h(x)все ще монотонно?
Еміліано

1
@happy_emi: Так, якщо h(x, p1)і h(x, p2)будуть послідовними, то min(h(x,p1), h(x,p2))вони також будуть послідовними. Це легко показати з визначення на wikipedia (нам би потрібно було показати, що min(h(x, p1), h(x, p2)) <= distance(x,y) + min(h(y, p1), h(y, p2))для всіх вузлів xі yз краєм між ними. Тепер припустимо, що h(x, p1)це мінімум; чи можете ви показати, що це, безумовно, <=права частина, використовуючи той факт, що обидві евристики є послідовними?)
BlueRaja - Danny Pflughoeft

31

Так, відстань на Манхеттені між двома точками завжди однакова, як і регулярна відстань між ними. Можна подумати, що відстань на Манхеттені - це компоненти X і Y лінії, що проходить між двома точками.

Це зображення ( з Вікіпедії ) це добре ілюструє:

Манхеттенські відстані

The Зелена лінія фактичне відстань.

В синіх , червоних і жовтих лініях все є один і той же Manhattan відстань (12 одиниць). Незалежно від того, яку комбінацію рухів вгору та праворуч ви малюєте від нижньої лівої точки до правої знизу, ви отримаєте однакову загальну відстань на Манхеттені.


2
Чудова відповідь: коротка, мила, до речі і з гарною картиною.
Том 'Блакитний' Піддок

1
Ця відповідь близька, але неправильна. На цьому зображенні не видно, що відстань на Манхеттені є послідовною (адже, якщо ви вважаєте, що зелена лінія є відстані, вона не є узгодженою!) , І міркування, що йому не потрібно повторно перевіряти вузли, оскільки "відстань на Манхеттені між два пункти завжди однакові " не дотримується (твердження також справедливо h(x) = 1000, що, очевидно, не відповідає) . Він може уникнути повторної перевірки вузлів, але лише тому, що відстань Манхеттена послідовна, чого ця відповідь не показує.
BlueRaja - Danny Pflughoeft

2
Я вважаю, що за визначенням, яке ви пов'язали, відстань на Манхеттені послідовна. Відстань зеленої лінії використовувала б іншу евристику. Червона, синя та жовта лінії показують, що відстань між двома вузлами залишається однаковою (при використанні одного і того ж евристичного). При наближенні ближче зменшується евристичність, а просування далі - збільшує евристичність. Це відповідає монотонній вимозі ОП. По мірі побудови графіка з вузлом на кожному "перетині" відстань на Манхеттені узгоджується. Якби це був інший сценарій (на зразок дозволу руху по діагоналі), евристика була б поганою.
MichaelHouse

2
Я вже казав, що Відстань на Манхеттені послідовна, але не з тих причин, які ви згадуєте. Ваша відповідь не демонструє послідовності, а також не міркує в коментарях. "Послідовний / монотонний евристичний" має чітке визначення (наведене в моєму вище посиланні) , що не є тотожним монотонною функцією, яку ви, здається, плутаєте. Заявлення "наближення ближче зменшує евристичність, а віддалення далі збільшує евристичність" недостатньо для того, щоб показати його послідовність, наприклад. 2*manhattenзадовольняє це, але не є послідовним.
BlueRaja - Danny Pflughoeft

3
Я не знаю, чому ви кажете, що це неправильно , ви, здається, наполягаєте, що ця відповідь неповна . Доказ у вашій відповіді здається таким же слабким: "дистанція на Манхеттені послідовна ...", ви продовжуєте повторювати оригінальні специфікації питання, випливаючи з того, як це було б неприпустимо, якби сценарій був іншим . Я не відчував, ніби відповідь вимагає повного математичного підтвердження. Якщо ви вважаєте, що це питання вимагає цього, то, будь ласка, включіть його у свою відповідь, і я буду голосувати за нього. Дякую за конструктивну критику.
MichaelHouse

6

У продовження відповіді Byte56 я хотів би зазначити, що у вашому конкретному наборі даних використання дистанції Манхеттена як вашої евристичної функції насправді завжди буде ідеальним евристичним в тому сенсі, що воно завжди повертає фактичну вартість шляху (якщо припустити, що існує нічого не перекриває стежки).

Слід також зазначити, що всі вузли в правильному напрямку (або по горизонталі, або по вертикалі) дадуть однакову очікувану відстань (адже до мети існує багато однаково коротких шляхів). Ви повинні знати, що ваша черга пріоритетів (відкритий набір) повинна, у разі зв'язаних пріоритетів, видалити спочатку останній доданий вузол (LIFO - Last In First Out). Роблячи це, ви вивчите лише ті вузли, які опиняться на оптимальному шляху . Якщо ви вивчите однаково підходящі вузли FIFO (First In First Out), ви ефективно вивчите всі вузли, які є частиною найкращого шляху. Ця проблема виникає через те, що до вузла цілі існує кілька однаково хороших шляхів.


"(якщо припустити, що нічого не блокує шлях)" - це досить велике припущення. Якщо нічого не блокує шлях, не потрібно починати алгоритм пошуку шляху!
BlueRaja - Danny Pflughoeft

@ BlueRaja-DannyPflughoeft: Це правда, це була лише думка, що вискакувала, дивлячись на образ Byte56. Решта все ж правда.
Торкіл Холм-Якобсен

4

Я не впевнений, що ви маєте на увазі під "завжди" послідовним. Чи незалежна відстань від Манхеттена на нерухомій сітці від пройденого шляху? Так, як сказано у відповіді Byte56.

Однак, наприклад, відстань на Манхеттені не є інваріантною при обертаннях. Наприклад, відстань Манхеттена ( L1-норма ) між початком і точкою (10,10)є |10-0| + |10-0| = 20. Однак якщо ви обертаєте свої координати на 45 градусів (тож тепер ваша фіксована точка лежить уздовж одного з напрямків сітки), ви зараз знайдете ту саму точку, якою є (10sqrt(2),0)відстань на Манхеттені від початку 10sqrt(2)~14.14.


+1 для вказівки на це; Ото, Манхеттен відстань є інваріантним щодо 90-градусних поворотів, які на насправді тільки ті , які можуть бути зроблені «послідовно» на дискретній сітці.
Стівен Стадницький

1
Хороший улов, хоч він і згадував, що дозволяється лише горизонтальний і вертикальний рух.
Торкіл Холм-Якобсен

1
Первісне питання стосувалося послідовності, як у монотонності.
Еміліано
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.