Căutarea bidirecțională pe lățime (sau adâncime) [1] [2] este un algoritm sofisticat de căutare pe lățime (sau adâncime ) , ideea căruia este de a forma un proces de căutare de la începutul ( căutare înainte ) și de la vârful final ( revers ). căutare ) a graficului .
Găsirea căii dorite se reduce la determinarea căilor de la inițial la unele intermediare și de la acesta până la vârful final. Implementat prin verificarea unuia sau ambelor procese atunci când o frunză a unui arbore de căutare se potrivește cu o frunză a altuia, după care sunt extrase căile către acel element. Conectând căile obținem calea dorită. Dacă două căutări sunt efectuate în paralel , acest lucru economisește și mai mult timp pentru a obține calea dorită, comparativ cu o căutare unidirecțională.
Complexitatea întregului algoritm este estimată ca suma complexității căutărilor înainte și înapoi, verificarea apartenenței egală cu o operație, timp constant (O (n)), acces la tabelul hash .
Prea dependent de situația specifică dacă căutarea nu este pe un arbore n-ari .
Căutarea bidirecțională, având în vedere un singur element de început și de sfârșit, poate îmbunătăți căutarea unidirecțională pe lățimea întâi, de obicei cu un factor de 2. Cel mai dificil caz pentru o căutare bidirecțională este o astfel de problemă în care este dată doar o descriere implicită a unui set (posibil foarte mare) de stări țintă pentru a verifica scopul, de exemplu, toate stările corespunzătoare șahmat-ului obiectivului „Șah”. „la șah . În căutarea inversă, ar fi necesar să se creeze descrieri compacte ale tuturor stărilor care permit șahmat cu mișcări etc.; iar aceste descrieri ar trebui verificate în raport cu stările generate de căutarea directă. Nu există o modalitate generală de a rezolva eficient o astfel de problemă.
Algoritmul constă din:
Complexitatea implementării constă în algoritmul de căutare inversă.
Algoritmi de căutare grafică | ||
---|---|---|
Metode neinformate | ||
Metode informate | ||
Comenzi rapide | ||
Arborele de întindere minim | ||
Alte |