Skip to main content

Библиотека для работы с графами и алгоритмами на них.

Project description

Graf: Библиотека для работы с графами и алгоритмами

Graf - это библиотека Python, предоставляющая инструменты для работы с графами и реализации различных алгоритмов на них. Она включает в себя алгоритмы Дейкстры, Флойда-Уоршалла, поиска Эйлерова цикла, а также возможность читать и визуализировать графы из файлов формата DOT.

Установка

Для установки Graf, используйте pip:

pip install Graf

Зависимости

Graf зависит от следующих библиотек:

  • networkx - для работы с графами, например для создания, добавления ребер, расположения узлов и отображения.
  • matplotlib - для визуализации графов.
  • numpy - для хранения и манипулирования числовыми данными (матрицами) для графов.

Эти зависимости будут установлены автоматически при установке пакета с помощью pip. # Будут же?

Использование

Алгоритм Дейкстры

python
from Graf.Algorithm.dijkstra import dijkstra

graph = {
    'A': {'B': 1, 'C': 4},
    'B': {'A': 1, 'C': 2, 'D': 5},
    'C': {'A': 4, 'B': 2, 'D': 1},
    'D': {'B': 5, 'C': 1}
}

start_vertex = 'A'
shortest_distances = dijkstra(graph, start_vertex)

print(shortest_distances) # Выведет {'A': 0, 'B': 1, 'C': 3, 'D': 4}

Алгоритм Уоршалла-Флойда

Для работы алгоритма необходимо создать файл graph.dot с описанием графа в формате DOT

Пример: u -> v [label="w"], где u - начальная вершина, v - целевая вершина, w - вес ребра

# digraph G {
#   1 -> 2 [label="5"];
#   2 -> 3 [label="1"];
#   3 -> 1 [label="2"];
# }
python
from Graf.floyd_warshall import floyd_warshall
from Graf.graph_utils import read_graph_from_dot

graph = read_graph_from_dot("graph.dot")
shortest_paths = floyd_warshall(graph)

# Результат в shortest_paths - матрица кратчайших расстояний
with open("shortest_paths.txt", 'w', encoding='utf-8') as f:
    for i in range(len(graph)):
        for j in range(len(graph)):
            if shortest_paths[i][j] == float('inf'):
                f.write(f"Расстояние от {i + 1} до {j + 1}: ∞\n")
            else:
                f.write(f"Расстояние от {i + 1} до {j + 1}: {shortest_paths[i][j]}\n")
print("Кратчайшие пути (Флойд-Уоршалл) записаны в shortest_paths.txt")

Нахождениие Эйлерова цикла

# Находим Эйлеров цикл
eulerian_cycle = find_eulerian_cycle(graph, start_vertex)

# Вывод результата
if eulerian_cycle:
    print("Эйлеров цикл:", eulerian_cycle)
else:
    print("Эйлеров цикл не существует.")


Визуализация графа для алгоритм Уоршалла-Флойда

Для визуализации графа необходимо прочитать его из файла .dot.

python
from Graf.floyd_warshall import read_graph_from_dot, draw_graph

graph = read_graph_from_dot("graph.dot")
draw_graph(graph)

Модули

Библиотека состоит из следующих модулей:

• Graf.floyd_warshall: Реализация алгоритма Уоршалла-Флойда. • Graf.Algorithm.dijkstra: Реализация алгоритма Дейкстры. • Graf.Algorithm.euler: Реализация нахождение Эйлерова цикла. • Graf.Matrix.Vis_matrix: Реализация базовой структуры графа с помощью класса Graph и методами для добавления ребер и вывода матрицы смежности.

Автор

• Садова Диана • Жукова Арина

Лицензия

Этот проект лицензирован под MIT License.

Дополнительная информация

Пожалуйста, посетите страницу проекта на GitHub для получения дополнительной информации и кода.

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

graf_lab_4_py-1.0.2.tar.gz (8.1 kB view details)

Uploaded Source

Built Distribution

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

Graf_Lab_4_Py-1.0.2-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file graf_lab_4_py-1.0.2.tar.gz.

File metadata

  • Download URL: graf_lab_4_py-1.0.2.tar.gz
  • Upload date:
  • Size: 8.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.7

File hashes

Hashes for graf_lab_4_py-1.0.2.tar.gz
Algorithm Hash digest
SHA256 e064e04b81fc8f10c399aaf2ed7b9e3ba29861b92fa5601ac03687e610a8b7be
MD5 b028add03111705a5bf2e3af0946cfd2
BLAKE2b-256 5f512ea8fe568fc6bb50d6cc8d6db22bc9256c5040a5bfb76c15d4b7bdf4990d

See more details on using hashes here.

File details

Details for the file Graf_Lab_4_Py-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: Graf_Lab_4_Py-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 10.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.7

File hashes

Hashes for Graf_Lab_4_Py-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a6f2a7e8fd96c9fd334a901b5c8225a1ebd4c517d123b0f55ea3e27d0a3b65f5
MD5 9795cc6a377d0049f93f8a083e3a676f
BLAKE2b-256 f8160a2c86ddf8bb2d8b24a59fdc43829c72aa3fc8fc5d90a7c8608cf4f36b75

See more details on using hashes here.

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