API Reference
Complete reference for all exported functions and types in OptimShortestPaths.
Core Algorithm
Main Functions
OptimShortestPaths.dmy_sssp! — Functiondmy_sssp!(graph::DMYGraph, source::Int) -> Vector{Float64}Main entry point for the DMY shortest-path algorithm. Computes single-source shortest paths from the given source vertex.
Arguments
graph: The directed graph with non-negative edge weightssource: Source vertex index (1-based)
Returns
- Vector of shortest distances from source to all vertices
Algorithm Overview
The DMY algorithm uses recursive layering with frontier sparsification:
- Initialize distance and parent arrays
- Call recursive_layer! with full vertex set
- Return computed distances
Time complexity: O(m log^(2/3) n) for sparse graphs Space complexity: O(n) for distance and parent arrays
OptimShortestPaths.dmy_sssp_with_parents! — Functiondmy_sssp_with_parents!(graph::DMYGraph, source::Int) -> Tuple{Vector{Float64}, Vector{Int}}DMY algorithm that returns both distances and parent pointers for path reconstruction.
Returns
- Tuple of (distances, parents) where parents[v] gives the predecessor of v in shortest path tree
OptimShortestPaths.dmy_sssp_bounded! — Functiondmy_sssp_bounded!(graph::DMYGraph, source::Int, max_distance::Float64) -> Vector{Float64}DMY algorithm with distance bound - only computes paths up to max_distance. Can be more efficient when only short paths are needed.
Arguments
graph: The directed graphsource: Source vertexmax_distance: Maximum distance to compute (paths longer than this are ignored)
Returns
- Distance array with INF for vertices beyond max_distance
Graph Types
OptimShortestPaths.DMYGraph — TypeDMYGraphEfficient graph representation for the DMY algorithm using adjacency lists. Stores vertices, edges, and weights with validation for non-negative weights.
OptimShortestPaths.Edge — TypeEdgeRepresents a directed edge in the graph with source, target vertices and weight index.
OptimShortestPaths.Block — TypeBlockRepresents a partitioned block of vertices for recursive processing.
Algorithm Components
OptimShortestPaths.recursive_layer! — Functionrecursive_layer!(graph::DMYGraph, dist::Vector{Float64}, parent::Vector{Int},
U::Vector{Int}, S::OrderedSet{Int}, B::Float64) -> NothingRecursive layer processing function that implements the core DMY algorithm logic. Processes vertex subset U with current frontier S and upper bound B.
Arguments
graph: The graph to processdist: Distance array (modified in-place)parent: Parent array for path reconstruction (modified in-place)U: Vertex subset to processS: Current frontier setB: Upper bound for distance updates
The function implements the recursive layering strategy with:
- Base case handling for small vertex sets
- Pivot threshold calculation k = ⌈|U|^(1/3)⌉
- Frontier size checking and algorithm path selection
- Pivot selection for frontier sparsification when needed
- Vertex partitioning and recursive calls
OptimShortestPaths.bmssp! — Functionbmssp!(graph::DMYGraph, dist::Vector{Float64}, parent::Vector{Int},
frontier::AbstractSet{Int}, bound::Float64, k::Int) -> OrderedSet{Int}Perform bounded multi-source shortest path relaxation for k rounds. Updates the distance and parent arrays in-place and returns the final frontier.
Arguments
graph: The graph to processdist: Distance array (modified in-place)parent: Parent array for path reconstruction (modified in-place)frontier: Set of active vertices for relaxationbound: Upper bound for distance updatesk: Maximum number of relaxation rounds
Returns
- Final frontier set after k rounds or early termination
OptimShortestPaths.bmssp_single_round! — Functionbmssp_single_round!(graph::DMYGraph, dist::Vector{Float64}, parent::Vector{Int},
frontier::AbstractSet{Int}, bound::Float64) -> Tuple{OrderedSet{Int}, Bool}Perform a single round of BMSSP relaxation. Returns the new frontier and whether any updates occurred.
OptimShortestPaths.select_pivots — Functionselect_pivots(U_tilde::Vector{Int}, S::AbstractSet{Int}, k::Int, dist::Vector{Float64}) -> Vector{Int}Select pivot vertices from U_tilde to sparsify the frontier. Uses distance-based clustering to choose representative vertices.
Arguments
U_tilde: Filtered vertex set (vertices not in S with finite distance < bound)S: Current frontier setk: Pivot threshold (typically ⌈|U|^(1/3)⌉)dist: Current distance array
Returns
- Vector of selected pivot vertices with |P| ≤ |U_tilde| / k
OptimShortestPaths.partition_blocks — Functionpartition_blocks(U::Vector{Int}, dist::Vector{Float64}, t::Int, B::Float64=INF) -> Vector{Block}Partition vertex set U into 2^t nearly equal blocks based on distance values. Each block gets a frontier seed and upper bound for recursive processing.
Arguments
U: Vertex set to partitiondist: Distance arrayt: Partition parameter (typically ⌈log^(1/3) n⌉)B: Overall bound for distances (default: INF)
Returns
- Vector of Block objects with vertices, frontier, and upper bound
OptimShortestPaths.partition_blocks_adaptive — Functionpartition_blocks_adaptive(U::Vector{Int}, dist::Vector{Float64}, t::Int,
graph::DMYGraph, B::Float64=INF) -> Vector{Block}Adaptive block partitioning that considers graph structure and distance distribution. Creates more balanced blocks based on both distance and connectivity.
Validation
OptimShortestPaths.validate_bmssp_input — Functionvalidate_bmssp_input(graph::DMYGraph, dist::Vector{Float64}, parent::Vector{Int},
frontier::AbstractSet{Int}, bound::Float64, k::Int) -> BoolValidate inputs for BMSSP function. Throws ArgumentError if invalid.
OptimShortestPaths.validate_dmy_input — Functionvalidate_dmy_input(graph::DMYGraph, source::Int) -> BoolValidate inputs for DMY algorithm. Throws appropriate errors if invalid.
Statistics
OptimShortestPaths.bmssp_with_statistics! — Functionbmssp_with_statistics!(graph::DMYGraph, dist::Vector{Float64}, parent::Vector{Int},
frontier::AbstractSet{Int}, bound::Float64, k::Int) -> Dict{String, Any}Perform BMSSP with detailed statistics collection. Returns statistics about the relaxation process.
OptimShortestPaths.dmy_algorithm_statistics — Functiondmy_algorithm_statistics(graph::DMYGraph, source::Int) -> Dict{String, Any}Run DMY algorithm with detailed statistics collection. Useful for algorithm analysis and performance tuning.
OptimShortestPaths.count_relaxations — Functioncount_relaxations(graph::DMYGraph, frontier::AbstractSet{Int}, bound::Float64,
dist::Vector{Float64}) -> IntCount the number of edge relaxations that would be performed in the next round. Useful for algorithm analysis and debugging.
Multi-Objective Optimization
Main Functions
OptimShortestPaths.MultiObjective.compute_pareto_front — FunctionCompute the full Pareto front for multi-objective shortest paths. Returns all non-dominated paths from source to target.
OptimShortestPaths.MultiObjective.get_knee_point — FunctionFind the "knee point" in the Pareto front - the solution with best trade-off. Uses the maximum distance from the utopia-nadir line.
OptimShortestPaths.MultiObjective.compute_path_objectives — FunctionCompute objective values for a path given parent array. Optionally accepts a vector of edge indices (per vertex) that identifies which multi-objective edge was used to reach each vertex.
Optimization Methods
OptimShortestPaths.MultiObjective.weighted_sum_approach — FunctionWeighted sum approach: Combine objectives with weights. Simple but may miss some Pareto-optimal solutions.
OptimShortestPaths.MultiObjective.epsilon_constraint_approach — FunctionEpsilon-constraint approach: Optimize one objective while constraining others. Good for finding specific trade-off solutions.
OptimShortestPaths.MultiObjective.lexicographic_approach — FunctionLexicographic approach: Optimize objectives in priority order. Good when objectives have clear priority ranking.
Types
OptimShortestPaths.MultiObjective.ParetoSolution — TypeA Pareto-optimal solution with multiple objective values
OptimShortestPaths.MultiObjective.MultiObjectiveGraph — TypeMulti-objective graph structure
OptimShortestPaths.MultiObjective.MultiObjectiveEdge — TypeEdge with multiple objective weights (e.g., distance, cost, risk, time)
Problem Transformation
The core innovation of OptimShortestPaths - transforming optimization problems into graphs.
OptimShortestPaths.OptimizationProblem — TypeOptimizationProblem(::Symbol, data, source)Container for problem instances that can be transformed into a graph using the OptimShortestPaths casting helpers. data is the argument tuple that will be splatted into the corresponding constructor (e.g. create_drug_target_network).
OptimShortestPaths.optimize_to_graph — FunctionMain OptimShortestPaths interface: optimize by casting to shortest path.
OptimShortestPaths.cast_problem — FunctionCast an optimization problem to a graph representation. This is the core innovation of OptimShortestPaths: transforming optimization into shortest paths.
OptimShortestPaths.objectives_to_weights — FunctionTransform optimization objectives into edge weights.
Domain-Specific Applications
Pharmaceutical Networks
Types
OptimShortestPaths.PharmaNetwork — TypePharmaNetworkAbstract base type for pharmaceutical network representations.
OptimShortestPaths.DrugTargetNetwork — TypeDrugTargetNetwork <: PharmaNetworkRepresents drug-target interaction networks for pharmaceutical applications.
OptimShortestPaths.MetabolicPathway — TypeMetabolicPathway <: PharmaNetworkRepresents metabolic pathway networks with metabolites and enzymatic reactions.
OptimShortestPaths.TreatmentProtocol — TypeTreatmentProtocol <: PharmaNetworkRepresents treatment protocol networks with treatment steps and transition costs.
Constructors
OptimShortestPaths.Pharma.create_drug_target_network — Functioncreate_drug_target_network(drugs::Vector{String}, targets::Vector{String},
interactions::Matrix{Float64}) -> DrugTargetNetworkCreate a drug-target interaction network from drug names, target names, and interaction matrix. The interaction matrix contains binding affinities or interaction strengths.
Arguments
drugs: Vector of drug namestargets: Vector of target protein namesinteractions: Matrix where interactions[i,j] is the binding affinity between drug i and target j Use 0.0 for no interaction, positive values for binding affinities
Returns
- DrugTargetNetwork with underlying graph representation
Network Structure
- Vertices represent both drugs and targets
- Edges represent drug-target interactions
- Edge weights are -log(binding_affinity) to convert to distance metric
OptimShortestPaths.Pharma.create_metabolic_pathway — Functioncreate_metabolic_pathway(metabolites::Vector{String}, reactions::Vector{String},
reaction_costs::Vector{Float64},
reaction_network::Vector{Tuple{String, String, String}}) -> MetabolicPathwayCreate a metabolic pathway network from metabolites, reactions, and their connections.
Arguments
metabolites: Vector of metabolite namesreactions: Vector of reaction namesreaction_costs: Vector of costs for each reaction (energy, time, etc.)reaction_network: Vector of (substrate, reaction, product) tuples defining the pathway
Returns
- MetabolicPathway with underlying graph representation
OptimShortestPaths.Pharma.create_treatment_protocol — Functioncreate_treatment_protocol(treatments::Vector{String}, costs::Vector{Float64},
efficacy_weights::Vector{Float64},
transitions::Vector{Tuple{String, String, Float64}}) -> TreatmentProtocolCreate a treatment protocol network for healthcare optimization.
Arguments
treatments: Vector of treatment step namescosts: Vector of costs for each treatmentefficacy_weights: Vector of efficacy weights for each treatmenttransitions: Vector of (fromtreatment, totreatment, transition_cost) tuples
Returns
- TreatmentProtocol with underlying graph representation
Analysis Functions
OptimShortestPaths.Pharma.find_drug_target_paths — Functionfind_drug_target_paths(network::DrugTargetNetwork, drug_name::String,
target_name::String) -> Tuple{Float64, Vector{String}}Find the shortest path from a drug to a target in the network. Returns the path distance and the sequence of drugs/targets in the path.
OptimShortestPaths.Pharma.analyze_drug_connectivity — Functionanalyze_drug_connectivity(network::DrugTargetNetwork, drug_name::String) -> Dict{String, Any}Analyze the connectivity of a specific drug in the network. Returns statistics about reachable targets and path lengths.
OptimShortestPaths.Pharma.find_metabolic_pathway — Functionfind_metabolic_pathway(pathway::MetabolicPathway, start_metabolite::String,
end_metabolite::String) -> Tuple{Float64, Vector{String}}Find the shortest metabolic pathway between two metabolites. Returns the total cost and sequence of metabolites in the pathway.
OptimShortestPaths.Pharma.optimize_treatment_sequence — Functionoptimize_treatment_sequence(protocol::TreatmentProtocol, start_treatment::String,
end_treatment::String) -> Tuple{Float64, Vector{String}}Find the optimal treatment sequence from start to end treatment. Returns the total cost and sequence of treatments.
Generic Graph Utilities
Path Operations
OptimShortestPaths.find_shortest_path — Functionfind_shortest_path(graph::DMYGraph, source::Int, target::Int)Find the shortest path and distance between two vertices.
Returns
- Tuple of (distance, path) where path is vector of vertex indices
Example
distance, path = find_shortest_path(graph, start, goal)
if distance < INF
println("Path found: ", join(path, " -> "))
endOptimShortestPaths.reconstruct_path — Functionreconstruct_path(parent::Vector{Int}, source::Int, target::Int) -> Vector{Int}Reconstruct the shortest path from source to target using parent pointers. Returns empty vector if no path exists.
Arguments
parent: Parent array from DMY algorithmsource: Source vertextarget: Target vertex
Returns
- Vector of vertices representing the path from source to target
OptimShortestPaths.shortest_path_tree — Functionshortest_path_tree(parent::Vector{Int}, source::Int) -> Dict{Int, Vector{Int}}Construct the complete shortest path tree from the parent array. Returns a dictionary mapping each reachable vertex to its path from source.
OptimShortestPaths.path_length — Functionpath_length(path::Vector{Int}, graph::DMYGraph) -> Float64Calculate the total length of a path in the graph. Returns INF if path is invalid or contains non-existent edges.
Connectivity Analysis
OptimShortestPaths.analyze_connectivity — Functionanalyze_connectivity(graph::DMYGraph, source::Int)Analyze connectivity metrics from a source vertex.
Returns
Dictionary containing:
reachable_count: Number of reachable verticesunreachable_count: Number of unreachable verticesavg_distance: Average distance to reachable verticesmax_distance: Maximum finite distanceconnectivity_ratio: Fraction of vertices that are reachable
Example
metrics = analyze_connectivity(graph, hub_vertex)
println("Hub connectivity: ", metrics["connectivity_ratio"] * 100, "%")OptimShortestPaths.find_reachable_vertices — Functionfind_reachable_vertices(graph::DMYGraph, source::Int, max_distance::Float64 = INF)Find all vertices reachable from source within a maximum distance.
Arguments
graph: The graph to analyzesource: Source vertexmax_distance: Maximum distance threshold (default: INF for all reachable)
Returns
- Vector of vertex indices that are reachable within max_distance
Example
# Find all vertices within distance 10 from source
nearby = find_reachable_vertices(graph, source, 10.0)OptimShortestPaths.graph_reachability — Functiongraph_reachability(graph::DMYGraph, source::Int) -> Set{Int}Find all vertices reachable from the source vertex. Uses simple BFS traversal.
OptimShortestPaths.is_connected — Functionis_connected(graph::DMYGraph, source::Int, target::Int) -> BoolCheck if there is a direct edge from source to target vertex.
Distance Metrics
OptimShortestPaths.calculate_distance_ratio — Functioncalculate_distance_ratio(graph::DMYGraph, source::Int, target1::Int, target2::Int)Calculate the ratio of distances from source to two different targets. This is a generic function useful for selectivity, preference, or comparison metrics.
Arguments
graph: The graph to analyzesource: Source vertextarget1: First target vertex (numerator in ratio)target2: Second target vertex (denominator in ratio)
Returns
- Ratio of distance to target1 / distance to target2
- Returns 0.0 if either distance is 0 or unreachable
- Returns Inf if target2 is unreachable but target1 is reachable
Example
# For drug selectivity: higher ratio means more selective for target2
ratio = calculate_distance_ratio(graph, drug_vertex, cox1_vertex, cox2_vertex)OptimShortestPaths.calculate_path_preference — Functioncalculate_path_preference(graph::DMYGraph, source::Int, preferred::Int, alternative::Int)Calculate preference score for reaching one target over another from a source. Higher values indicate stronger preference for the preferred target.
Arguments
graph: The graph to analyzesource: Source vertexpreferred: Preferred target vertexalternative: Alternative target vertex
Returns
- Preference score (higher is better for preferred target)
- Uses inverse distance ratio so lower distance = higher preference
Example
# Check if pathway A is preferred over pathway B
preference = calculate_path_preference(graph, start, pathwayA, pathwayB)
if preference > 1.5
println("Strong preference for pathway A")
endOptimShortestPaths.compare_sources — Functioncompare_sources(graph::DMYGraph, sources::Vector{Int}, target::Int)Compare distances from multiple sources to a single target.
Arguments
graph: The graph to analyzesources: Vector of source vertices to comparetarget: Target vertex
Returns
Dictionary mapping source vertex to distance to target
Example
# Compare which warehouse is closest to customer
warehouses = [1, 2, 3]
customer = 10
distances = compare_sources(graph, warehouses, customer)
best_warehouse = argmin(distances)Graph Properties
OptimShortestPaths.vertex_count — Functionvertex_count(graph::DMYGraph) -> IntReturn the number of vertices in the graph.
OptimShortestPaths.edge_count — Functionedge_count(graph::DMYGraph) -> IntReturn the number of edges in the graph.
OptimShortestPaths.out_degree — Functionout_degree(graph::DMYGraph, vertex::Int) -> IntReturn the out-degree of the specified vertex.
OptimShortestPaths.outgoing_edges — Functionoutgoing_edges(graph::DMYGraph, vertex::Int) -> Vector{Int}Return the indices of all outgoing edges from the specified vertex.
OptimShortestPaths.graph_density — Functiongraph_density(graph::DMYGraph) -> Float64Calculate the density of the graph (ratio of actual edges to possible edges).
OptimShortestPaths.graph_statistics — Functiongraph_statistics(graph::DMYGraph) -> Dict{String, Any}Return comprehensive statistics about the graph structure.
OptimShortestPaths.has_self_loops — Functionhas_self_loops(graph::DMYGraph) -> BoolCheck if the graph contains any self-loops (edges from a vertex to itself).
OptimShortestPaths.get_vertices_by_out_degree — Functionget_vertices_by_out_degree(graph::DMYGraph) -> Vector{Tuple{Int,Int}}Return vertices sorted by their out-degree in descending order. Returns vector of (vertex, out_degree) tuples.
Edge Operations
OptimShortestPaths.get_edge — Functionget_edge(graph::DMYGraph, edge_index::Int) -> EdgeReturn the edge at the specified index.
OptimShortestPaths.get_edge_weight — Functionget_edge_weight(graph::DMYGraph, edge_index::Int) -> Float64Return the weight of the edge at the specified index.
OptimShortestPaths.get_edge_weight_between — Functionget_edge_weight_between(graph::DMYGraph, source::Int, target::Int) -> Union{Float64, Nothing}Get the weight of the edge from source to target, or return nothing if no edge exists. If multiple edges exist, returns the weight of the first one found.
OptimShortestPaths.find_edge — Functionfind_edge(graph::DMYGraph, source::Int, target::Int) -> Union{Int, Nothing}Find the index of the edge from source to target, or return nothing if not found. If multiple edges exist, returns the first one found.
OptimShortestPaths.iterate_edges — Functioniterate_edges(graph::DMYGraph, vertex::Int)Iterator for outgoing edges from a vertex. Returns (edge, weight) pairs.
OptimShortestPaths.get_all_targets — Functionget_all_targets(graph::DMYGraph, source::Int) -> Vector{Int}Get all target vertices reachable directly from the source vertex.
Graph Construction
OptimShortestPaths.create_simple_graph — Functioncreate_simple_graph(n_vertices::Int, edge_list::Vector{Tuple{Int,Int,Float64}}) -> DMYGraphCreate a DMYGraph from a simple edge list representation. Each tuple contains (source, target, weight).
Validation & Verification
OptimShortestPaths.validate_graph — Functionvalidate_graph(graph::DMYGraph) -> BoolValidate the structure and properties of a DMYGraph. Returns true if valid, throws ArgumentError if invalid.
OptimShortestPaths.validate_vertex — Functionvalidate_vertex(graph::DMYGraph, vertex::Int) -> BoolValidate that a vertex index is within the valid range for the graph.
OptimShortestPaths.verify_shortest_path — Functionverify_shortest_path(graph::DMYGraph, dist::Vector{Float64}, source::Int, target::Int) -> BoolVerify that the computed distance is indeed the shortest path length. Useful for debugging and validation.
OptimShortestPaths.format_distance_results — Functionformat_distance_results(dist::Vector{Float64}, source::Int) -> StringFormat distance results for human-readable output.
Comparison & Benchmarking
OptimShortestPaths.compare_with_dijkstra — Functioncompare_with_dijkstra(graph::DMYGraph, source::Int) -> Dict{String, Any}Compare DMY algorithm results with Dijkstra's algorithm for validation. Returns comparison statistics and identifies any discrepancies.
OptimShortestPaths.simple_dijkstra — Functionsimple_dijkstra(graph::DMYGraph, source::Int) -> Vector{Float64}Simple Dijkstra's algorithm implementation for comparison and validation. Not optimized for performance - used only for correctness checking.
Advanced Functions
Pivot Selection
OptimShortestPaths.calculate_pivot_threshold — Functioncalculate_pivot_threshold(U_size::Int) -> IntCalculate the pivot threshold k = ⌈|U|^(1/3)⌉ for a given vertex set size. This is the theoretical optimum from the DMY paper.
OptimShortestPaths.calculate_partition_parameter — Functioncalculate_partition_parameter(n::Int) -> IntCalculate the partition parameter t = ⌈log^(1/3) n⌉ for a given graph size. This determines the number of blocks (2^t) in recursive partitioning.
OptimShortestPaths.pivot_selection_statistics — Functionpivot_selection_statistics(U_tilde::Vector{Int}, S::AbstractSet{Int}, k::Int,
pivots::Vector{Int}, dist::Vector{Float64}) -> Dict{String, Any}Collect statistics about the pivot selection process.
OptimShortestPaths.validate_pivot_selection — Functionvalidate_pivot_selection(pivots::Vector{Int}, U_tilde::Vector{Int}, k::Int) -> BoolValidate that pivot selection satisfies the algorithm constraints. Checks that |P| ≤ |Utilde| / k and all pivots are from Utilde.
Index
OptimShortestPaths.BlockOptimShortestPaths.DMYGraphOptimShortestPaths.DrugTargetNetworkOptimShortestPaths.EdgeOptimShortestPaths.MetabolicPathwayOptimShortestPaths.MultiObjective.MultiObjectiveEdgeOptimShortestPaths.MultiObjective.MultiObjectiveGraphOptimShortestPaths.MultiObjective.ParetoSolutionOptimShortestPaths.OptimizationProblemOptimShortestPaths.PharmaNetworkOptimShortestPaths.TreatmentProtocolOptimShortestPaths.MultiObjective.compute_pareto_frontOptimShortestPaths.MultiObjective.compute_path_objectivesOptimShortestPaths.MultiObjective.epsilon_constraint_approachOptimShortestPaths.MultiObjective.get_knee_pointOptimShortestPaths.MultiObjective.lexicographic_approachOptimShortestPaths.MultiObjective.weighted_sum_approachOptimShortestPaths.Pharma.analyze_drug_connectivityOptimShortestPaths.Pharma.create_drug_target_networkOptimShortestPaths.Pharma.create_metabolic_pathwayOptimShortestPaths.Pharma.create_treatment_protocolOptimShortestPaths.Pharma.find_drug_target_pathsOptimShortestPaths.Pharma.find_metabolic_pathwayOptimShortestPaths.Pharma.optimize_treatment_sequenceOptimShortestPaths.analyze_connectivityOptimShortestPaths.bmssp!OptimShortestPaths.bmssp_single_round!OptimShortestPaths.bmssp_with_statistics!OptimShortestPaths.calculate_distance_ratioOptimShortestPaths.calculate_partition_parameterOptimShortestPaths.calculate_path_preferenceOptimShortestPaths.calculate_pivot_thresholdOptimShortestPaths.cast_problemOptimShortestPaths.compare_sourcesOptimShortestPaths.compare_with_dijkstraOptimShortestPaths.count_relaxationsOptimShortestPaths.create_simple_graphOptimShortestPaths.dmy_algorithm_statisticsOptimShortestPaths.dmy_sssp!OptimShortestPaths.dmy_sssp_bounded!OptimShortestPaths.dmy_sssp_with_parents!OptimShortestPaths.edge_countOptimShortestPaths.find_edgeOptimShortestPaths.find_reachable_verticesOptimShortestPaths.find_shortest_pathOptimShortestPaths.format_distance_resultsOptimShortestPaths.get_all_targetsOptimShortestPaths.get_edgeOptimShortestPaths.get_edge_weightOptimShortestPaths.get_edge_weight_betweenOptimShortestPaths.get_vertices_by_out_degreeOptimShortestPaths.graph_densityOptimShortestPaths.graph_reachabilityOptimShortestPaths.graph_statisticsOptimShortestPaths.has_self_loopsOptimShortestPaths.is_connectedOptimShortestPaths.iterate_edgesOptimShortestPaths.objectives_to_weightsOptimShortestPaths.optimize_to_graphOptimShortestPaths.out_degreeOptimShortestPaths.outgoing_edgesOptimShortestPaths.partition_blocksOptimShortestPaths.partition_blocks_adaptiveOptimShortestPaths.path_lengthOptimShortestPaths.pivot_selection_statisticsOptimShortestPaths.reconstruct_pathOptimShortestPaths.recursive_layer!OptimShortestPaths.select_pivotsOptimShortestPaths.shortest_path_treeOptimShortestPaths.simple_dijkstraOptimShortestPaths.validate_bmssp_inputOptimShortestPaths.validate_dmy_inputOptimShortestPaths.validate_graphOptimShortestPaths.validate_pivot_selectionOptimShortestPaths.validate_vertexOptimShortestPaths.verify_shortest_pathOptimShortestPaths.vertex_count