{"id":15057456,"url":"https://github.com/babaid/combinatorial-optimization","last_synced_at":"2026-02-05T04:02:11.467Z","repository":{"id":167206496,"uuid":"640512865","full_name":"babaid/Combinatorial-Optimization","owner":"babaid","description":"Some combinatorial optimization algorithms on graphs written in Julia.","archived":false,"fork":false,"pushed_at":"2023-06-13T11:06:40.000Z","size":187,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-05T04:14:16.306Z","etag":null,"topics":["combinatorial-optimization","dijkstra-algorithm","graph-algorithms","graphs","julia","julialang","kruskal-algorithm","linear-algebra","linear-programming","prims-algorithm","random-walk","shortest-path-algorithm"],"latest_commit_sha":null,"homepage":"","language":"Julia","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/babaid.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":"2023-05-14T10:46:51.000Z","updated_at":"2023-05-21T09:17:30.000Z","dependencies_parsed_at":null,"dependency_job_id":"7329fb8c-e2e4-41b5-a6ce-db3b3546f1ae","html_url":"https://github.com/babaid/Combinatorial-Optimization","commit_stats":null,"previous_names":["babaid/combinatorial-optimization"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/babaid/Combinatorial-Optimization","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/babaid%2FCombinatorial-Optimization","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/babaid%2FCombinatorial-Optimization/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/babaid%2FCombinatorial-Optimization/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/babaid%2FCombinatorial-Optimization/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/babaid","download_url":"https://codeload.github.com/babaid/Combinatorial-Optimization/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/babaid%2FCombinatorial-Optimization/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29110567,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T03:44:17.043Z","status":"ssl_error","status_checked_at":"2026-02-05T03:44:12.077Z","response_time":65,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["combinatorial-optimization","dijkstra-algorithm","graph-algorithms","graphs","julia","julialang","kruskal-algorithm","linear-algebra","linear-programming","prims-algorithm","random-walk","shortest-path-algorithm"],"created_at":"2024-09-24T22:06:48.992Z","updated_at":"2026-02-05T04:02:11.439Z","avatar_url":"https://github.com/babaid.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Combinatorial-Optimization\n## Introduction\nThis repository contains some combinatorial optimization algorithms on graphs implemented by me. I try to also include intuitive explanations and resources to get more into the topic.\nMost of the algorithms I try to implement from scratch, not using any third-party libraries, this way its maybe more challenging but also more valuable.\nI intend not to use libraries for Graphs also for this same reason.\n\n\nThe basic problems which I want to solve in this repo are the following:\n+ Shortest Path problems (Dijkstra, etc.)\n+ Minimum Spanning Tree (MST) problems (Prim, Kruskal)\n+ Maximum Flow problems (Ford-Fulkerson)\n+ Minimum Flow problems\n+ some more coming...\n\n# On representations of graphs\nAssuming some prior mathematical knowledge of graphs, in practice A graph G can be usually be represented in three ways:\n1. Node List \u0026 Edge List \u0026 Edge Weight List \n    + $V(G) = \\set{ v |\\text{ v is a node in G} \\}$\n    + $E(G) = \\set{(i, j) |\\text{ if }v_i \\in \\text{ G is connected to }v_j \\in G}$\n    + $W(G) = \\set{w_i(e_i) | \\text{ for }e_i\\in E(G) }$\n\n2. Edge Index \u0026 Edge Weights\n\n    + $E(G) \\in \\mathbb{N}^{2xn}$, where $E[1, :]$ := Starting nodes of edges, $E[2,:]$ := Nodes that the edges point to\n    + $W(G)\\in \\mathbb{R^{1xn}}$, where $W[i]$ corresponds to the weight of edge $E[:, i]$\n\n3. Adjacency Matrix\n    + $A\\in\\mathbb{R^{NxN}}$, where if it is a weighted graph:\n    + $A_{i, j}$ = $W[i, j]$ if nodes i and j are connected, else Inf\nand for a graph without weights\n    + $A_{i, j}$ = 1 if nodes i and j are connected, else 0\ncan also work.\n\n\nEach representation has its advantages and disadvantages. The second representation is usually used in libraries (e.g. PyTorch Geometric) as it is sparse, therefore computationally less expensive than the others. Whereas some problems are easier to understand/visualize on an adjacency matrix, others can be implemented easier in the more mathematical formulation (1.).\n\nA nice article on representing graphs can be found [here](https://medium.com/basecs/from-theory-to-practice-representing-graphs-cfd782c5be38#:~:text=An%20adjacency%20list%20is%20the,the%20neighbors%20of%20another%20node.).\n\n\n# Usage \n\nOnly thing you need is julia(\u003e1.8). After cloning you can either use the environment already included or simply your own. Only few standard packages are used, LinearAlgebra, Plotting stuff (Plots/Makie) and later maybe StatsBase, Distributions and Random if there will be something on random walks on graphs or something alike.\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbabaid%2Fcombinatorial-optimization","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbabaid%2Fcombinatorial-optimization","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbabaid%2Fcombinatorial-optimization/lists"}