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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file modgeosys_graph_algorithms-0.1.4.tar.gz.
File metadata
- Download URL: modgeosys_graph_algorithms-0.1.4.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97a735a5a161cc8d26165c8ef6379384aff930643b3a5eb6ab57e371b82effa1
|
|
| MD5 |
4f9fa9de5b0116ee13a625ceae731b4d
|
|
| BLAKE2b-256 |
01141217f2da93e57c9898c9e883cfc17122aa18c2680626d3394e2be49e276a
|
File details
Details for the file modgeosys_graph_algorithms-0.1.4-py3-none-any.whl.
File metadata
- Download URL: modgeosys_graph_algorithms-0.1.4-py3-none-any.whl
- Upload date:
- Size: 10.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.10.12 Linux/6.5.0-26-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6ca34f889a4f7efc4ecb4f8278c356e41baf7fc9e704aad51b32efa93a902e67
|
|
| MD5 |
168f11f980b39601b2f6b83afb39d4a5
|
|
| BLAKE2b-256 |
8aa40eca1a7dd3650acb12f6932a606426dc8ecc479cfd5692653cb340657270
|