Tools to compute the minimum semidefinite rank of a simple undirected graph.
Project description
MSR: Minimum Semidefinite Rank
https://github.com/samreynoldsmath/msr
Description
Tools to compute the minimum semidefinite rank of a simple undirected graph.
The minimum semidefinite rank of a graph $G$, denoted by $\text{msr}(G)$, is the smallest rank of a positive semidefinite matrix $A$ such that $A$ is a generalized adjacency matrix of $G$; that is, $A_{ij} \neq 0$ if and only if $i \neq j$ and $ij \in E(G)$. Equivalently, $\text{msr}(G)$ is the smallest dimension $d$ such that every vertex $i$ of $G$ can be assigned to a vector $x_i \in \mathbb{R}^d$ such for each $i \neq j$, we have that $x_i \cdot x_j \neq 0$ if and only if $ij \in E(G)$. Surprisingly, the graph invariant $\text{msr}(G)$ can often be computed only by consideration of the graph structure, without the need to actually do any linear algebra.
Comments
- This package began as a school project for a course on semidefinite programming (see the final report).
- In addition to SDP, this package also uses combinatorial techniques to compute bounds on the MSR, some of which are well-known in the literature, and some of which are still under development.
- The package uses a custom graph representation, but supports conversion to\from networkx graphs.
- The package is not designed with efficiency in mind, and probably will not scale well to large graphs.
Dependencies
This project is written in Python 3.11 and uses the following packages:
- cvxpy is used to solve semidefinite programs
- matplotlib is used for visualization
- networkx is used for graph isomorphism testing
- tqdm is used for progress bars See requirements.txt for a complete list of dependencies.
Author
Sam Reynolds is a PhD student studying Mathematical Sciences at Portland State University.
License
Copyright (c) 2023 under the MIT license.
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
File details
Details for the file msr-0.8.2.tar.gz
.
File metadata
- Download URL: msr-0.8.2.tar.gz
- Upload date:
- Size: 24.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.11.6 Linux/6.5.0-26-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2f5cac0c751eb2e60393b9efca78723fed1fc2a15b3b2e39522f65abdbb3c792 |
|
MD5 | eb970e876636c163d2349ef60c200ad6 |
|
BLAKE2b-256 | c6973e1028e4dd151892737d887bfc727d8c3971b2bb67d6ee3e55bdd3378018 |
File details
Details for the file msr-0.8.2-py3-none-any.whl
.
File metadata
- Download URL: msr-0.8.2-py3-none-any.whl
- Upload date:
- Size: 28.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.11.6 Linux/6.5.0-26-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a4f1da65ee0ab4779ccec9a522a8f69390d8c70cd7d4655271c9bbe5dae5a692 |
|
MD5 | 2eec020f4f1fc567336563457c2dca87 |
|
BLAKE2b-256 | 90d5627ea2a47b15529c60f253221ddf6b08bbcecf5a3ecd2e2f6114a826dfc7 |