Browse Source

Minor bug on comparaison between sub and del costs for edges

v0.1
Benoit GAUZERE 7 years ago
parent
commit
51a0f0b3e8
1 changed files with 8 additions and 6 deletions
  1. +8
    -6
      ged/GED.py

+ 8
- 6
ged/GED.py View File

@@ -1,10 +1,11 @@
from ged.costfunctions import BasicCostFunction, RiesenCostFunction
from ged.costfunctions import NeighboorhoodCostFunction
from ged.bipartiteGED import computeBipartiteCostMatrix, getOptimalMapping
from scipy.optimize import linear_sum_assignment

def ged(G1, G2, method='Riesen', rho=None, varrho=None,
cf=BasicCostFunction(1, 3, 1, 3)):
cf=BasicCostFunction(1, 3, 1, 3),
solver=linear_sum_assignment):
"""Compute Graph Edit Distance between G1 and G2 according to mapping
encoded within rho and varrho. Graph's node must be indexed by a
index which is used is rho and varrho
@@ -14,15 +15,16 @@ def ged(G1, G2, method='Riesen', rho=None, varrho=None,
"""
if ((rho is None) or (varrho is None)):
if(method == 'Riesen'):
cf_bp = RiesenCostFunction(cf)
cf_bp = RiesenCostFunction(cf,lsap_solver=solver)
elif(method == 'Neighboorhood'):
cf_bp = NeighboorhoodCostFunction(cf)
cf_bp = NeighboorhoodCostFunction(cf,lsap_solver=solver)
elif(method == 'Basic'):
cf_bp = cf
else:
raise NameError('Non existent method ')

rho, varrho = getOptimalMapping(computeBipartiteCostMatrix(G1, G2, cf_bp))
rho, varrho = getOptimalMapping(
computeBipartiteCostMatrix(G1, G2, cf_bp), lsap_solver=solver)

n = G1.number_of_nodes()
m = G2.number_of_nodes()
@@ -49,7 +51,7 @@ def ged(G1, G2, method='Riesen', rho=None, varrho=None,
if(mappedEdge):
e2 = [phi_i, phi_j, G2[phi_i][phi_j]]
min_cost = min(cf.ces(e, e2, G1, G2),
cf.ced(e, G1), cf.cei(e2, G2))
cf.ced(e, G1) + cf.cei(e2, G2))
ged += min_cost
else:
ged += cf.ced(e, G1)


Loading…
Cancel
Save