{"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/graph-convolutional-networks-with-dual","title":"Graph Convolutional Networks with Dual Message Passing for Subgraph Isomorphism Counting and Matching","arxiv_id":"2112.08764","date":"2021-12-16","proceeding":null,"authors":["Xin Liu","Yangqiu Song"],"abstract":"Graph neural networks (GNNs) and message passing neural networks (MPNNs) have been proven to be expressive for subgraph structures in many applications. Some applications in heterogeneous graphs require explicit edge modeling, such as subgraph isomorphism counting and matching. However, existing message passing mechanisms are not designed well in theory. In this paper, we start from a particular edge-to-vertex transform and exploit the isomorphism property in the edge-to-vertex dual graphs. We prove that searching isomorphisms on the original graph is equivalent to searching on its dual graph. Based on this observation, we propose dual message passing neural networks (DMPNNs) to enhance the substructure representation learning in an asynchronous way for subgraph isomorphism counting and matching as well as unsupervised node classification. Extensive experiments demonstrate the robust performance of DMPNNs by combining both node and edge representation learning in synthetic and real heterogeneous graphs. Code is available at https://github.com/HKUST-KnowComp/DualMessagePassing.","url_abs":"https://arxiv.org/abs/2112.08764v1","url_pdf":"https://arxiv.org/pdf/2112.08764v1.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":"graph-convolutional-networks-with-dual","repo_url":"https://github.com/hkust-knowcomp/dualmessagepassing","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"node-classification","task_name":"Node Classification"},{"task_slug":"representation-learning","task_name":"Representation Learning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2112.08764","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2112.08764"}},"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":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/hkust-knowcomp/dualmessagepassing","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":8},"by_repo_kind":{"official":{"samples":8,"ran":0,"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":"6f34016d1bcce3bf","entry":"complex_conj","repo":"hkust-knowcomp/dualmessagepassing","repo_kind":"official","path":"SubgraphCountingMatching/models/compgcn.py","file_url":"https://github.com/hkust-knowcomp/dualmessagepassing/blob/HEAD/SubgraphCountingMatching/models/compgcn.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":"6f34016d1bcce3bf"}},{"code_sha256_prefix":"c6b854db6b575c1f","entry":"complex_mul","repo":"hkust-knowcomp/dualmessagepassing","repo_kind":"official","path":"SubgraphCountingMatching/models/compgcn.py","file_url":"https://github.com/hkust-knowcomp/dualmessagepassing/blob/HEAD/SubgraphCountingMatching/models/compgcn.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":"c6b854db6b575c1f"}},{"code_sha256_prefix":"ba9716ba350cc4dc","entry":"compute_nodeseq_subisoweights","repo":"hkust-knowcomp/dualmessagepassing","repo_kind":"official","path":"SubgraphCountingMatching/dataset.py","file_url":"https://github.com/hkust-knowcomp/dualmessagepassing/blob/HEAD/SubgraphCountingMatching/dataset.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":"ba9716ba350cc4dc"}},{"code_sha256_prefix":"ee45fe48a8ff0abe","entry":"get_enc_len","repo":"hkust-knowcomp/dualmessagepassing","repo_kind":"official","path":"SubgraphCountingMatching/models/embed.py","file_url":"https://github.com/hkust-knowcomp/dualmessagepassing/blob/HEAD/SubgraphCountingMatching/models/embed.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":"ee45fe48a8ff0abe"}},{"code_sha256_prefix":"654483b137495525","entry":"int2anybase","repo":"hkust-knowcomp/dualmessagepassing","repo_kind":"official","path":"SubgraphCountingMatching/models/embed.py","file_url":"https://github.com/hkust-knowcomp/dualmessagepassing/blob/HEAD/SubgraphCountingMatching/models/embed.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":"654483b137495525"}},{"code_sha256_prefix":"30274b70946a5a67","entry":"int2multihot","repo":"hkust-knowcomp/dualmessagepassing","repo_kind":"official","path":"SubgraphCountingMatching/models/embed.py","file_url":"https://github.com/hkust-knowcomp/dualmessagepassing/blob/HEAD/SubgraphCountingMatching/models/embed.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":"30274b70946a5a67"}},{"code_sha256_prefix":"ef5f1a00e4f70fe6","entry":"long_array_bisect_right","repo":"hkust-knowcomp/dualmessagepassing","repo_kind":"official","path":"SubgraphCountingMatching/dataset.py","file_url":"https://github.com/hkust-knowcomp/dualmessagepassing/blob/HEAD/SubgraphCountingMatching/dataset.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":"ef5f1a00e4f70fe6"}},{"code_sha256_prefix":"ecb122a3e6ea767f","entry":"long_item_bisect_left","repo":"hkust-knowcomp/dualmessagepassing","repo_kind":"official","path":"SubgraphCountingMatching/dataset.py","file_url":"https://github.com/hkust-knowcomp/dualmessagepassing/blob/HEAD/SubgraphCountingMatching/dataset.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":"ecb122a3e6ea767f"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}