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.
- Needs Python bindings for Rust implementation.
- Prim's algorithm - Prim's Minimum Spanning Tree algorithm.
- Code-complete in Python.
- Tested on toy dataset in test suite.
- Tested on larger sample (pickled) dataset, not yet incorporated into test suite.
- Needs a Rust implementation and corresponding Python bindings.
Usage
A*
import pickle
from pprint import pprint
from modgeosys.graph.types import Graph
from modgeosys.graph.distance import manhattan_distance, euclidean_distance
from modgeosys.graph.a_star import a_star
# Define a toy graph.
toy_graph = Graph.from_edge_definitions(edge_definitions=((2, ((0.0, 0.0), (0.0, 2.0))),
(1, ((0.0, 0.0), (1.0, 0.0))),
(1, ((1.0, 0.0), (2.0, 1.0))),
(3, ((0.0, 2.0), (2.0, 3.0))),
(1, ((2.0, 1.0), (2.0, 3.0)))),
heuristic_distance_function=manhattan_distance)
# Load a bigger graph from a pickle file.
with open('python/data/graph.pickle', 'rb') as pickled_sample_larger_graph_file:
larger_graph = pickle.load(pickled_sample_larger_graph_file)
larger_graph.heuristic_distance_function = manhattan_distance
# Call the A* function.
toy_a_star_path = a_star(graph=toy_graph, start_node_index=0, goal_node_index=4, heuristic_distance=manhattan_distance)
print(f'Toy A* Path:')
pprint(toy_a_star_path)
print()
larger_a_star_path = a_star(graph=larger_graph, start_node_index=0, goal_node_index=4,
heuristic_distance=manhattan_distance)
print(f'Large A* Path:')
pprint(larger_a_star_path)
Prim's algorithm
import pickle
from modgeosys.graph.types import Graph
from modgeosys.graph.prim import prim
# Define a toy graph.
toy_graph = Graph.from_edge_definitions(((2, ((0.0, 0.0), (0.0, 2.0))),
(1, ((0.0, 0.0), (1.0, 0.0))),
(1, ((1.0, 0.0), (2.0, 1.0))),
(3, ((0.0, 2.0), (2.0, 3.0))),
(1, ((2.0, 1.0), (2.0, 3.0)))))
# Load a bigger graph from a pickle file.
with open('python/data/graph.pickle', 'rb') as pickled_sample_larger_graph_file:
larger_graph = pickle.load(pickled_sample_larger_graph_file)
# Call the Prim function.
toy_minimum_spanning_tree = prim(graph=toy_graph, start_node_index=0)
print('Toy Prim Minimum Spanning Tree:')
print(toy_minimum_spanning_tree)
print()
larger_minimum_spanning_tree = prim(graph=larger_graph, start_node_index=0)
print('Prim Minimum Spanning Tree:')
print(larger_minimum_spanning_tree)
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.3.2.tar.gz.
File metadata
- Download URL: modgeosys_graph_algorithms-0.3.2.tar.gz
- Upload date:
- Size: 11.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.10.12 Linux/6.5.0-28-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
57e987403c20423002c5e74ff53f3c65de3a6691861ba38942d6630c02077927
|
|
| MD5 |
d85c84d84e884fa5430788cad391591a
|
|
| BLAKE2b-256 |
87325118c4ed6175a04c5e61b016060e061e2660c8991893f5661ac0807605f5
|
File details
Details for the file modgeosys_graph_algorithms-0.3.2-py3-none-any.whl.
File metadata
- Download URL: modgeosys_graph_algorithms-0.3.2-py3-none-any.whl
- Upload date:
- Size: 14.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.10.12 Linux/6.5.0-28-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
07c4d80d6ef81e8c3bd8d6f52b6112f9b2d674c770362188304f907a3fa801f6
|
|
| MD5 |
4889727b35624477ef86e56b4cfb6102
|
|
| BLAKE2b-256 |
d0e0c0ec48f6765e2624627f242fc1622cbb6a47c577d65c6a0cf0b4802200c2
|