This repository refers to the framework developed as part of a master’s dissertation addressing the classic problem of finding node correspondences between two highly similar graphs. The work introduces a novel seedless approach based on Personalized PageRank fingerprints, employing an iterative algorithm that progressively maps nodes across rounds. In each round, the algorithm defines anchor-mapped pairs to enhance fingerprints and then determines matchings in the subsequent round.
- A Personalized PageRank Fingerprint Framework for Seedless Graph Matching
Master's dissertation presented to COPPE/UFRJ as a partial fulfillment of the requirements for the degree of Master of Science (M.Sc.)
Run the framework with uv, a fast Python package and project manager - no need to manually setup a virtual environment:
uv run graph-matching-ppr-framework/main.pyHere are the general options for the main.py file; please also refer to the PageRankSettings, DistanceMetricsSettings and SortMethod options defined in the file.
usage: main.py [-h] -a -b [-o ] [-m ] [-v]
options:
-h, --help show this help message and exit
-a, --edgelist-a edgelist filepath for graph A
-b, --edgelist-b edgelist filepath for graph B
-o, --progress-out progress output filepath
-m, --matching-out matching output filepath
-v, --verbose enable verbose output
To open JupyterLab (Notebook Interface), run the command below:
uv run --with jupyter jupyter labWhen porting the code to this repository, some bugs were fixed and certain equations were updated, which may affect previously reported results. The equations shown below reflect these revisions; for the original formulations and their explanations, please refer to the dissertation.
Equation 3.5: Distance between two sequences of PPR values, where the viewpoint and vertex of interest are different. Amortization is
Equation 3.7: New confidence metric