pub struct AStar;Expand description
A* Algorithm for heuristic-guided shortest paths
Use when you have a heuristic estimate of distance to target. Faster than Dijkstra when heuristic is good. Time: O((V + E) log V) typical, Space: O(V)
Implementations§
Source§impl AStar
impl AStar
Sourcepub fn shortest_path<H>(
graph: &GraphStore,
source: &str,
target: &str,
heuristic: H,
) -> ShortestPathResult
pub fn shortest_path<H>( graph: &GraphStore, source: &str, target: &str, heuristic: H, ) -> ShortestPathResult
Find shortest path using A* with a custom heuristic
The heuristic function estimates distance from a node to the target. Must be admissible (never overestimate) for optimal paths.
Sourcepub fn shortest_path_no_heuristic(
graph: &GraphStore,
source: &str,
target: &str,
) -> ShortestPathResult
pub fn shortest_path_no_heuristic( graph: &GraphStore, source: &str, target: &str, ) -> ShortestPathResult
A* with zero heuristic (equivalent to Dijkstra)
Auto Trait Implementations§
impl Freeze for AStar
impl RefUnwindSafe for AStar
impl Send for AStar
impl Sync for AStar
impl Unpin for AStar
impl UnsafeUnpin for AStar
impl UnwindSafe for AStar
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request