{"id":15055813,"url":"https://github.com/todense/omnigraph","last_synced_at":"2026-03-17T21:38:37.252Z","repository":{"id":42554004,"uuid":"282516910","full_name":"Todense/OmniGraph","owner":"Todense","description":"Desktop application for creating graphs and algorithm visualisation","archived":false,"fork":false,"pushed_at":"2024-10-03T18:44:53.000Z","size":6251,"stargazers_count":46,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-10T03:53:30.931Z","etag":null,"topics":["algorithm-visualisation","ant-colony-algorithms","creating-graphs","graph","graph-drawing","graph-editor","graph-theory","java","javafx","javafx-application","javafx-desktop-apps","javafx-project"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Todense.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-25T20:06:52.000Z","updated_at":"2025-03-23T06:05:54.000Z","dependencies_parsed_at":"2025-02-17T19:45:53.173Z","dependency_job_id":null,"html_url":"https://github.com/Todense/OmniGraph","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Todense%2FOmniGraph","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Todense%2FOmniGraph/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Todense%2FOmniGraph/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Todense%2FOmniGraph/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Todense","download_url":"https://codeload.github.com/Todense/OmniGraph/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248154998,"owners_count":21056542,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithm-visualisation","ant-colony-algorithms","creating-graphs","graph","graph-drawing","graph-editor","graph-theory","java","javafx","javafx-application","javafx-desktop-apps","javafx-project"],"created_at":"2024-09-24T21:46:31.467Z","updated_at":"2026-03-17T21:38:37.223Z","avatar_url":"https://github.com/Todense.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OmniGraph\nA multiplatform desktop application that lets you build graphs and visualize a collection of algorithms. Build in JavaFX.\n\n\n![main](src/main/resources/screenshots/main.png)\n\n\n## Features Overview\n\n* Interactive graph editor\n* Classic algorithms step-by-step visualization\n* Graph layout algorithms\n* Travelling salesman problem solvers\n* Random \u0026 preset graph generators\n* Graph export \u0026 import\n\n## How To Run\nOmniGraph runs on Windows, Linux and macOS - Java 11+ is required.\n\nDownload and run the app with jar file from the [latest release](https://github.com/Todense/OmniGraph/releases/latest),\n\nor clone \u0026 run with maven:\n```\ngit clone https://github.com/Todense/OmniGraph.git\ncd OmniGraph\nmvn clean javafx:run\n```\n\n\n## Features\n\n### Basic algorithms\n\nStep-by-step visualizations for basic algorithms, including:\n\n* DFS\n* BFS\n* Dijkstra's shortest path algorithm\n* A* shortest path algorithm\n* Prim's minimum spanning tree algorithm\n* Kruskal's minimum spanning tree algorithm\n* Hamilton cycle search algorithm\n\n![astar](src/main/resources/screenshots/astar.png)\n\n\n### Layout algorithms\n\nLayout algorithms aims to create readable graph drawing by arranging node positions.\n\nCurrently, OmniGraph has two force-based layout algorithms:\n\n* Adaptive cooling force-directed layout by Yifan Hu [[1]](#1)\n* D3-Force Layout algorithm [[2]](#2)\n\nBoth algorithms are dynamic, meaning graph can be changed by user while algorithm is running.\n\nFor larger graphs, it is best to use Barnes-Hut algorithm which speeds up computations.\nAlso, better layout could be achieved by using multilevel variants which include graph prolongation step between layouts step\n(see section 5 of [[1]](#1)).\n\n\n![layout](src/main/resources/screenshots/layout.png)\n\n### Travelling salesman problem solvers\n\nCurrent algorithms for solving TSP are several variants of [ant colony optimization technique](https://en.wikipedia.org/wiki/Ant_colony_optimization_algorithms) for TSP based on [[3]](#3):\n\n* Ant System\n* Ant Colony System\n* Ranked Ant System\n* Max-Min Ant System\n\nParameters of solvers can be tweaked while algorithms are running. \nOptions for visualization include moving ants and pheromone levels animations.\n\n![tsp](src/main/resources/screenshots/tsp.png)\n\n### Generators\n\nGraph generators include both random graph models and pre-defined collections of graphs (e.g. cycles, grids)\n\nRandom generators:\n* Erdős–Rényi model\n* Barabási–Albert model\n* Geometric model\n* Randomized geometric model\n* Maze generator\n\n\n![generated](src/main/resources/screenshots/generated.png)\n\n### Saving \u0026 importing graphs\n\nSupported file formats:\n* .ogr - OmniGraph custom format (save node positions, node labels, edge weights and colors)\n* .tsp -  [TSPLIB](http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/) format for the travelling salesman problem (only EUC_2D edge weight type)\n* .mtx - [Matrix Market](https://math.nist.gov/MatrixMarket/) format (save structure of a graph)\n* .graphml - [GraphML](http://graphml.graphdrawing.org/) format (save node positions)\n* .svg - export graph as SVG image\n\n\n## Build with\n\n* Java 11\n* [OpenJFX](https://openjfx.io/)\n* [Maven](https://maven.apache.org/) - dependency management\n* [Scene Builder](https://gluonhq.com/products/scene-builder/) - visual layout tool for JavaFX Applications\n* [MvvmFX](https://github.com/sialcasa/mvvmFX) - an application framework for implementing the Model-View-ViewModel Pattern for JavaFX\n* [ControlsFX](https://github.com/controlsfx/controlsfx) - custom JavaFX controls\n* [JFoenix](https://github.com/jfoenixadmin/JFoenix) - JavaFX material design library\n* [Ikonli](https://github.com/kordamp/ikonli) - icon packs for Java applications\n* [JUnit 5](https://junit.org/junit5/) - Java testing framework\n* CSS\n\n\n## References\n\n\u003ca id=\"1\"\u003e[1]\u003c/a\u003e\nHu, Yifan. (2005). Efficient and High Quality Force-Directed Graph Drawing. Mathematica Journal. 10. 37-71.\n\n\u003ca id=\"2\"\u003e[2]\u003c/a\u003e\nM. Bostock. (2011) Force-directed Graph Layout Using Velocity Verlet Integration. https://github.com/d3/d3-force\n\n\u003ca id=\"3\"\u003e[3]\u003c/a\u003e\nSt, Thomas \u0026 Dorigo, Marco. (1999). ACO Algorithms for the Traveling Salesman Problem.\n\n\n\n\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftodense%2Fomnigraph","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftodense%2Fomnigraph","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftodense%2Fomnigraph/lists"}