Obousměrné prohledávání šířky (nebo hloubky) [1] [2] je sofistikovaný algoritmus prohledávání šířky (nebo hloubky ) , jehož myšlenkou je vytvořit proces vyhledávání od počátečního ( dopředné vyhledávání ) a od konečného vrcholu ( zpět ). vyhledávání ) grafu .
Nalezení požadované cesty spočívá v určení cest od počátečního k nějakému mezilehlému a od něj ke konečnému vrcholu. Implementováno kontrolou jednoho nebo obou procesů, když se list jednoho vyhledávacího stromu shoduje s listem jiného, načež jsou extrahovány cesty k tomuto prvku. Spojením cest získáme požadovanou cestu. Pokud jsou paralelně prováděna dvě vyhledávání , ušetří se tím ještě více času na získání požadované cesty ve srovnání s jednosměrným vyhledáváním.
Složitost celého algoritmu se odhaduje jako součet složitosti dopředného a zpětného vyhledávání, kontrola členství rovná jedné operaci, konstantní čas (O (n)), přístup k hashovací tabulce .
Příliš závislé na konkrétní situaci, pokud hledání není na n-árním stromě .
Obousměrné vyhledávání s jedním počátečním a koncovým prvkem může zlepšit jednosměrné vyhledávání na šířku, obvykle faktorem 2. Nejobtížnějším případem pro obousměrné vyhledávání je takový problém, ve kterém je pro kontrolu cíle uveden pouze implicitní popis nějaké (možná velmi velké) množiny cílových stavů, například všechny stavy odpovídající matu cíle „Šachy "v šachu . " Při reverzním vyhledávání by bylo nutné vytvořit kompaktní popisy všech stavů, které umožňují mat s tahy atd.; a tyto popisy by musely být porovnány se stavy generovanými přímým vyhledáváním. Neexistuje obecný způsob, jak takový problém efektivně vyřešit.
Algoritmus se skládá z:
Složitost implementace spočívá v algoritmu zpětného vyhledávání.
Algoritmy vyhledávání grafů | ||
---|---|---|
Neinformované metody | ||
Informované metody | ||
Zkratky | ||
Minimální kostra | ||
jiný |