Skip to main content

Библиотека для работы с графами и алгоритмами, включая алгоритмы Крускала, Гамильтона и минимального остовного дерева

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

kruskalhamiltonprimal-0.0.1.tar.gz (13.1 kB view details)

Uploaded Source

Built Distribution

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

KruskalHamiltonPrimal-0.0.1-py3-none-any.whl (13.7 kB view details)

Uploaded Python 3

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

Hashes for kruskalhamiltonprimal-0.0.1.tar.gz
Algorithm Hash digest
SHA256 1dd1e0317ffc9e77250cd859b44bb0ce1aeb9204801318619e65bc142b2a4ed3
MD5 b4415e968c66a6a33d97501ba9432e13
BLAKE2b-256 9cbbae28c3af023f03a09a7ed7352a57bc9ffe597971fbd035879eeb4665f45d

See more details on using hashes here.

File details

Details for the file KruskalHamiltonPrimal-0.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for KruskalHamiltonPrimal-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1941270871dcd49748ce9a5b8bee94011b93cea1b1f7a036bc04aea395e6930a
MD5 53c1a234360a5981543bc0d505011365
BLAKE2b-256 844ccf9efb224c8f1f057847eef721da169a0ad84ca19a40c531002f1eede835

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