Это приложение позволяет выделять сообщества, находить ключевые вершины и делать раскладку направленных и ненаправленных, взвешенных и не взвешенных графов. Также поддерживается набор алгоритмов для анализа графа, в него входят алгоритм Форда-Беллмана, алгоритм Дейкстры и другие.
Приложение поддерживает сохранение в хранилища SQL
, CSV
, И Neo4J
Приложение работает на Java SDK 21 версии.
- Установка:
[email protected]: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]