The application was written by first-year student of software engineering at St. Petersburg State University: Khmelev Vladimir.
I present MVVM graph application designed to simplify user interaction with graphs and instruments to explore its properties.
- Clone the repository:
git clone git@github.com:spbu-coding-2024/graphs-graphs-team-7.git - Go to the project directory:
cd graphs-graphs-team-7 - Build the project with Gradle:
./gradlew build - Run application:
./gradlew run - Also run tests:
./gradlew test
After launching, you will see a white canvas.
You can view it by clicking on "Управление".
To create a graph, you can click on the "Generate" button and select the number of vertices.
To connect vertices, you can click on "Merge Vertices" and on the "V" keyboard, and then click on two vertices.
If you want to create an edge with a certain weight, then click on "Add Edge", then select the vertices you need and write the weight.
There are settings for Dijkstra's algorithm:
- Click on "Set Start".
- Click on a vertex.
- Click on "Set End"
- Click on a vertex.
- Click on "Algorithms" - "Dijkstra's algorithm" - The shortest path and the route weight will be displayed at the top.
- Dijkstra's algorithm - finds the shortest path in a weighted graph.
- Kosaraju's algorithm - detects strongly connected components.
- ForceAtlas2 algorithm - an algorithm for laying out a graph on a plane based on the forces of attraction and attraction.
- JSON - The application implements convenient work with JSON files, which allows users to save and load graphs with all their properties preserved. Each graph is saved with all vertices, edges, weights and additional parameters, such as vertex positions on the plane. This ensures accurate restoration of the graph state when saving/loading.
- CSV - tabular format support is implemented: easy editing in Excel/Google tables.
- Jetpack Compose 1.6.0
- Gradle 8.13
- Jacoco
- JUnit5
- Kotlin 1.9.22
- License - This project is licensed under the MIT license.