A simple python package for graph theory that supports multi-edges, hyper-edges, looped-edges and every other combination of these.
Project description
multihypergraph
##Description A simple python package for graph theory that supports multi-edges, hyper-edges, looped-edges and every other combination of these. This package is an exercise in defining statically-typed, functional implementations of graphs that have the following features:
- Each vertex of the graph is a characted. For example
'ab,bc,ac'"
is a triangle graph with vertices{'a', 'b', 'c'}
. - Multi-edges are allowed.
'ab,ab'
is a valid graph. - Hyper-edges are allowed.
'abc'
is a valid graph. - Self-loops are allowed.
'aa'
is a valid graph. - Collapsed edges are allowed.
'aab'
is a valid graph
Check out the wikipedia entries for Hypergraph and Multigraph. Think of this package as happy marriage between the two.
Installation
pip install multihypergraph
Features
- Almost all the code is functional.
- Mutability of data types is never used.
- All types are explicitly mentioned using static-typing (and checked courtesy
mypy
). - The above mentioned feature makes it easier to reason mathematically about the code.
- The emphasis is on mathematical understanding and soundness rather than algorithmic efficiency.
- The top-level scripts are divided into
objects/
andmorphisms/
to emphasize the category-theoretic structure of multihypergraphs. - Functional programming allows us to write easy-to-decipher tests using
pytest
.
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
multihypergraph-0.0.1.tar.gz
(6.8 kB
view hashes)
Built Distribution
Close
Hashes for multihypergraph-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3c202f753a81160e9381d5ac3363ca2dd8695a8992f8fa71dbabfe0062f7c8a3 |
|
MD5 | b9cddc386148fdd53be7f77f2fa96dba |
|
BLAKE2b-256 | 60f1c53afeec4bcbe0d2543909b5b1f3e5581c1972fe6d362a56855613e0bace |