Modern convex optimization-based graph algorithms.
Project description
CVX Graph Algorithms
Introduction
Modern convex optimization-based graph algorithms.
Convex optimization presents an exciting new direction in designing exact and approximate graph algorithms. However, these algorithms are often overlooked in practice due to limitations in solving large convex programs quickly. Convex optimization-based graph algorithms nonetheless achieve impressive theoretical performance, and often provide a beautiful geometric interpretation. This package implements some of these algorithms and provides corresponding graph generators to test performance---hopefully highlighting how simple, elegant and effective these can be for many real-world problems.
Details
In this package, we provide implementations of the following algorithms. Note featured convex optimization-based algorithms are in bold and references are provided when available.
This package also provides functions to generate graphs drawn from the planted independent set distribution and stochastic block model.
- Maximum Cut Problem
- Goemans-Williamson MAX-CUT Algorithm [1]
- Random MAX-CUT Algorithm
- Greedy MAX-CUT Algorithm
- Independent Set Algorithm
- Crude SDP-based Independent Set [2]
- Greedy Independent Set Algorithm
- Spectral Algorithm for Independent Set
Install and Usage
You can install this directly from the Python Package Index (PyPI).
pip install cvxgraphalgs
Below, we show how to run the Goemans-Williamson MAX-CUT Algorithm on a graph drawn from the stochastic block model distribution. For more examples, explore the jupyter notebooks available with the package documentation available here.
>>> import cvxgraphalgs as cvxgr
>>> graph, _ = cvxgr.generators.bernoulli_planted_independent(
... size=50, independent_size=15, probability=0.5
... )
>>> recovered = cvxgr.algorithms.crude_sdp_independent_set(graph)
>>> len(recovered)
15
References
[1]: Goemans, Michel X., and David P. Williamson. "Improved approximation algorithms for maximum cut and satisfiability problems using semidefinite programming." Journal of the ACM (JACM) 42, no. 6 (1995): 1115-1145.
[2]: McKenzie, Theo, Hermish Mehta, and Luca Trevisan. "A New Algorithm for the Robust Semi-random Independent Set Problem." arXiv:1808.03633 (2018).
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 cvxgraphalgs-0.1.2.tar.gz
.
File metadata
- Download URL: cvxgraphalgs-0.1.2.tar.gz
- Upload date:
- Size: 6.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0dd81cae1d4b814b51fceae2df1532e9239ab04152768cc917a886ea17720445 |
|
MD5 | ca7743bb7bbfe1bb5e5ad092ab4c038e |
|
BLAKE2b-256 | 8bb31bcef1166cfd42b2fc89b759c78d8ea97f53bc808cb7625d3306e3c20765 |
File details
Details for the file cvxgraphalgs-0.1.2-py3-none-any.whl
.
File metadata
- Download URL: cvxgraphalgs-0.1.2-py3-none-any.whl
- Upload date:
- Size: 10.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 62e3e67663380776a80c5cb46bf46f2b955cece4e0f775cf64833225ff22ffe5 |
|
MD5 | 726833d42f30ad8e6d4ac24eeb4ba460 |
|
BLAKE2b-256 | f71a1c3447a31c2e7d4aea1d0250e0c69e00fb2ff541b765eb834c6ecf681490 |