Small set (combinatorics): Difference between revisions

From formulasearchengine
Jump to navigation Jump to search
en>Austinmohr
m typo
en>BG19bot
m WP:CHECKWIKI error fix for #99. Broken sup tag. Do general fixes if a problem exists. -, replaced: <sup>''n''</sub> → <sup>''n''</sup> using AWB (9957)
 
Line 1: Line 1:
{{graph search algorithm}}
Hi there, I am Sophia. Distributing production is how he makes a residing. Kentucky is where I've always been living. To perform lacross is some thing I truly enjoy doing.<br><br>Also visit my web blog: online psychics ([http://jplusfn.gaplus.kr/xe/qna/78647 http://jplusfn.gaplus.kr/])
'''Bidirectional search''' is a [[graph search algorithm]] that finds a [[shortest path]] from an initial [[vertex (graph theory)|vertex]] to a goal vertex in a [[directed graph]]. It runs two simultaneous searches: one forward from the initial state, and one backward from the goal, stopping when the two meet in the middle. The reason for this approach is that in many cases it is faster: for instance, in a simplified model of search problem complexity in which both searches expand a [[tree (graph theory)|tree]] with [[branching factor]] ''b'', and the distance from start to goal is ''d'', each of the two searches has complexity ''O''(''b''<sup>''d''/2</sup>) (in [[Big O notation]]), and the sum of these two search times is much less than the ''O''(''b''<sup>''d''</sup>) complexity that would result from a single search from the beginning to the goal.
 
As in [[A*]] search, bi-directional search can be guided by a [[Heuristic (computer science)|heuristic]] estimate of the remaining distance to the goal (in the forward tree) or from the start (in the backward tree).
 
Ira Pohl was the first one to design and implement a bi-directional heuristic search algorithm.{{Citation needed|date=November 2013}} Andrew Goldberg and others explained the correct termination conditions for the bidirectional version of [[Dijkstra’s Algorithm]].<ref name="goldberg">[http://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/EPP%20shortest%20path%20algorithms.pdf Efficient Point-to-Point Shortest Path Algorithms]</ref>
 
== Description ==
 
A Bidirectional Heuristic Search is a [[state space search]] from some state <math>s</math> to another state <math>t</math>, searching from <math>s</math> to <math>t</math> and from <math>t</math> to <math>s</math> simultaneously (or quasi-simultaneously if done on a sequential machine). It returns a valid list of operators that if applied to <math>s</math> will give us <math>t</math>.
 
While it may seem as though the operators have to be invertible for the reverse search, it is only necessary to be able to find, given any node <math>n</math>, the set of parent nodes of <math>n</math> such that there exists some valid operator from each of the parent nodes to <math>n</math>. This has often been likened to a one-way street in the route-finding domain: it is not necessary to be able to travel down both directions, but it is necessary when standing at the end of the street to determine the beginning of the street as a possible route.
 
Similarly, for those edges that have inverse arcs (i.e. arcs going in both directions) it is not necessary that each direction be of equal cost. The reverse search will always use the inverse cost (i.e. the cost of the arc in the forward direction). More formally, if <math>n</math> is a node with parent <math>p</math>, then <math>k_1(p,n) = k_2(n,p)</math>, defined as being the cost from <math>p</math> to <math>n</math>.(Auer Kaindl 2004)
 
=== Terminology and notation ===
 
; <math> b </math> : the [[Branching_factor | branching factor]] of a search tree
; <math> k(n,m) </math> : the cost associated with moving from node <math> n </math> to node <math> m </math>
; <math> g(n) </math> : the cost from the root to the node <math> n </math>
; <math> h(n) </math> : the heuristic estimate of the distance between the node <math> n </math> and the goal
; <math> s </math> : the start state
; <math> t </math> : the goal state (sometimes <math> g </math>, not to be confused with the function)
; <math> d </math> : the current search direction. By convention, <math> d </math> is equal to 1 for the forward direction and 2 for the backward direction (Kwa 1989)
; <math> d' </math> : the opposite search direction (i.e. <math> d' = 3 - d </math>)
; <math> TREE_d </math> : the search tree in direction d. If <math> d = 1 </math>, the root is <math> s </math>, if <math> d = 2 </math>, the root is <math> t </math>
; <math> OPEN_d </math> : the leaves of <math> TREE_d </math> (sometimes referred to as <math> FRINGE_d </math>). It is from this set that a node is chosen for expansion. In bidirectional search, these are sometimes called the search 'frontiers' or 'wavefronts', referring to how they appear when a search is represented graphically. In this metaphor, a 'collision' occurs when, during the expansion phase, a node from one wavefront is found to have successors in the opposing wavefront.
; <math> CLOSED_d </math> : the non-leaf nodes of <math> TREE_d </math>. This set contains the nodes already visited by the search
 
