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 — консольный интерфейс для взаимодействия с пользователем
git clone https://github.com/Deymos01/Graph-Theory.git
cd Graph-Theory/srcgo mod tidygo run ./cmd/cliПосле запуска появится приглашение:
Graph CLI started. Type '0' for help.
>После запуска программы можно вводить команды.
Для справки по доступным командам используйте 0.
| Команда | Аргументы | Описание |
|---|---|---|
0 |
– | Показать справку по командам |
1 <graph_type> <graph_name> |
graph_type: directed или undirectedgraph_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 |
– | Выйти из программы |