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.3.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.3-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: modgeosys_graph_algorithms-0.1.3.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.3.tar.gz
Algorithm Hash digest
SHA256 577173e2633a8f583e6f173b525c0eb5cb4186a4178df2a0b782b58f921b2af4
MD5 d1cbaeafbe75ef24ac7b11ee967f5c5f
BLAKE2b-256 0ce4633d0766bf735b3a6c2aa4264d8218123c07391f9e5e15063fab48f7bc38

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modgeosys_graph_algorithms-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 69e4ee0836bed0457b765731e71e1f0264ba7205d15665a44a9ec363eebd307d
MD5 de1bc5248b76ceb67735b8b8ec9921f2
BLAKE2b-256 5100c629771864e9d87d9f51eecda1130b8be69a14961b5457a1d87bee27827a

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