Библиотека для работы с графами и алгоритмами на них.
Project description
Graf: Библиотека для работы с графами и алгоритмами
Graf - это библиотека Python, предоставляющая инструменты для работы с графами и реализации различных алгоритмов на них. Она включает в себя алгоритмы Дейкстры, Флойда-Уоршалла, поиска Эйлерова цикла, а также возможность читать и визуализировать графы из файлов формата DOT.
Установка
Для установки Graf-Lab-4-Py, используйте pip:
pip install Graf-Lab-4-Py
Зависимости
Graf зависит от следующих библиотек:
- networkx - для работы с графами, например для создания, добавления ребер, расположения узлов и отображения.
- matplotlib - для визуализации графов.
- numpy - для хранения и манипулирования числовыми данными (матрицами) для графов.
Эти зависимости будут установлены автоматически при установке пакета с помощью pip. # Будут же?
Модули
Библиотека состоит из следующих модулей:
• Graf.Algorithm.floyd_warshall: Реализация алгоритма Уоршалла-Флойда.
• Graf.Algorithm.dijkstra: Реализация алгоритма Дейкстры.
• Graf.Algorithm.euler: Реализация нахождение Эйлерова цикла.
• Graf.Matrix.Vis_matrix: Реализация базовой структуры графа с помощью класса Graph (c методами для добавления ребер) и вывода матрицы весов.
• Graf.Matrix.Incidence_matrix: Реализация вывода матрици инцидентности.
• Graf.Matrix.Adjacency_matrix: Реализация вывода матрици смежности.
Использование
Алгоритм Дейкстры
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)
Вывод матрици весов
python
g = Graph(4)
g.add_edge(0, 1, 10)
g.add_edge(0, 2, 15)
g.add_edge(1, 2, 20)
g.add_edge(2, 3, 30)
# выводим матрицу весов
g.print_matrix()
Вывод матрици инцидентности
python
graph = {
'A': ['B', 'C'],
'B': ['A', 'D', 'E'],
'C': ['A', 'F'],
'D': ['B'],
'E': ['B', 'F'],
'F': ['C', 'E']
}
inc_matrix = incidence_matrix(graph)
print("\nМатрица инцидентности:")
print(inc_matrix)
Вывод матрици смежности
python
g = Graph(4)
g.add_edge(0, 1, 10)
g.add_edge(0, 2, 15)
g.add_edge(1, 2, 20)
g.add_edge(2, 3, 30)
# выводим матрицу весов
g.print_matrix()
Автор
• Садова Диана • Жукова Арина
Лицензия
Этот проект лицензирован под 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.3.tar.gz.
File metadata
- Download URL: graf_lab_4_py-1.0.3.tar.gz
- Upload date:
- Size: 8.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
21ee0fbca53c78e8400a1e2df36bf6e31ae074afc048c92b56ebe183d54a4b3f
|
|
| MD5 |
5d2d7f1f8e051b879386eb3610bf9bf6
|
|
| BLAKE2b-256 |
9332dd896f98ce0a3fd4ad8e1d4dd136f67227b9f555c24e373bda80528b5e9f
|
File details
Details for the file Graf_Lab_4_Py-1.0.3-py3-none-any.whl.
File metadata
- Download URL: Graf_Lab_4_Py-1.0.3-py3-none-any.whl
- Upload date:
- Size: 10.8 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 |
2e5d12560a6fc1dcf31634e8c4eb564670317a44973a1755289657e9d5df54ad
|
|
| MD5 |
c4e5e033adc93e9558773cb24ce2e413
|
|
| BLAKE2b-256 |
50a0f45d5fc2abaccd194eddb82018ef5a8d063c3c036b128053c0ab5c561ae9
|