Это приложение позволяет выделять сообщества, находить ключевые вершины и делать раскладку направленных и ненаправленных, взвешенных и не взвешенных графов. Также поддерживается набор алгоритмов для анализа графа, в него входят алгоритм Форда-Беллмана, алгоритм Дейкстры и другие.
Приложение поддерживает сохранение в хранилища SQL, CSV, И Neo4J
Приложение работает на Java SDK 21 версии.
- Установка:
git@github.com:spbu-coding-2023/graphs-graph-7.git
- Запуск:
./gradlew run
Для раскладки графа используется алгоритм ForceAtlas2.
Приложение может читать два типа баз данных. При этом сохраняются все базы данных во второй тип
- Необработанный граф. Две таблицы -- на ребра и вершины графа
| id | data | community |
|---|---|---|
| integer | text | -1 |
id - уникальный идентификационный номер
data - информация, хранимая в вершине
community - информация о том, находится ли вершина в сообществе. Изначально равняется -1, после выполнения алгоритма кластеризации, равняется номеру сообщества
| id | first | second | weight |
|---|---|---|---|
| integer | int | int | Long |
id - уникальный идентификационный номер
first - id первой вершины, в случае направленного графа, считается началом ребра
second -id второй вершины, в случае направленного графа, считается концом ребра
weight - вес ребра. В случае не взвешенного графа, у всех ребер он равен единице
- Обработанный граф. В таком случае должна быть третья таблица, а в таблице Vertices в поле community вместо -1 могут стоять непосредственно номера community
| id | vertex | x | y | color |
|---|---|---|---|---|
| integer | int | double | double | text |
id - уникальный идентификационный номер
vertex- id вершины из таблицы Vertices
x, y - координаты вершины
color - цвет формата RGB в следующем виде "r:g:b", где r,g,b - float.
Cохраненные графы находятся в /saves/sqlite/
Для загрузки базы данных из данной директории, выберите в меню загрузки формат SQL и укажите название графа. Для запуска примера напишите
Shelbiks.db
Сохранение происходит в меню сохранения. Достаточно выбрать формать SQL и указать название графа в формате name.db. Граф будет сохранен в /saves/sqlite/
[WIP]