https://github.com/queracomputing/generictensornetworks.jl
Generic tensor networks for solution space properties.
https://github.com/queracomputing/generictensornetworks.jl
combinatorial-optimization solution-space-property tensor-networks
Last synced: 4 months ago
JSON representation
Generic tensor networks for solution space properties.
- Host: GitHub
- URL: https://github.com/queracomputing/generictensornetworks.jl
- Owner: QuEraComputing
- License: other
- Created: 2021-08-15T06:10:50.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2025-07-28T13:22:41.000Z (7 months ago)
- Last Synced: 2025-09-05T15:29:34.977Z (5 months ago)
- Topics: combinatorial-optimization, solution-space-property, tensor-networks
- Language: Julia
- Homepage: https://queracomputing.github.io/GenericTensorNetworks.jl/dev/
- Size: 6.69 MB
- Stars: 110
- Watchers: 3
- Forks: 13
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
- Citation: CITATION.bib
Awesome Lists containing this project
README
# GenericTensorNetworks
[](https://github.com/QuEraComputing/GenericTensorNetworks.jl/actions/workflows/CI.yml)
[](https://codecov.io/gh/QuEraComputing/GenericTensorNetworks.jl)
[](https://queracomputing.github.io/GenericTensorNetworks.jl/dev/)
This package implements generic tensor networks to compute *solution space properties* of a class of hard combinatorial optimization problems.
The *solution space properties* include
* The maximum/minimum solution sizes,
* The number of solutions at certain sizes,
* The enumeration/sampling of solutions at certain sizes.
The types of problems that can be solved using this package include [Independent set problem](https://queracomputing.github.io/GenericTensorNetworks.jl/dev/generated/IndependentSet/), [Maximal independent set problem](https://queracomputing.github.io/GenericTensorNetworks.jl/dev/generated/MaximalIS/), [Spin-glass problem](https://queracomputing.github.io/GenericTensorNetworks.jl/dev/generated/SpinGlass/), [Cutting problem](https://queracomputing.github.io/GenericTensorNetworks.jl/dev/generated/MaxCut/), [Vertex matching problem](https://queracomputing.github.io/GenericTensorNetworks.jl/dev/generated/Matching/), [Binary paint shop problem](https://queracomputing.github.io/GenericTensorNetworks.jl/dev/generated/PaintShop/), [Coloring problem](https://queracomputing.github.io/GenericTensorNetworks.jl/dev/generated/Coloring/), [Dominating set problem](https://queracomputing.github.io/GenericTensorNetworks.jl/dev/generated/DominatingSet/), [Set packing problem](https://queracomputing.github.io/GenericTensorNetworks.jl/dev/generated/SetPacking/), [Satisfiability problem](https://queracomputing.github.io/GenericTensorNetworks.jl/dev/generated/Satisfiability/) and [Set covering problem](https://queracomputing.github.io/GenericTensorNetworks.jl/dev/generated/SetCovering/).
## Installation
GenericTensorNetworks is a
Julia Language
package. To install GenericTensorNetworks,
please open
Julia's interactive session (known as REPL) and press the ] key in the REPL to use the package mode, and then type:
```julia
pkg> add GenericTensorNetworks
```
To update, just type `up` in the package mode.
We recommend that you use **Julia version >= 1.7**; otherwise, your program may suffer from significant (exponential in the tensor dimension) overheads when permuting the dimensions of a large tensor.
If you have to use an older version of Julia, you can overwrite the `LinearAlgebra.permutedims!` by adding the following patch to your own project.
```julia
# only required when your Julia version is < 1.7
using TensorOperations, LinearAlgebra
function LinearAlgebra.permutedims!(C::Array{T,N}, A::StridedArray{T,N}, perm) where {T,N}
if isbitstype(T)
TensorOperations.tensorcopy!(A, ntuple(identity,N), C, perm)
else
invoke(permutedims!, Tuple{Any,AbstractArray,Any}, C, A, perm)
end
end
```
## Supporting and Citing
Much of the software in this ecosystem was developed as a part of an academic research project.
If you would like to help support it, please star the repository.
If you use our software as part of your research, teaching, or other activities, we would like to request you to cite our [work](https://arxiv.org/abs/2205.03718).
The
[CITATION.bib](https://github.com/QuEraComputing/GenericTensorNetworks.jl/blob/master/CITATION.bib) file in the root of this repository lists the relevant papers.
## Questions and Contributions
You can
* Post a question on [Julia Discourse forum](https://discourse.julialang.org/) and ping the package maintainer with `@1115`.
* Discuss in the `#graphs` channel of the [Julia Slack](https://julialang.org/community/) and ping the package maintainer with `@JinGuo Liu`.
* Open an [issue](https://github.com/QuEraComputing/GenericTensorNetworks.jl/issues) if you encounter any problems, or have any feature request.