Двосмерно претраживање

Двосмерна претрага је алгоритам за претрагу графа који проналази најкраћи пут од почетног до крајњег чвора графа. Извршава две истовремене претраге: једна од почетног чвора, друга од крајњег чвора графа и алгоритам прекида са радом када се ове две претраге нађу на средини графа. Разлог због кога се приступа на овај начин је што је у већини случајева претрага бржа: нпр, у поједностављеном моделу проблема сложености претраге, у оба случаја претраге проширује стабло издавајући фактор б, а растојање од почетног до крајњег чвора графа д, обе ове претраге имају сложеност О(бд/2), и временска сложеност ове две претраге је мања од сложености О(бд) која представља резултат претраге од почетка до краја графа.

Као у алгоритму претраге А*, двосмерна претрага може бити предвођена истраживачком проценом преосталог пута до краја графа или до почетка графа.

Ира Похл је прва дизајнирала и имплементирала двострани претраживачки алгоритам. Ендру Голдберг је дао објашњење тачне границе могућег коришћења верзије двосмерне претраге Дијкстра алгоритма.[1]

Опис уреди

Двосмерно претраживање је облик просторног претраживања од места   до места  , претраживајући од   до   и од   до   истовремено. Овај алгоритам враћа важећи списак путева који ако се примени на  , долази се до  .

Иако се чини да претрага мора бити инверзна за обрнуту претрагу, у ствари је само неопходно пронаћи било који дат чвор  , и чвор   мора имати валидну операцију за сваког од његових родитеља. Ово представља једносмерну улицу у избору налажења домена: није неопходно да се иде у оба правца, али је неопходно када се надјемо на крају графа, да знамо могућу путању до почетка графа.

Обрнута претрага ће увек захтевати инверзне троскове. Формалније, ако је чвор   са родитељем  , онда  , дефинише цену од   до  .

Терминологија и нотација уреди

 
издвојени фактор претраге стабла
 
цена пута од чвора   до чвора  
 
цена пута од чвора до  
 
истраживање процене пута од чвора   до краја графа
 
почетно место
 
крајње место (понекад се обележава и са  )
 
тренутни смер претраге,   за правилан смер, а за уназад је  .
 
обрнути смер претраге,  .
 
претрага стабла у правцу  
 
лишће стабла  
 
чворови стабла   који имају потомке, овај сет садржи чворове који су већ претражени.

Приступ двосмерном претраживању уреди

Двосмерни претраживачи се могу сврстати у три категорије: Front-to-Front, Front-to-Back, и Обимна претрага. Разликују се по функцији коју користе за истраживање.

Фронт-то-Бацк уреди

Фронт-то-Бацк алгоритам израчунава вредност   чвора   користећи процену измедју   и корена супротне претраге стабла,   или  .

Фронт-то-Бацк алгоритам је највише истраживан од све три категорије. Тренутни најбољи алгоритам је БиМАX-БС*Ф алгоритам.

Фронт-то-Фронт уреди

Фронт-то-Фронт алгоритам израчунава вредност   чвора   користећи раздаљину измедју чвора   и подскуп  . Прави пример би био БХФФА (Двосмерна претрага Фронт-то-Фронт алгоритмом), где је функција   дефинисана као минимум истраживачких процена између тренутног чвора и њему супротним чворовима. Формално:

 

где   враћа прихватљиву истраживачку процену о дистанци између чворова   и  .

Фронт-то-Фронт пати од тога да буде претерано рачунски захтеван. У сваком тренутку када се чвор   стави у отворену листу, његова вредност мора бити израчуната као  . Ово укључује израчунавање процене од чвора   до свих чворова који се налазе у   сет-у.   сет се експоненцијално повећава за све области у којима је  .

Референце уреди

  • де Цхампеауx, Деннис; Синт, Ление (1977), „Ан импровед бидирецтионал хеуристиц сеарцх алгоритхм”, Јоурнал оф тхе АЦМ, 24 (2): 177—191, дои:10.1145/322003.322004 .
  • де Цхампеауx, Деннис (1983), „Бидирецтионал хеуристиц сеарцх агаин”, Јоурнал оф тхе АЦМ, 30 (1): 22—32, дои:10.1145/322358.322360 .
  • Похл, Ира (1971), „Би-дирецтионал Сеарцх”, Ур.: Мелтзер, Бернард; Мицхие, Доналд, Мацхине Интеллигенце, 6, Единбургх Университy Пресс, стр. 127—140 .
  • Русселл, Стуарт Ј.; Норвиг, Петер (2002), „3.4 Унинформед сеарцх стратегиес”, Артифициал Интеллигенце: А Модерн Аппроацх (2нд изд.), Прентице Халл .