Source code for pathfinding3d.finder.dijkstra

from typing import Callable, Optional, Union

from ..core.diagonal_movement import DiagonalMovement
from ..core.heuristic import null
from ..core.node import Node
from .a_star import MAX_RUNS, TIME_LIMIT, AStarFinder


[docs]class DijkstraFinder(AStarFinder):
[docs] def __init__( self, weight: int = 1, diagonal_movement: int = DiagonalMovement.never, time_limit: float = TIME_LIMIT, max_runs: Union[int, float] = MAX_RUNS, ): """ Find shortest path using Dijkstra algorithm Parameters ---------- weight : int weight for the edges diagonal_movement : int if diagonal movement is allowed (see enum in diagonal_movement) time_limit : float max. runtime in seconds max_runs : int max. amount of tries until we abort the search (optional, only if we enter huge grids and have time constrains) <=0 means there are no constrains and the code might run on any large map. """ super().__init__( heuristic=null, weight=weight, diagonal_movement=diagonal_movement, time_limit=time_limit, max_runs=max_runs, )
[docs] def apply_heuristic(self, node_a: Node, node_b: Node, heuristic: Optional[Callable] = None) -> float: """ Helper function to apply heuristic Parameters ---------- node_a : Node first node node_b : Node second node heuristic : Callable heuristic used to calculate distance of 2 points Returns ------- float 0.0 """ return 0.0