Skip to content

Deymos01/Graph-Theory

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

130 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Graph Theory Console Tool

Graph Theory Console Tool — консольное приложение на Go для работы с графами.
Поддерживает анализ и выполнение классических алгоритмов, включая поиск в ширину, поиск в глубину, поиск кратчайших путей и определение компонент связности.
Реализована поддержка параллельных вычислений с использованием собственно разработанного worker pool, что позволяет ускорять обработку больших графов.


Возможности

  • Загрузка ориентированных и неориентированных графов из файлов
  • Вычисление SCC (Strongly Connected Components) и WCC (Weakly Connected Components)
  • Расчёт диаметра крупнейшего компонента связности разными методами
  • Подсчёт треугольников, локальных и глобальных коэффициентов кластеризации
  • Анализ устойчивости графа при удалении вершин
  • Поддержка параллельных вычислений через собственный worker pool

Технологии

  • Golang — язык разработки
  • Concurrency — goroutines и channels
  • Custom Worker Pool — для распределения вычислительных задач
  • CLI — консольный интерфейс для взаимодействия с пользователем

Установка и запуск

1. Клонировать репозиторий

git clone https://github.com/Deymos01/Graph-Theory.git
cd Graph-Theory/src

2. Установка зависимостей

go mod tidy

3. Запустить CLI

go run ./cmd/cli

После запуска появится приглашение:

Graph CLI started. Type '0' for help.
>

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

После запуска программы можно вводить команды. Для справки по доступным командам используйте 0.

Доступные команды

Команда Аргументы Описание
0 Показать справку по командам
1 <graph_type> <graph_name> graph_type: directed или undirected
graph_name: имя файла с графом (например, graph1.txt)
Загрузить граф из файла. Файл должен находиться в datasets/<graph_type>/.
2 Вычислить количество и размер сильно связанных компонент (SCC)
3 Вычислить количество и размер слабо связанных компонент (WCC)
4 Найти диаметр крупнейшей WCC методом Double Sweep
5 Найти диаметр крупнейшей WCC методом Snowball + Double Sweep
6 <percentile> процентиль (например, 0.9) Вычислить процентиль распределения расстояний в крупнейшей WCC
7 <percentile> процентиль (например, 0.9) Вычислить процентиль расстояний в крупнейшей WCC с методом Snowball
8 Подсчитать количество треугольников в графе
9 Вычислить средний коэффициент кластеризации
10 Средний коэффициент кластеризации только для крупнейшей WCC
11 Глобальный коэффициент кластеризации
12 <node_id> идентификатор вершины Локальный коэффициент кластеризации для заданной вершины
13 Распределение степеней вершин
14 <percent> процент (например, 0.1) Отношение размера WCC после удаления заданного процента вершин
15 <node_id1> <node_id2> две вершины Приближённая дистанция между двумя вершинами
99 Выйти из программы

About

Graph Theory Course Project | AMCP SPbU 2025 | Go (Golang)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors