Skip to main content

No project description provided

Project description

modgeosys-graph-algorithms: Graph Algorithms

A repository for [hopefully] clean, readable, and easily-called implementations of some navigation, path planning, and obstacle avoidance algorithms I will be using in the near future, written in modern Python and/or Rust with Python bindings. I'll be adding more algorithm implementations over time.

Algorithms: Currently implemented + planned

  • A* - Graph path search algorithm.
    • code-complete in both Python and Rust.
    • Needs a more thorough test suite.
  • Prim's algorithm - Prim's Minimum Spanning Tree algorithm.
    • Planned.

Usage

A* (Python)

from modgeosys.graph.a_star import a_star
from modgeosys.graph.types import Node, Edge, Graph
from modgeosys.graph.distance import manhattan_distance, euclidean_distance

# Define a graph.
nodes = [Node(coordinates=(0.0, 0.0)),
         Node(coordinates=(0.0, 2.0)),
         Node(coordinates=(1.0, 0.0)),
         Node(coordinates=(2.0, 1.0)),
         Node(coordinates=(2.0, 3.0))]
edges = (Edge(weight=2.0, node_indices=frozenset((0, 1))),
         Edge(weight=1.0, node_indices=frozenset((0, 2))),
         Edge(weight=1.0, node_indices=frozenset((2, 3))),
         Edge(weight=3.0, node_indices=frozenset((1, 4))),
         Edge(weight=1.0, node_indices=frozenset((3, 4))))
graph = Graph(nodes=nodes, edges=edges)

# Call the A* function.
path = a_star(graph=graph, start_node_index=0, goal_node_index=4, heuristic_distance=manhattan_distance)

# Report the resulting path.
print(path)

A* (Rust)

use std::collections::HashSet;

use modgeosys_graph::a_star::a_star;
use modgeosys_graph::types::{Node, Edge, Graph};
use modgeosys_graph::distance::manhattan_distance;

fn main()
{
  // Define a graph.
  let nodes = vec![Node::new(vec![0.0, 0.0]),
                   Node::new(vec![0.0, 2.0]),
                   Node::new(vec![1.0, 0.0]),
                   Node::new(vec![2.0, 1.0]),
                   Node::new(vec![2.0, 3.0])];
  let edges = vec![Edge::new(2.0, HashSet::from([0, 1])),
                   Edge::new(1.0, HashSet::from([0, 2])),
                   Edge::new(1.0, HashSet::from([2, 3])),
                   Edge::new(3.0, HashSet::from([1, 4])),
                   Edge::new(1.0, HashSet::from([3, 4]))];
  let graph = Graph::new(nodes, edges);

  // Call the A* function.
  let path = a_star(&graph, 0, 4, manhattan_distance).unwrap();

  // Report the resulting path.
  println!("{:?}", path);
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

modgeosys_graph_algorithms-0.1.1.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

modgeosys_graph_algorithms-0.1.1-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

Details for the file modgeosys_graph_algorithms-0.1.1.tar.gz.

File metadata

  • Download URL: modgeosys_graph_algorithms-0.1.1.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.10.12 Linux/6.5.0-26-generic

File hashes

Hashes for modgeosys_graph_algorithms-0.1.1.tar.gz
Algorithm Hash digest
SHA256 53219e671b9cc3e7de82ada1e21bc862b6e0a5c9e8335095130fb06b1377a356
MD5 0ab19317637b5fd220d7fd36ef67db4e
BLAKE2b-256 6fb6e6bc59391d3421fa7ccf66c4bc75d04b5ffb2a970a7366432cc3b523b938

See more details on using hashes here.

File details

Details for the file modgeosys_graph_algorithms-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for modgeosys_graph_algorithms-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f8eed41dff25e1e1d3d735af7780b120f3d0440407b6872ffd01608856f82df7
MD5 1d6107ea9f172b515c5f6c5b408a356f
BLAKE2b-256 b936c272b925fac43514b6ae52bc690ae53f62d1381642af038d829a1121c764

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page