{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/theory-and-approximate-solvers-for-branched","title":"Theory and Approximate Solvers for Branched Optimal Transport with Multiple Sources","arxiv_id":"2210.07702","date":"2022-10-14","proceeding":null,"authors":["Peter Lippmann","Enrique Fita Sanmartín","Fred A. Hamprecht"],"abstract":"Branched Optimal Transport (BOT) is a generalization of optimal transport in which transportation costs along an edge are subadditive. This subadditivity models an increase in transport efficiency when shipping mass along the same route, favoring branched transportation networks. We here study the NP-hard optimization of BOT networks connecting a finite number of sources and sinks in $\\mathbb{R}^2$. First, we show how to efficiently find the best geometry of a BOT network for many sources and sinks, given a topology. Second, we argue that a topology with more than three edges meeting at a branching point is never optimal. Third, we show that the results obtained for the Euclidean plane generalize directly to optimal transportation networks on two-dimensional Riemannian manifolds. Finally, we present a simple but effective approximate BOT solver combining geometric optimization with a combinatorial optimization of the network topology.","url_abs":"https://arxiv.org/abs/2210.07702v1","url_pdf":"https://arxiv.org/pdf/2210.07702v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"theory-and-approximate-solvers-for-branched","repo_url":"https://github.com/hci-unihd/branchedot","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"none","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"combinatorial-optimization","task_name":"Combinatorial Optimization"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2210.07702","atlas_url":"https://app.syntology.ai/?focus=2210.07702","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2210.07702"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"deterministic:regex_extraction","url":"https://github.com/hci-unihd/BranchedOT","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/hci-unihd/branchedot","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":20,"unverified":4},"by_repo_kind":{"official":{"samples":24,"ran":20,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"a04c5db725bb57a8","entry":"MST_prior_topology","repo":"hci-unihd/BranchedOT","repo_kind":"official","path":"src/MST_prior.py","file_url":"https://github.com/hci-unihd/BranchedOT/blob/HEAD/src/MST_prior.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a04c5db725bb57a8"}},{"code_sha256_prefix":"c58f1014c3a2dc58","entry":"OT_prior_topology","repo":"hci-unihd/BranchedOT","repo_kind":"official","path":"src/OT_prior.py","file_url":"https://github.com/hci-unihd/BranchedOT/blob/HEAD/src/OT_prior.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c58f1014c3a2dc58"}},{"code_sha256_prefix":"9d792a64ee44a8be","entry":"acceptance_probability","repo":"hci-unihd/BranchedOT","repo_kind":"official","path":"src/greedy_topology_optimization.py","file_url":"https://github.com/hci-unihd/BranchedOT/blob/HEAD/src/greedy_topology_optimization.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9d792a64ee44a8be"}},{"code_sha256_prefix":"43a6ab516b27adaa","entry":"calc_pivot_point","repo":"hci-unihd/BranchedOT","repo_kind":"official","path":"src/geometric_construction_solver.py","file_url":"https://github.com/hci-unihd/BranchedOT/blob/HEAD/src/geometric_construction_solver.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"43a6ab516b27adaa"}},{"code_sha256_prefix":"579b831de4b85636","entry":"constr_mat","repo":"hci-unihd/BranchedOT","repo_kind":"official","path":"src/OT_prior.py","file_url":"https://github.com/hci-unihd/BranchedOT/blob/HEAD/src/OT_prior.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"579b831de4b85636"}},{"code_sha256_prefix":"0fd87c4a1a8c80f8","entry":"cost_mat","repo":"hci-unihd/BranchedOT","repo_kind":"official","path":"src/OT_prior.py","file_url":"https://github.com/hci-unihd/BranchedOT/blob/HEAD/src/OT_prior.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0fd87c4a1a8c80f8"}},{"code_sha256_prefix":"2986c41f24d30fa6","entry":"dist_point_segments","repo":"hci-unihd/BranchedOT","repo_kind":"official","path":"src/utils.py","file_url":"https://github.com/hci-unihd/BranchedOT/blob/HEAD/src/utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2986c41f24d30fa6"}},{"code_sha256_prefix":"56f15ba093c99ba4","entry":"dist_segment_points","repo":"hci-unihd/BranchedOT","repo_kind":"official","path":"src/utils.py","file_url":"https://github.com/hci-unihd/BranchedOT/blob/HEAD/src/utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"56f15ba093c99ba4"}},{"code_sha256_prefix":"0588f2d4bbee52c4","entry":"eucl_dist","repo":"hci-unihd/BranchedOT","repo_kind":"official","path":"src/geometric_construction_solver.py","file_url":"https://github.com/hci-unihd/BranchedOT/blob/HEAD/src/geometric_construction_solver.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0588f2d4bbee52c4"}},{"code_sha256_prefix":"33b1fb5567d1ac3d","entry":"eucl_dist","repo":"hci-unihd/BranchedOT","repo_kind":"official","path":"src/utils.py","file_url":"https://github.com/hci-unihd/BranchedOT/blob/HEAD/src/utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"33b1fb5567d1ac3d"}},{"code_sha256_prefix":"8037bcf18cb92126","entry":"f","repo":"hci-unihd/BranchedOT","repo_kind":"official","path":"src/angular_stress_heuristic.py","file_url":"https://github.com/hci-unihd/BranchedOT/blob/HEAD/src/angular_stress_heuristic.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8037bcf18cb92126"}},{"code_sha256_prefix":"d7c5382f04e9bfb6","entry":"f","repo":"hci-unihd/BranchedOT","repo_kind":"official","path":"src/tree_growing_heuristic.py","file_url":"https://github.com/hci-unihd/BranchedOT/blob/HEAD/src/tree_growing_heuristic.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d7c5382f04e9bfb6"}},{"code_sha256_prefix":"a9eadc58f1d34aad","entry":"get_MST","repo":"hci-unihd/BranchedOT","repo_kind":"official","path":"src/MST_prior.py","file_url":"https://github.com/hci-unihd/BranchedOT/blob/HEAD/src/MST_prior.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a9eadc58f1d34aad"}},{"code_sha256_prefix":"e507661252422201","entry":"get_angles","repo":"hci-unihd/BranchedOT","repo_kind":"official","path":"src/tree_growing_heuristic.py","file_url":"https://github.com/hci-unihd/BranchedOT/blob/HEAD/src/tree_growing_heuristic.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e507661252422201"}},{"code_sha256_prefix":"c1adb979ae3016bf","entry":"get_phi","repo":"hci-unihd/BranchedOT","repo_kind":"official","path":"src/angular_stress_heuristic.py","file_url":"https://github.com/hci-unihd/BranchedOT/blob/HEAD/src/angular_stress_heuristic.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c1adb979ae3016bf"}},{"code_sha256_prefix":"196f3129b9c2f5f1","entry":"get_stationary_angle","repo":"hci-unihd/BranchedOT","repo_kind":"official","path":"src/angular_stress_heuristic.py","file_url":"https://github.com/hci-unihd/BranchedOT/blob/HEAD/src/angular_stress_heuristic.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"196f3129b9c2f5f1"}},{"code_sha256_prefix":"85cc104fd53fdcdd","entry":"init_topo","repo":"hci-unihd/BranchedOT","repo_kind":"official","path":"src/tree_growing_heuristic.py","file_url":"https://github.com/hci-unihd/BranchedOT/blob/HEAD/src/tree_growing_heuristic.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"85cc104fd53fdcdd"}},{"code_sha256_prefix":"383e7bb99ccb4c4a","entry":"kernel","repo":"hci-unihd/BranchedOT","repo_kind":"official","path":"src/greedy_topology_optimization.py","file_url":"https://github.com/hci-unihd/BranchedOT/blob/HEAD/src/greedy_topology_optimization.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"383e7bb99ccb4c4a"}},{"code_sha256_prefix":"5b33b44a4c2f5523","entry":"phi_from_x","repo":"hci-unihd/BranchedOT","repo_kind":"official","path":"src/geometric_construction_solver.py","file_url":"https://github.com/hci-unihd/BranchedOT/blob/HEAD/src/geometric_construction_solver.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5b33b44a4c2f5523"}},{"code_sha256_prefix":"156adf24aa20c165","entry":"preprocess_topo","repo":"hci-unihd/BranchedOT","repo_kind":"official","path":"src/fast_geometry_optimizer.py","file_url":"https://github.com/hci-unihd/BranchedOT/blob/HEAD/src/fast_geometry_optimizer.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"156adf24aa20c165"}},{"code_sha256_prefix":"4ad943abb762b708","entry":"build_A_and_b","repo":"hci-unihd/BranchedOT","repo_kind":"official","path":"src/iterative_geometry_solver.py","file_url":"https://github.com/hci-unihd/BranchedOT/blob/HEAD/src/iterative_geometry_solver.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4ad943abb762b708"}},{"code_sha256_prefix":"606b346190bd1f6c","entry":"check_full_tree_topo","repo":"hci-unihd/BranchedOT","repo_kind":"official","path":"src/iterative_geometry_solver.py","file_url":"https://github.com/hci-unihd/BranchedOT/blob/HEAD/src/iterative_geometry_solver.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"606b346190bd1f6c"}},{"code_sha256_prefix":"bcd251c042b7ff16","entry":"left_child_halfplane_decider","repo":"hci-unihd/BranchedOT","repo_kind":"official","path":"src/com_heuristic.py","file_url":"https://github.com/hci-unihd/BranchedOT/blob/HEAD/src/com_heuristic.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"bcd251c042b7ff16"}},{"code_sha256_prefix":"5541e639d3a73f2f","entry":"preprocess_from_topo_to_flows","repo":"hci-unihd/BranchedOT","repo_kind":"official","path":"src/general_preprocessing.py","file_url":"https://github.com/hci-unihd/BranchedOT/blob/HEAD/src/general_preprocessing.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5541e639d3a73f2f"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}