Skip to content

GM$GED#22

Merged
heatingma merged 3 commits intoThinklab-SJTU:mainfrom
binghao-cai:main
Mar 13, 2026
Merged

GM$GED#22
heatingma merged 3 commits intoThinklab-SJTU:mainfrom
binghao-cai:main

Conversation

@binghao-cai
Copy link
Copy Markdown
Contributor

  1. K的构建
    GM 的K 是(n2,n1,n2,n1) $\rightarrow$ (n2n1,n2n1).因而GED的K也要保持这种形式。我对solver中关于K的注释进行修改,修复GED K构建的顺序问题。
    alt text
    对于dummy非法点对的惩罚应该为0,只需要在求解后删除dummy点对的匹配就行。如果施加惩罚无法对应原本的cost,而且惩罚过大会造成rrwm等算法不稳定。所以不需要这一步 :

Ged 的K提供两种构建模式:is_compacted True对应只能用astar解, False可以使用rrwm,ipfp,sm求解
2. 求解器
根据论文《Graph Edit Distance as a Quadratic Program》 可以把K扩展成(n1+n2)来使用gm求解器解,但是这是非精确求解器,而且pygm求解器接口是以affinity的形似=式,需要把cost转化为affinity。具体而言操作如下:

  1. astar: 由于pygm的astar是针对GM问题求解,它把GM的K自动填充dummy_node,而GED问题已经dummy过了。所以我加入参数dummy判断是否需要自动填充。取-K为affinity.
  2. rrwm,sm,ipfp: affinity取exp(-K/temperature)。这里加入参数temperature(默认0.3)来调控。

在样例里,由于rrwm,sm,ipfp不是精确求解器,而且受temperature影响,不一定能达到最优。

  1. 数据
    GM 做了同构图和子图样例(10~20点)和一个8点小同构图样例测试astar
    GED 由于最优cost计算时间长,这里只提供8对8编辑样例
    alt text
    两张图均使用nx的几何图随机生成接口生成,我按照GED的K构建代价计算方式定义节点替换代价(几何图中两节点位置的曼哈顿距离>1e-5则视为替换) 使用nx.optimal_edit_paths获取最优编辑方式并把第1中视为ref_sol(可以有非常多的最优编辑方式),把GED的默认evaluate改为score模式。

  2. else
    计算md5时由于包含非numpy对象,GM&GED 会报错,对AffinityBuild QAPGraphBase重载__repr__

@heatingma heatingma merged commit b7be820 into Thinklab-SJTU:main Mar 13, 2026
8 of 11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants