Skip to main content

fuzzy-graph-coloring is a Python package for calculating the fuzzy chromatic number and coloring of a graph with fuzzy edges.

Project description

fuzzy-graph-coloring is a Python package for calculating the fuzzy chromatic number and coloring of a graph with fuzzy edges. It will create a coloring with a minimal amount of incompatible edges using a genetic algorithm (genetic_fuzzy_color) or a greedy-k-coloring (greedy_k_color) combined with a binary search (alpha_fuzzy_color).

If you don’t know which one to use, we recommend alpha_fuzzy_color. If you are looking for a networkX coloring but with a given k, use greedy_k_color.

See repository https://github.com/ferdinand-dhbw/fuzzy-graph-coloring See the paper that accompanied the project https://github.com/ferdinand-dhbw/fuzzy-graph-coloring/blob/main/docs/KoenigRheinerFGCStudentResearchProject2022.pdf

Quick-Start

Install package: pip install fuzzy-graph-coloring Consider the following graph:

https://raw.githubusercontent.com/ferdinand-dhbw/fuzzy-graph-coloring/main/docs/images/uncolored-graph.png

Try simple code:

import fuzzy-graph-coloring as fgc

TG2 = nx.Graph()
TG2.add_edge(1, 2, weight=0.4)
TG2.add_edge(1, 3, weight=0.7)
TG2.add_edge(1, 4, weight=0.8)
TG2.add_edge(2, 4, weight=0.2)
TG2.add_edge(2, 5, weight=0.9)
TG2.add_edge(3, 4, weight=0.3)
TG2.add_edge(3, 6, weight=1.0)
TG2.add_edge(4, 5, weight=0.3)
TG2.add_edge(4, 6, weight=0.5)
TG2.add_edge(5, 6, weight=0.7)
TG2.add_edge(5, 7, weight=0.8)
TG2.add_edge(5, 8, weight=0.5)
TG2.add_edge(6, 7, weight=0.7)
TG2.add_edge(7, 8, weight=0.6)

print(fgc.alpha_fuzzy_color(TG2, 3, return_alpha=True, fair=True))

Result: {5: 0, 6: 1, 1: 2, 7: 2, 2: 1, 3: 0, 4: 0, 8: 1} 0.9285714285714286 0.4

(Tuple of coloring, score [(1-DTI)], and alpha [of alpha-cut])

https://raw.githubusercontent.com/ferdinand-dhbw/fuzzy-graph-coloring/main/docs/images/colored-graph.png

Bibliography

The project uses a lot of the by Keshavarz created basics: E. Keshavarz, “Vertex-coloring of fuzzy graphs: A new approach,” Journal of Intelligent & Fuzzy Systems, vol. 30, pp. 883-893, 2016, issn: 1875-8967. https://doi.org/10.3233/IFS-151810

License

This project is licensed under GNU General Public License v3.0 (GNU GPLv3). See LICENSE in the code repository.

Setup development environment

  1. Get poetry https://python-poetry.org/docs/

  2. Make sure, Python 3.8 is being used

  3. poetry install in your system shell

  4. poetry run pre-commit install

Run pre-commit

poetry run pre-commit run --all-files

Run pytest

poetry run pytest .\tests

Create documentation

.\docs\make html

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

fuzzy-graph-coloring-0.1.3.tar.gz (22.7 kB view hashes)

Uploaded Source

Built Distribution

fuzzy_graph_coloring-0.1.3-py3-none-any.whl (22.3 kB view hashes)

Uploaded Python 3

Supported by

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