Библиотека для работы с графами и алгоритмами на них.
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
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e064e04b81fc8f10c399aaf2ed7b9e3ba29861b92fa5601ac03687e610a8b7be
|
|
| MD5 |
b028add03111705a5bf2e3af0946cfd2
|
|
| BLAKE2b-256 |
5f512ea8fe568fc6bb50d6cc8d6db22bc9256c5040a5bfb76c15d4b7bdf4990d
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a6f2a7e8fd96c9fd334a901b5c8225a1ebd4c517d123b0f55ea3e27d0a3b65f5
|
|
| MD5 |
9795cc6a377d0049f93f8a083e3a676f
|
|
| BLAKE2b-256 |
f8160a2c86ddf8bb2d8b24a59fdc43829c72aa3fc8fc5d90a7c8608cf4f36b75
|