Двонапра́влений по́шук — ускладнений алгоритм пошуку ушир або пошуку углиб, в основі якого лежить така ідея, що можна одночасно проводити два пошуки (в прямому напрямку, від початкового стану, та у зворотному напрямку, від цілі), зупиняючись після того, як два процеси пошуку зустрінуться на середині (Рис. 1).
Ідея
Нехай b — максимальний коефіцієнт розгалуження дерева пошуку та d — глибина оптимального розв'язку в дереві пошуку. Як показано на рис. 1, значення bd/2 + bd/2 набагато менше, ніж bd, або, як показано на малюнку, площа двох невеликих кіл менше площі одного великого кола з центром на початку пошуку, який охоплює ціль пошуку.
Двонаправлений пошук реалізується за допомогою методу, у якому передбачається перевірка в одному або обох процесах пошуку кожного вузла перед його розгортанням для визначення того, чи не знаходиться він на периферії іншого дерева пошуку; у випадку позитивного результату перевірки рішення знайдено. Наприклад, якщо задача має рішення на глибині d = 6 і в кожному напрямку здійснюється пошук ушир із послідовним розгортанням по одному вузлу, то у найгіршому випадку ці два процеси пошуку зустрінуться, якщо у кожному з них будуть розгорнуті усі вузли на глибині 3, крім одного. Це означає, що при b = 10 буде сформована загальна кількість вузлів, рівне 22 200, а не 11 111 100, як при стандартному пошуку ушир. Перевірка належності вузла до іншого дерева пошуку може бути виконана за сталий час за допомогою хеш-таблиці, тому часова складність двонаправленого пошуку визначається як O(bd/2). У пам'яті необхідно зберігати щонайменше одне з дерев пошуку, для того, щоб можна було виконати перевірку належності до іншого дерева, тому просторова складність також визначається як O(bd/2). Такі вимоги до простору є одним з найістотніших недоліків двонаправленого пошуку. Цей алгоритм є повним та оптимальним (при однакових вартостях етапів), якщо обидва процеси пошуку здійснюються ушир; інші сполучення методів можуть характеризуватися відсутністю повноти, оптимальності або того та іншого.
Принцип реалізації
Двонаправлений пошук стає привабливим завдяки зменшенню часової складності, але постає питання, як організувати пошук у зворотному напрямку. Це не так легко як здається на перший погляд. Припустимо, що попередниками вузла n, що визначаються за допомогою функції Pred(n), є всі ті вузли, для яких n слугує наступником. Для двонаправленого пошуку потрібно, щоб функція визначення попередника Pred(n) була ефективно обчислюваною. Напростішим є такий випадок, коли всі дії у просторі станів оборотні таким чином, що Pred(n) = Succ-1(n), а інші випадки можуть потребувати проявити значну винахідливість.
Розглянемо питання про те, що мається на увазі під поняттям «ціль» при пошуку «у зворотному напрямку від цілі». В задачі гри у вісім та пошуку маршруту на графі є тільки один цільовий стан, тому зворотний пошук дуже схожий на прямий пошук. Якщо ж є декілька явно перерахованих цільових станів, то може бути створений новий фіктивний цільовий стан, безпосередніми попередниками якого є всі фактичні цільові стани. Інакше, формуванню деяких надлишкових вузлів можна запобігти, розглядаючи множину цільових станів як єдиний цільовий стан, кожним з попередників якого є також множина станів, а саме, множина станів, що має відповідного наступника у множині цільових станів.
Найскладнішим випадком двонаправленого пошуку є така задача, в якій для перевірки цілі дається тільки неявний опис деякої (можливо, великої) множини цільових станів, наприклад всіх станів, що відповідають перевірці цілі «мат» у грі в шахи. При зворотному пошуку треба було б створити компактні описи «всіх станів, що дозволяють поставити мат за допомогою ходу m1» і т. д.; і ці описи треба було б звіряти зі станами, що формуються під час прямого пошуку. Загального способу ефективного рішення такої проблеми не існує.
Посилання
- Реалізація на C++ (aisearch.tgz ) на www.cs.cmu.edu [ 9 жовтня 2015 у Wayback Machine.]
Література
- Стюарт Рассел & Питер Норвиг Часть 2. Решение проблем // Искусственный интеллект (Современный подход) = Artificial Intelligence (A Modern Approach) — 2-е изд. — ФГУП. «Печатный двор» им. А. М. Горького: Вильямс, 2006. — С. 135—136. — .
- de Champeaux, Dennis; Sint, Lenie (1977), «An improved bidirectional heuristic search algorithm», Journal of the ACM 24 (2): 177—191, doi:10.1145/322003.322004.
- de Champeaux, Dennis (1983), «Bidirectional heuristic search again», Journal of the ACM 30 (1): 22-32, doi:10.1145/322358.322360.
- Pohl, Ira (1971), «Bi-directional Search», in Meltzer, Bernard; Michie, Donald, Machine Intelligence, 6, Edinburgh University Press, pp. 127-140.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Dvonapra vlenij po shuk uskladnenij algoritm poshuku ushir abo poshuku uglib v osnovi yakogo lezhit taka ideya sho mozhna odnochasno provoditi dva poshuki v pryamomu napryamku vid pochatkovogo stanu ta u zvorotnomu napryamku vid cili zupinyayuchis pislya togo yak dva procesi poshuku zustrinutsya na seredini Ris 1 Ris 1 Shema dvonapravlenogo poshuku Tut vin maye uspishno zavershitisya pislya togo yak odna z gilok sho jde z pochatkovogo vuzla zustrinetsya z gilkoyu z cilovogo vuzlaIdeyaNehaj b maksimalnij koeficiyent rozgaluzhennya dereva poshuku ta d glibina optimalnogo rozv yazku v derevi poshuku Yak pokazano na ris 1 znachennya bd 2 bd 2 nabagato menshe nizh bd abo yak pokazano na malyunku plosha dvoh nevelikih kil menshe ploshi odnogo velikogo kola z centrom na pochatku poshuku yakij ohoplyuye cil poshuku Dvonapravlenij poshuk realizuyetsya za dopomogoyu metodu u yakomu peredbachayetsya perevirka v odnomu abo oboh procesah poshuku kozhnogo vuzla pered jogo rozgortannyam dlya viznachennya togo chi ne znahoditsya vin na periferiyi inshogo dereva poshuku u vipadku pozitivnogo rezultatu perevirki rishennya znajdeno Napriklad yaksho zadacha maye rishennya na glibini d 6 i v kozhnomu napryamku zdijsnyuyetsya poshuk ushir iz poslidovnim rozgortannyam po odnomu vuzlu to u najgirshomu vipadku ci dva procesi poshuku zustrinutsya yaksho u kozhnomu z nih budut rozgornuti usi vuzli na glibini 3 krim odnogo Ce oznachaye sho pri b 10 bude sformovana zagalna kilkist vuzliv rivne 22 200 a ne 11 111 100 yak pri standartnomu poshuku ushir Perevirka nalezhnosti vuzla do inshogo dereva poshuku mozhe buti vikonana za stalij chas za dopomogoyu hesh tablici tomu chasova skladnist dvonapravlenogo poshuku viznachayetsya yak O bd 2 U pam yati neobhidno zberigati shonajmenshe odne z derev poshuku dlya togo shob mozhna bulo vikonati perevirku nalezhnosti do inshogo dereva tomu prostorova skladnist takozh viznachayetsya yak O bd 2 Taki vimogi do prostoru ye odnim z najistotnishih nedolikiv dvonapravlenogo poshuku Cej algoritm ye povnim ta optimalnim pri odnakovih vartostyah etapiv yaksho obidva procesi poshuku zdijsnyuyutsya ushir inshi spoluchennya metodiv mozhut harakterizuvatisya vidsutnistyu povnoti optimalnosti abo togo ta inshogo Princip realizaciyiDvonapravlenij poshuk staye privablivim zavdyaki zmenshennyu chasovoyi skladnosti ale postaye pitannya yak organizuvati poshuk u zvorotnomu napryamku Ce ne tak legko yak zdayetsya na pershij poglyad Pripustimo sho poperednikami vuzla n sho viznachayutsya za dopomogoyu funkciyi Pred n ye vsi ti vuzli dlya yakih n sluguye nastupnikom Dlya dvonapravlenogo poshuku potribno shob funkciya viznachennya poperednika Pred n bula efektivno obchislyuvanoyu Naprostishim ye takij vipadok koli vsi diyi u prostori staniv oborotni takim chinom sho Pred n Succ 1 n a inshi vipadki mozhut potrebuvati proyaviti znachnu vinahidlivist Rozglyanemo pitannya pro te sho mayetsya na uvazi pid ponyattyam cil pri poshuku u zvorotnomu napryamku vid cili V zadachi gri u visim ta poshuku marshrutu na grafi ye tilki odin cilovij stan tomu zvorotnij poshuk duzhe shozhij na pryamij poshuk Yaksho zh ye dekilka yavno pererahovanih cilovih staniv to mozhe buti stvorenij novij fiktivnij cilovij stan bezposerednimi poperednikami yakogo ye vsi faktichni cilovi stani Inakshe formuvannyu deyakih nadlishkovih vuzliv mozhna zapobigti rozglyadayuchi mnozhinu cilovih staniv yak yedinij cilovij stan kozhnim z poperednikiv yakogo ye takozh mnozhina staniv a same mnozhina staniv sho maye vidpovidnogo nastupnika u mnozhini cilovih staniv Najskladnishim vipadkom dvonapravlenogo poshuku ye taka zadacha v yakij dlya perevirki cili dayetsya tilki neyavnij opis deyakoyi mozhlivo velikoyi mnozhini cilovih staniv napriklad vsih staniv sho vidpovidayut perevirci cili mat u gri v shahi Pri zvorotnomu poshuku treba bulo b stvoriti kompaktni opisi vsih staniv sho dozvolyayut postaviti mat za dopomogoyu hodu m1 i t d i ci opisi treba bulo b zviryati zi stanami sho formuyutsya pid chas pryamogo poshuku Zagalnogo sposobu efektivnogo rishennya takoyi problemi ne isnuye PosilannyaRealizaciya na C aisearch tgz na www cs cmu edu 9 zhovtnya 2015 u Wayback Machine LiteraturaStyuart Rassel amp Piter Norvig Chast 2 Reshenie problem Iskusstvennyj intellekt Sovremennyj podhod Artificial Intelligence A Modern Approach 2 e izd FGUP Pechatnyj dvor im A M Gorkogo Vilyams 2006 S 135 136 ISBN 5 8459 0887 6 de Champeaux Dennis Sint Lenie 1977 An improved bidirectional heuristic search algorithm Journal of the ACM 24 2 177 191 doi 10 1145 322003 322004 de Champeaux Dennis 1983 Bidirectional heuristic search again Journal of the ACM 30 1 22 32 doi 10 1145 322358 322360 Pohl Ira 1971 Bi directional Search in Meltzer Bernard Michie Donald Machine Intelligence 6 Edinburgh University Press pp 127 140