== Approaches for Bidirectional Heuristic Search ==
 
Bidirectional algorithms can be broadly split into three categories: Front-to-Front, Front-to-Back (or Front-to-End), and Perimeter Search (Kaindl Kainz 1997). These differ by the function used to calculate the heuristic.
 
=== Front-to-Back ===
 
Front-to-Back algorithms calculate the <math> h </math> value of a node <math> n </math> by using the heuristic estimate between <math> n </math> and the root of the opposite search tree, <math> s </math> or <math> t </math>.
 
Front-to-Back is the most actively researched of the three categories. The current best algorithm (at least in the [[Fifteen puzzle]] domain) is the BiMAX-BS*F algorithm, created by Auer and Kaindl (Auer, Kaindl 2004).
 
=== Front-to-Front ===
 
Front-to-Front algorithms calculate the <math> h </math> value of a node <math> n </math> by using the heuristic estimate between <math> n </math> and some subset of <math> OPEN_d' </math>. The canonical example is that of the BHFFA (Bidirectional Heuristic Front-to-Front Algorithm) (de Champeaux 1977/1983), where the <math> h </math> function is defined as the minimum of all heuristic estimates between the current node and the nodes on the opposing front. Or, formally:
 
<math> h_d(n) = \min_i \left \{H(n,o_i) | o_i \in OPEN_{d'} \right \} </math>
 
where <math> H(n,o) </math> returns an admissible (i.e. not overestimating) heuristic estimate of the distance between nodes <math> n </math> and <math> o </math>.
 
Front-to-Front suffers from being excessively computationally demanding. Every time a node <math> n </math> is put into the open list, its <math> f = g + h </math> value must be calculated. This involves calculating a heuristic estimate from <math> n </math> to every node in the opposing <math> OPEN </math> set, as described above. The <math> OPEN </math> sets increase in size exponentially for all domains with <math> b > 1 </math>.
 
==References==
{{reflist}}
*{{citation
| last1 = de Champeaux | first1 = Dennis
| last2 = Sint | first2 = Lenie
| doi = 10.1145/322003.322004
| issue = 2
| journal = [[Journal of the ACM]]
| pages = 177–191
| title = An improved bidirectional heuristic search algorithm
| volume = 24
| year = 1977}}.
*{{citation
| last = de Champeaux | first = Dennis
| doi = 10.1145/322358.322360
| issue = 1
| journal = [[Journal of the ACM]]
| pages = 22–32
| title = Bidirectional heuristic search again
| volume = 30
| year = 1983}}.
*{{citation
| last = Pohl | first = Ira
| contribution = Bi-directional Search
| editor1-last = Meltzer | editor1-first = Bernard
| editor2-last = Michie | editor2-first = Donald | editor2-link = Donald Michie
| pages = 127–140
| publisher = Edinburgh University Press
| title = Machine Intelligence
| volume = 6
| year = 1971}}.
*{{citation
| last1 = Russell | first1 = Stuart J. | author1-link = Stuart J. Russell
| last2 = Norvig | first2 = Peter | author2-link = Peter Norvig
| contribution = 3.4 Uninformed search strategies
| edition = 2nd
| publisher = Prentice Hall
| title = [[Artificial Intelligence: A Modern Approach]]
| year = 2002}}.
 
[[Category:Graph algorithms]]
[[Category:Search algorithms]]

Latest revision as of 09:50, 1 March 2014

Hi there, I am Sophia. Distributing production is how he makes a residing. Kentucky is where I've always been living. To perform lacross is some thing I truly enjoy doing.

Also visit my web blog: online psychics (http://jplusfn.gaplus.kr/)