Skip to main content

Package for computing the edge- and node-scanwidth of a directed acyclic graph (DAG)

Project description

PyPI License Docs JCSS DOI

scanwidth

scanwidth is a Python package for computing edge-scanwidth and node-scanwidth of directed acyclic graphs (DAGs). It provides exact and heuristic algorithms, plus reduction pipelines that make practical computation on larger instances more tractable.

Key Features

  • Tree-extension and Extension classess: classes that support (tree-)extensions of DAGs, let one compute scanwidth-bags and convert to canonical tree-extenions
  • Exact and heuristic solvers: XP, brute-force, partition-based exact methods (edge), ILP backend selection (node), and multiple heuristics for edge- and node-scanwidth.
  • Reduction framework: configurable ReducerConfig/Reducer pipelines for edge and node scanwidth, including optional parallel s-block solving.

Installation

Install the base package:

pip install scanwidth

Install optional ILP dependencies:

# SciPy backend for node_scanwidth(..., algorithm="ilp", backend="scipy")
pip install scanwidth[scipy]

# Gurobi backend for node_scanwidth(..., algorithm="ilp", backend="gurobi")
pip install scanwidth[gurobi]

# Both ILP backends
pip install scanwidth[ilp]

gurobipy requires a working Gurobi installation and a valid Gurobi license (commercial or academic, depending on your setup).

Documentation

For installation instructions, quickstart examples, and full API reference, see the scanwidth docs.

Citation

If you use scanwidth in your research, please cite:

Niels Holtgrefe, Leo van Iersel, and Mark Jones. Exact and heuristic computation of the scanwidth of directed acyclic graphs. Journal of Computer and System Sciences, 160:103802, 2026. doi: 10.1016/j.jcss.2026.103802

License

MIT License - see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scanwidth-0.2.1.tar.gz (37.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scanwidth-0.2.1-py3-none-any.whl (46.3 kB view details)

Uploaded Python 3

File details

Details for the file scanwidth-0.2.1.tar.gz.

File metadata

  • Download URL: scanwidth-0.2.1.tar.gz
  • Upload date:
  • Size: 37.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for scanwidth-0.2.1.tar.gz
Algorithm Hash digest
SHA256 e45478488619d7c94b21481b08e593c7e0df268357887020b02b93e5ccb66c8a
MD5 33514d868112912f378665cb62134dca
BLAKE2b-256 02b02cbfd156ddf277095eeb8c5ece09c27442165d4f2e905a9bbc920633d8bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for scanwidth-0.2.1.tar.gz:

Publisher: release.yml on nholtgrefe/scanwidth

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file scanwidth-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: scanwidth-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 46.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for scanwidth-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d705c57a22c054b7d0fc5471a3095245b5c975e8b28ca4a4f82b8b9c8babe038
MD5 a3205c6fc3706900325753fe57dbb9d1
BLAKE2b-256 c044ef7df91d607d361fb4143e7c194a9b7ec0f770f23b5f5b4725031cdd5237

See more details on using hashes here.

Provenance

The following attestation bundles were made for scanwidth-0.2.1-py3-none-any.whl:

Publisher: release.yml on nholtgrefe/scanwidth

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page