Библиотека для работы с графами и алгоритмами, включая алгоритмы Крускала, Гамильтона и минимального остовного дерева
Project description
Минимальное Остовное Дерево и Гамильтонов Цикл
Ртот проект реализует алгоритмы для нахождения минимального остовного дерева (MST) Рё Гамильтонова цикла РІ графах. РћРЅ включает РІ себя три основных класса: Kruskal, Hamilton Рё Primal_min, каждый РёР· которых предоставляет различные методы для работы СЃ графами.
Установка
Для работы с проектом необходимо установить следующие библиотеки:
pip install networkx matplotlib
Описание классов
1. Kruskal
Класс Kruskal реализует алгоритм Краскала для нахождения минимального остовного дерева.
Конструктор
Kruskal(points, edges)
points: Список координат вершин графа.edges: Список рёбер графа, где каждое ребро представлено в виде кортежа (u, v, weight).
Методы
draw_only(k): Отображает граф и его рёбра.view(min_edges, max_edges, k): Отображает граф с минимальным и максимальным покрывающим деревом.kruskals_algorithm(edges): Реализует алгоритм Краскала для нахождения MST.sort_edges_min(): Сортирует рёбра по возрастанию веса.sort_edges_max(): Сортирует рёбра по убыванию веса.result_weight(edges): Вычисляет и выводит суммарный вес дерева.
2. Hamilton
Класс Hamilton реализует алгоритм для нахождения Гамильтонова цикла.
Конструктор
Hamilton(points, edges)
points: Список координат вершин графа.edges: Список рёбер графа в виде пар индексов вершин.
Методы
cycle_exist(cycle): Проверяет наличие Гамильтонова цикла и выводит его.draw(): Визуализирует граф.aviable(): Выводит доступные вершины.hamiltonian_cycle(start): Находит Гамильтонов цикл, начиная с заданной вершины.draw_graph(path=None): Отображает граф с выделенным Гамильтоновым циклом.
3. Primal_min
Класс Primal_min реализует алгоритм Прима для нахождения минимального остовного дерева.
Конструктор
Primal_min(graph)
graph: Граф в виде словаря, где ключи — это вершины, а значения — списки рёбер с весами.
Методы
run(begin): Запускает алгоритм Прима, начиная с заданной вершины.min_tree(): Выводит минимальное покрывающее дерево и его суммарный вес.
Пример использования
# Пример создания графа и нахождения минимального остовного дерева
points = [(0, 0), (1, 1), (2, 0), (1, -1)]
edges = [(0, 1, 1.5), (0, 2, 1.0), (1, 3, 2.0), (2, 3, 1.0)]
kruskal = Kruskal(points, edges)
sorted_edges = kruskal.sort_edges_min()
mst = kruskal.alg_Kraskala(sorted_edges)
kruskal.view(mst, sorted_edges, 3)
# Пример нахождения Гамильтонова цикла
hamilton = Hamilton(points, edges)
cycle = hamilton.hamiltonian_cycle(0)
hamilton.cycle_exist(cycle)
hamilton.draw_graph(cycle)
Лицензия
Ртот проект лицензирован РїРѕРґ MIT License. Пожалуйста, ознакомьтесь СЃ файлом 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
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 kruskalhamiltonprimal-0.0.1.tar.gz.
File metadata
- Download URL: kruskalhamiltonprimal-0.0.1.tar.gz
- Upload date:
- Size: 13.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1dd1e0317ffc9e77250cd859b44bb0ce1aeb9204801318619e65bc142b2a4ed3
|
|
| MD5 |
b4415e968c66a6a33d97501ba9432e13
|
|
| BLAKE2b-256 |
9cbbae28c3af023f03a09a7ed7352a57bc9ffe597971fbd035879eeb4665f45d
|
File details
Details for the file KruskalHamiltonPrimal-0.0.1-py3-none-any.whl.
File metadata
- Download URL: KruskalHamiltonPrimal-0.0.1-py3-none-any.whl
- Upload date:
- Size: 13.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1941270871dcd49748ce9a5b8bee94011b93cea1b1f7a036bc04aea395e6930a
|
|
| MD5 |
53c1a234360a5981543bc0d505011365
|
|
| BLAKE2b-256 |
844ccf9efb224c8f1f057847eef721da169a0ad84ca19a40c531002f1eede835
|