{"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/a-convergent-single-loop-algorithm-for","title":"A Convergent Single-Loop Algorithm for Relaxation of Gromov-Wasserstein in Graph Data","arxiv_id":"2303.06595","date":"2023-03-12","proceeding":null,"authors":["Jiajin Li","Jianheng Tang","Lemin Kong","Huikang Liu","Jia Li","Anthony Man-Cho So","Jose Blanchet"],"abstract":"In this work, we present the Bregman Alternating Projected Gradient (BAPG) method, a single-loop algorithm that offers an approximate solution to the Gromov-Wasserstein (GW) distance. We introduce a novel relaxation technique that balances accuracy and computational efficiency, albeit with some compromises in the feasibility of the coupling map. Our analysis is based on the observation that the GW problem satisfies the Luo-Tseng error bound condition, which relates to estimating the distance of a point to the critical point set of the GW problem based on the optimality residual. This observation allows us to provide an approximation bound for the distance between the fixed-point set of BAPG and the critical point set of GW. Moreover, under a mild technical assumption, we can show that BAPG converges to its fixed point set. The effectiveness of BAPG has been validated through comprehensive numerical experiments in graph alignment and partition tasks, where it outperforms existing methods in terms of both solution quality and wall-clock time.","url_abs":"https://arxiv.org/abs/2303.06595v1","url_pdf":"https://arxiv.org/pdf/2303.06595v1.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":"a-convergent-single-loop-algorithm-for","repo_url":"https://github.com/PythonOT/POT","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":null},{"paper_slug":"a-convergent-single-loop-algorithm-for","repo_url":"https://github.com/squareroot3/gromov-wasserstein-for-graph","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"none","reach":{"status":"ok"}}],"tasks":[{"task_slug":"computational-efficiency","task_name":"Computational Efficiency"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2303.06595","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2303.06595"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+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/squareRoot3/Gromov-Wasserstein-for-Graph","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/PythonOT/POT","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/squareroot3/gromov-wasserstein-for-graph","reach":{"status":"ok"}}],"summary":{"ran_draft_wrong":4,"ran_violates":2,"ran_fixture":1,"ran_honours":1,"unverified":12},"by_repo_kind":{"official":{"samples":20,"ran":8,"repositories":2}},"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":4,"samples":[{"code_sha256_prefix":"3732009447ef8794","entry":"BAPG_numpy","repo":"squareroot3/gromov-wasserstein-for-graph","repo_kind":"official","path":"BAPG.py","file_url":"https://github.com/squareroot3/gromov-wasserstein-for-graph/blob/HEAD/BAPG.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3732009447ef8794"}},{"code_sha256_prefix":"fea4fdf57ebe3c67","entry":"BAPG_torch","repo":"squareroot3/gromov-wasserstein-for-graph","repo_kind":"official","path":"BAPG.py","file_url":"https://github.com/squareroot3/gromov-wasserstein-for-graph/blob/HEAD/BAPG.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"fea4fdf57ebe3c67"}},{"code_sha256_prefix":"2526e4236ba9aceb","entry":"BAPG_torch","repo":"squareroot3/gromov-wasserstein-for-graph","repo_kind":"official","path":"BAPG.py","file_url":"https://github.com/squareroot3/gromov-wasserstein-for-graph/blob/HEAD/BAPG.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"2526e4236ba9aceb"}},{"code_sha256_prefix":"f86b58c0521371f9","entry":"_check_args_backend","repo":"PythonOT/POT","repo_kind":"official","path":"ot/gromov/_bregman.py","file_url":"https://github.com/PythonOT/POT/blob/HEAD/ot/gromov/_bregman.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f86b58c0521371f9"}},{"code_sha256_prefix":"9cc04d687528332f","entry":"_get_backend_instance","repo":"PythonOT/POT","repo_kind":"official","path":"ot/gromov/_bregman.py","file_url":"https://github.com/PythonOT/POT/blob/HEAD/ot/gromov/_bregman.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9cc04d687528332f"}},{"code_sha256_prefix":"f75fddd85ad85071","entry":"im2mat","repo":"pythonot/pot","repo_kind":"official","path":"examples/gromov/plot_gromov_barycenter.py","file_url":"https://github.com/pythonot/pot/blob/HEAD/examples/gromov/plot_gromov_barycenter.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f75fddd85ad85071"}},{"code_sha256_prefix":"68f28b95be7dc320","entry":"loss","repo":"pythonot/pot","repo_kind":"official","path":"examples/gromov/plot_gromov.py","file_url":"https://github.com/pythonot/pot/blob/HEAD/examples/gromov/plot_gromov.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"68f28b95be7dc320"}},{"code_sha256_prefix":"0dd52901a4e5d301","entry":"unif","repo":"PythonOT/POT","repo_kind":"official","path":"ot/gromov/_bregman.py","file_url":"https://github.com/PythonOT/POT/blob/HEAD/ot/gromov/_bregman.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0dd52901a4e5d301"}},{"code_sha256_prefix":"a5238904a4e4c73a","entry":"BAPG_gromov_wasserstein","repo":"pythonot/pot","repo_kind":"official","path":"ot/gromov/_bregman.py","file_url":"https://github.com/pythonot/pot/blob/HEAD/ot/gromov/_bregman.py","link_basis":"first_harvest_node","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":"a5238904a4e4c73a"}},{"code_sha256_prefix":"ca060481e43bc1a6","entry":"BAPG_gromov_wasserstein","repo":"PythonOT/POT","repo_kind":"official","path":"ot/gromov/_bregman.py","file_url":"https://github.com/PythonOT/POT/blob/HEAD/ot/gromov/_bregman.py","link_basis":"first_harvest_node","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":"ca060481e43bc1a6"}},{"code_sha256_prefix":"50c4b814ae1f0351","entry":"BPG_torch","repo":"squareroot3/gromov-wasserstein-for-graph","repo_kind":"official","path":"BAPG.py","file_url":"https://github.com/squareroot3/gromov-wasserstein-for-graph/blob/HEAD/BAPG.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"50c4b814ae1f0351"}},{"code_sha256_prefix":"f9c6459155c463c5","entry":"_transform_matrix","repo":"PythonOT/POT","repo_kind":"official","path":"ot/gromov/_bregman.py","file_url":"https://github.com/PythonOT/POT/blob/HEAD/ot/gromov/_bregman.py","link_basis":"first_harvest_node","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":"f9c6459155c463c5"}},{"code_sha256_prefix":"26a87c54800c3167","entry":"entropic_gromov_wasserstein","repo":"pythonot/pot","repo_kind":"official","path":"ot/gromov/_bregman.py","file_url":"https://github.com/pythonot/pot/blob/HEAD/ot/gromov/_bregman.py","link_basis":"first_harvest_node","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":"26a87c54800c3167"}},{"code_sha256_prefix":"5635a0e892b837ad","entry":"entropic_gromov_wasserstein2","repo":"pythonot/pot","repo_kind":"official","path":"ot/gromov/_bregman.py","file_url":"https://github.com/pythonot/pot/blob/HEAD/ot/gromov/_bregman.py","link_basis":"first_harvest_node","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":"5635a0e892b837ad"}},{"code_sha256_prefix":"712a6270c1dd0bbf","entry":"get_backend","repo":"PythonOT/POT","repo_kind":"official","path":"ot/gromov/_bregman.py","file_url":"https://github.com/PythonOT/POT/blob/HEAD/ot/gromov/_bregman.py","link_basis":"first_harvest_node","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":"712a6270c1dd0bbf"}},{"code_sha256_prefix":"a88569799fd47931","entry":"gwggrad","repo":"PythonOT/POT","repo_kind":"official","path":"ot/gromov/_bregman.py","file_url":"https://github.com/PythonOT/POT/blob/HEAD/ot/gromov/_bregman.py","link_basis":"first_harvest_node","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":"a88569799fd47931"}},{"code_sha256_prefix":"9089edb601ad1644","entry":"gwloss","repo":"PythonOT/POT","repo_kind":"official","path":"ot/gromov/_bregman.py","file_url":"https://github.com/PythonOT/POT/blob/HEAD/ot/gromov/_bregman.py","link_basis":"first_harvest_node","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":"9089edb601ad1644"}},{"code_sha256_prefix":"0d56c45cf5357710","entry":"init_matrix","repo":"PythonOT/POT","repo_kind":"official","path":"ot/gromov/_bregman.py","file_url":"https://github.com/PythonOT/POT/blob/HEAD/ot/gromov/_bregman.py","link_basis":"first_harvest_node","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":"0d56c45cf5357710"}},{"code_sha256_prefix":"0ff35a81986fcc45","entry":"list_to_array","repo":"PythonOT/POT","repo_kind":"official","path":"ot/gromov/_bregman.py","file_url":"https://github.com/PythonOT/POT/blob/HEAD/ot/gromov/_bregman.py","link_basis":"first_harvest_node","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":"0ff35a81986fcc45"}},{"code_sha256_prefix":"eca75649af539797","entry":"tensor_product","repo":"PythonOT/POT","repo_kind":"official","path":"ot/gromov/_bregman.py","file_url":"https://github.com/PythonOT/POT/blob/HEAD/ot/gromov/_bregman.py","link_basis":"first_harvest_node","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":"eca75649af539797"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}