| <HTML> | |
| <!-- | |
| Copyright (c) 2004 Kris Beevers | |
| Distributed under the Boost Software License, Version 1.0. | |
| (See accompanying file LICENSE_1_0.txt or copy at | |
| http://www.boost.org/LICENSE_1_0.txt) | |
| --> | |
| <Head> | |
| <Title>Boost Graph Library: AStarHeuristic</Title> | |
| <BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" | |
| ALINK="#ff0000"> | |
| <IMG SRC="../../../boost.png" | |
| ALT="C++ Boost" width="277" height="86"> | |
| <BR Clear> | |
| <H1>AStar Heuristic Concept</H1> | |
| This concept defines the interface for the heuristic function of an A* | |
| search, which is responsible for estimating the remaining cost from | |
| some vertex to a goal. The user can create a class that matches this | |
| interface, and then pass objects of the class into <a | |
| href="./astar_search.html"><tt>astar_search()</tt></a> to guide the | |
| order of vertex examination of the search. The heuristic instance | |
| must incorporate any necessary information about goal vertices in the | |
| graph. | |
| For further discussion of the use of heuristics in an A* search, see | |
| the documentation of <a | |
| href="./astar_search.html">astar_search()</a>. | |
| <h3>Refinement of</h3> | |
| <a href="http://www.sgi.com/tech/stl/UnaryFunction.html">Unary | |
| Function</a> (must take a single argument -- a graph vertex -- and | |
| return a cost value) and <a | |
| href="../../utility/CopyConstructible.html">Copy Constructible</a> | |
| (copying a heuristic should be a lightweight operation). | |
| <h3>Notation</h3> | |
| <Table> | |
| <TR> | |
| <TD><tt>H</tt></TD> | |
| <TD>A type that is a model of AStar Heuristic.</TD> | |
| </TR> | |
| <TR> | |
| <TD><tt>h</tt></TD> | |
| <TD>An object of type <tt>H</tt>.</TD> | |
| </TR> | |
| <TR> | |
| <TD><tt>G</tt></TD> | |
| <TD>A type that is a model of Graph.</TD> | |
| </TR> | |
| <TR> | |
| <TD><tt>g</tt></TD> | |
| <TD>An object of type <tt>G</tt>.</TD> | |
| </TR> | |
| <TR> | |
| <TD><tt>u</tt></TD> | |
| <TD>An object of type <tt>boost::graph_traits<G>::vertex_descriptor</tt>.</TD> | |
| </TR> | |
| <TR> | |
| <TD><tt>CostType</tt></TD> | |
| <TD>A type that can be used with the <tt>compare</tt> and | |
| <tt>combine</tt> functions passed to A*.</TD> | |
| </TR> | |
| <TR> | |
| <TD><tt>c</tt></TD> | |
| <TD>An object of type <tt>CostType</tt>.</TD> | |
| </TR> | |
| </table> | |
| <h3>Associated Types</h3> | |
| none | |
| <p> | |
| <h3>Valid Expressions</h3> | |
| <table border> | |
| <tr> | |
| <th>Name</th><th>Expression</th><th>Return Type</th><th>Description</th> | |
| </tr> | |
| <tr> | |
| <td>Call Heuristic</td> | |
| <td><tt>CostType c = h(u)</tt></td> | |
| <td><tt>CostType</tt></td> | |
| <td> | |
| Called for the target of every out edge of a vertex being examined. | |
| </td> | |
| </tr> | |
| </table> | |
| <h3>Models</h3> | |
| <ul> | |
| <li><a href="./astar_heuristic.html"><tt>astar_heuristic</tt></a> | |
| </ul> | |
| <h3>Concept Checking Class</h3> | |
| <pre> | |
| template <class Heuristic, class Graph> | |
| struct AStarHeuristicConcept { | |
| void constraints() | |
| { | |
| function_requires< CopyConstructibleConcept<Heuristic> >(); | |
| h(u); | |
| } | |
| Heuristic h; | |
| typename graph_traits<Graph>::vertex_descriptor u; | |
| }; | |
| </pre> | |
| <br> | |
| <HR> | |
| <TABLE> | |
| <TR valign=top> | |
| <TD nowrap>Copyright © 2004</TD><TD> | |
| <A HREF="http://www.cs.rpi.edu/~beevek/">Kristopher Beevers</A>, | |
| Rensselaer Polytechnic Institute (<A | |
| HREF="mailto:beevek@cs.rpi.edu">beevek@cs.rpi.edu</A>) | |
| </TD></TR></TABLE> | |
| </BODY> | |
| </HTML> |