- Kotlin 1.9.22
- JDK 21.0.2
- Gradle 8.7
- Compose for Desktop 1.6.2: Для разработки графического пользовательского интерфейса.
- compose-multiplatform-file-picker 3.1.0: Для загрузки данных из файлов
- gephi-toolkit 0.10.1: Алгоритм раскладки графа
- sqlite-jdbc 3.41.2.2: Для работы с базой данных
- Exposed 0.50.1: Для работы с базой данных
Добро пожаловать в приложение Graphs Team 11. Этот проект создан для анализа графов, а так же для создания и генерации графов в обучающих целях. В проекте возможно сохранение данных в базу данных SQLite3, либо же в файлы формата graphML.
- ForceAtlas(2014) для раскладки графа
- Leiden algoritm(2019) для поиска сообществ
- Алгоритм поска мостов
- Алгоритм Дейсктры для поиска пути
- Алгоритм Косараджу для поиска компонент сильной связности
- Алгоритм Краскала для поиска минимального остовного дерева
При запуске вы увидите главный экран.
Здесь вы можете выбрать один из 4 методов первоначальной загрузки графа:
- Saved - загрузить файл из файла (что видно на фото), либо выбрать один из сохранённых в базе данных
- Manual - после выбора размера графа, сгенерирует граф с выбранным числом вершин без рёбер.
- Generate - позволяет воспользоваться одим из 4 генераторов: Случайное дерево, направленная и ненаправленная звезда и Flower Snark
- Empty - Пустой граф.
После выбора графов вы увидите главный экран.
- Движение вершин - зажав вершину левой кнопкой мыши и двигайте, куда вам надо. Если же вам надо двигать весь экран, то зажмите любое место, где нет вершины
- Создание вершин - правая кнопка мыши. Чтобы создать ребро, выберите две ноды удержав кнопку Shift, и после нажмите правой кнопкой мыши по любому месту, где нет вершины. Таким образом от первой до второй вершины будет проведено ребро
- Выбрать вершину - левая кнопка мыши по вершине
- Приближение/Отдаление - колёсико мыши
- Откатить изменение после алгоритма - Сtrl+z
Для удобства можно использовать горячие клавиши.
Отсюда вы можете запускать алгоритмы, а также косметически менять вид графа(пока только цвет всех вершин).
Рассмотрим несколько примеров:
- Алгоритм поиска мининального основного дерева;
- Алгоритм Поска пути. Для его запуска необходимо выбрать две вершины;
- Алгоритм Поиска Сообществ.
См. файл LICENSE для получения дополнительной информации.