Was ist Graph Matching?

Werbung
Graph Matching
Torsten Gründel
03.11.2006
Überblick
1.
Was ist Graph Matching
2.
Morphismen
Allgeimeines
2. Graphisomorphismus
3. Subgraphisomorphismus
4. Eigenschaften
1.
Überblick
3. Kategorien von Matchingmethoden
1. Exakte Matchingmethoden
2. Unexaktes Matching
1.
2.
3.
Matchingkosten
Optimale & Suboptimale Inexakte
Matchingalgorithmen
Matchingmethoden
Überblick
4. Subgraphalgorithmus von Ullmann
1. Definitionen
2. Einfacher Aufzählungsalgorithmus
3. Verbesserte Prozedur
5. Zusammenfassung
6. Referenzen
1. Was ist Graph Matching?

Rechenintensive Technik aus den späten 70ern

„Graph Matching ist der Prozess, eine Korrespondenz zwischen Knoten und Kanten
zweier Graphen zu finden, die (mehr oder weniger strikte) Bedingungen erfüllt und
sicherstellt, dass gleiche Substrukturen eines Graphen auf gleiche Substrukturen des
anderen Graphen abgebildet werden.“

Vielfältige Einsatzgebiete:






2D & 3D Bildanalyse
Dokumentenverarbeitung
Biometrische Identifizierung
Bilddatenbanken
Videoanalyse
Biomedizinische und Biologische Anwendungen
2. Morphismen
1.
2.
3.
4.
Allgemeines
Graphisomorphismus
Subgraphisomorphismus
Eigenschaften
2. Morphismen

„Ein Morphismus ist eine Abbildung zwischen zwei mathematischen
Objekten des selben Typs, die die grundlegende Struktur der Objekte
erhält.“

Hier: Abbildung zwischen den Knoten der Graphen G=(V,E) und
G‘=(V‘,E‘), die die Kantenverbindungen erhält.

Definition Graphenhomomorphisus (schwächste Form):
f : V  V ' mit x, y E   f ( x), f ( y) E' für alle x, y V

Striktere Form: Graphmonomorphismus
Hier müssen die Knotenabbildungen eindeutig sein
2. Morphismen
1.
2.
3.
4.
Allgemeines
Graphisomorphismus
Subgraphisomorphismus
Eigenschaften
2.1 Graphisomorphismus

Definition: Ein Graphenisomorphismus ist ein bijektiver Graphenhomomorphismus
zwischen zwei Graphen G=(V,E) und G‘=(V‘,E‘)
f : V  V ' mit x, y E   f ( x), f ( y) E' für alle x, y V
4
A
D
F(A) = 1
F(B) = 2
C
F(C) = 3
F(D) = 4
B
E
1
3
2
F(E) = 5
5
2.1 Graphisomorphismus

Definition: Ein Graphenisomorphismus ist ein bijektiver Graphenhomomorphismus
zwischen zwei Graphen G=(V,E) und G‘=(V‘,E‘)
f : V  V ' mit x, y E   f ( x), f ( y) E' für alle x, y V
4
A
D
F(A) = 2
F(B) = 1
C
F(C) = 3
F(D) = 5
B
E
1
3
2
F(E) = 4
5
2. Morphismen
1.
2.
3.
4.
Allgemeines
Graphisomorphismus
Subgraphisomorphismus
Eigenschaften
2.2 Subgraphisomorphismus

Knoteninduzierter Subgraph: G‘=(V‘,E‘) ist Subgraph von G=(V,E) und

Definition: Ein Subgraphisomorphismus ist ein Graphisomorphismus zwischen
einem Graph G=(V,E) und einem knoteninduzierten Subgraph
eines zweiten Graphen G‘=(V‘,E‘)
u, v E : u V '  v V '  u, v E'
4
A
1
F(A) = 1
B
F(B) = 3
F(C) = 2
3
2
C
5
2.2 Subgraphisomorphismus

Knoteninduzierter Subgraph: G‘=(V‘,E‘) ist Subgraph von G=(V,E) und

Definition: Ein Subgraphisomorphismus ist ein Graphisomorphismus zwischen
einem Graph G=(V,E) und einem knoteninduzierten Subgraph
eines zweiten Graphen G‘=(V‘,E‘)
u, v E : u V '  v V '  u, v E'
4
A
F(A) = 1
B
F(B) = 3
F(C) = 4
1
3
2
C
5
2. Morphismen
1.
2.
3.
4.
Allgemeines
Graphisomorphismus
Subgraphisomorphismus
Eigenschaften
2.5 Eigenschaften

Graphisomorphismus: nicht bewiesen ob in NP

Alle Anderen: NP-Vollständig

Polynomielle Algorithmen für spezielle Graphen existieren

Rechenzeit heute akzeptabel, da



Gesteigerte Rechenleistung
Graphen in Praxis unterscheiden sich von „Worst Case Graphen“
Knoten- & Kanteneigenschaften reduzieren Suchzeiten
3. Graph Matching Methoden
1.
2.
Exaktes Matching
Unexaktes Matching
1.
2.
3.
Matchingkosten
Optimale & Suboptimale Inexakte Matchingalgorithmen
Matchingmethoden
3.1 Exaktes Graph Matching

Matching anhand vorgestellter
Morphismen
2
A
B

Meist werden Bäume verwendet

Suchstrategie (z.B. BFS, DFS) gibt
Reihenfolge vor

Grundidee: Partielles Matching
(anfangs leer) iterativ um
Matchingpaar erweitert
1
{ }
{(A,1)}
{(A,2)}
{(A,1),
{(A,1),
{(A,2),
{(A,2),
(B,1)}
(B,2)}
(B,1)}
(B,2)}
3. Graph Matching Methoden
1.
2.
Exaktes Matching
Unexaktes Matching
1.
2.
3.
Matchingkosten
Optimale & Suboptimale Inexakte Matchingalgorithmen
Matchingmethoden
3.2 Unexaktes Matching

Gründe für Unexaktheit:
1.
Nichtdeterministische Elemente sind enthalten
2.
Exaktes Matching ist zu teuer (Rechenzeit)

Matching muss nicht kantenerhaltend sein

Bestrafung durch zuweisen von Kosten bei Unterschieden

Suche Matching mit minimalen Kosten

Unterscheiden:

Optimale Inexakte Matchingalgorithem

Suboptimale Matchingalgorithmen
3.2.1 Matchingkosten

Fehlerkorrektur oder Fehlertoleranz

Zuweisung von Kosten für jeden Fehler (z.B. fehlender Knoten)
 Vergleich der Graphen anhand der Kosten

Graphenbearbeitungskosten (GbK)

Zuweisung von Kosten für Graphenbearbeitungsoperationen
 GbK = billigste Sequenz von Operationen zur Transformierung von G in G‘

Graphenbearbeitungsabstand

Graphenbearbeitungskosten erfüllen gewisse Bedingungen
 Operationen zur Transformierung als Maß für den Abstand zwischen Graphen

Graphabstand (nur für Algorithmen in metrischen Räumen)

Kostendefinition erfüllt Distanzfunktionseigenschaften
 Kosten sind Maß für die Ungleichheit von Graphen
3.2.2 Optimale & Suboptimale inexakte Matchingalgorithmen

Optimale Inexakte Matchingalgorithmen

Finden immer globales Minimum, also auch exakte Lösung wenn vorhanden
 Kommt mit Graphschwankungen zurecht
 Kostenintensiver als Exakte Algorithmen
 Eignen sich zur Lösung von Problemen wenn exakte Lösung erforderlich aber
Graphschwankungen vorliegen

Suboptimale Matchingalgorithmen




Finden lokales Minimum
Keine Garantie exakte Lösung zu finden, wenn vorhanden
Normalerweise polynomielle Vergleichszeit
Eignen sich, wenn Rechenzeit gespart werden soll
3.2.3 Matchingmethoden
Baumsuche



Heuristische Abschätzung der Matchingkosten für verbleibende Knoten
Entfernen von unfruchtbaren Pfaden anhand Abschätzungen
Kontinuierliche Optimierung



Grundidee:
1.
Graphmatching umwandeln in kontinuierliches, nichtlineares OP
2.
Anwendung eines Optimierungsalgorithmus um Lösung zu finden
3.
Rücktransformierung in Graphmatching Domäne
Polynomielle Rechenzeit (mit kleinem Exponenten) bzgl. Graphgröße
Spektralmethoden


Benutzt Eigenschaft, dass
G1 , G2 isomorph  EW G1   EW G2   EV G1   EV G2 
4. Ullmanns Subgraphalgorithmus
1.
2.
3.
4.
Allgemeines
Einfacher Aufzählalgorithmus
Verbesserte Version
Eigenschaften
4.1 Allgemeines

Wahrscheinlich bekanntester Graphmatching Algorithmus

Anwendbar für





Subgraphisomorphismus
Graphisomorphismen
Graphmonomorphismen
MCS
Maximum Clique

Exakter DFS Baumsuchalgorithmus

Findet Subgraphisomorphismen zwischen zwei Graphen G  V , E 
und G  V , E





4. Ullmanns Subgraphalgorithmus
1.
2.
3.
4.
Allgemeines
Einfacher Aufzählalgorithmus
Verbesserte Version
Eigenschaften
4.2 Einfacher Aufzählungsalgorithmus

Benutzen Matrizen der Form:

Einträge bestehen aus 0 und 1
 Genau eine 1 in jeder Reihe
 Nicht mehr als eine 1 pro Spalte



Matrizen dienen Zur Permutation von
Adjazenzmatrizen
Permutationsmatrix C  cij   M ' M ' B T








p

p  V
p  





und
p  V
Falls mij  1 , dann korrespondiert der j-te Knoten in G  zu dem i-ten Knoten
in G
4.2 Einfacher Aufzählungsalgorithmus (Beispiel Permutation)
0

1
B  
0

0

1
2
4
3
1
3
2
1 0 0

0 1 1
1 0 0

1 0 0 

1
0
0
0

 1

 
0 0 1 0  0
0 1 0 0 0

 

0
1 0 0 0 

 1
 0 0 1 0  
0 1 0 0 0

 0

0 0 1


 0 0 1  C
1 1 0


1 0 0 0


M '   0 0 1 0
 0 1 0 0


0
0 0 0 
 1
0 1 0  
0


1 0 0 
0
0 1

1 0
0 1

0 1 
1 0 0

0 1 1
1 0 0

1 0 0  
4.2 Einfacher Aufzählungsalgorithmus
G

Vergleiche Resultierenden Graph mit

Isomorphismus vorhanden falls i , j  a  1  c  1
ij
ij
1 i  p
1 j  p

0
Erstellung einer Startmatrix M mit
1 , falls der Grad des j - ten Knotens von G  dem Grad des i - ten Knotens von G
m 
0 , sonst
0
ij





Generierung aller M mit mij  1  mij  1
umändern von 1en in 0en

Baum von Matrizen mit Terminierungsebene p
'
'
0
durch systematisches
4.2 Einfacher Aufzählungsalgorithmus (Generierung Startmatrix)
G
1
2
3
1 1 1 1


1 1 1 1
 0 1 0 0


M
0 0 1


0 0 1
1 1 0


A
G
1
2
4
3
0
1 , falls der Grad von vj  dem Grad von vi
mij0  
0 , sonst
0

1
0

0

1 0 0

0 1 1
1 0 0

1 0 0 
B
4.2 Einfacher Aufzählungsalgorithmus (Der Algorithmus)
Step 7:
2:
3:
4:
5:
6:
Gibt
Suche
Falls
Überprüfe,
Speichere
es
Terminierungslevel
ersten
in aktueller
welche
ob
verwendbaren
esVariablen,
einen
Zeile
Reihe
Eintrag
verwendet
erreicht,
eine
Spalteneintrag
1,
weiter
deren
dann
wurde
rechts
überprüfe
Spalte
und
mit
inerhöhe
noch
Matrix
1 ob
und
nicht
die
gibt,
1: Backtracking
Initialisieren
der
starten
bei
Initialmatrix
und
verwendet
setze
Isomorphismus
der
Zeilenanzahl
1 ist
alle
und
anderen
wurde?
verwendet
umvorhanden
1 Einträge
Wennwerden
ja, der
dann
Zeile
kann
verwende
auf
0 verwendet
diese Spalte
erster
Zeile.
Alle
Spalten
wurden
noch
nicht
4.2 Einfacher Aufzählungsalgorithmus (Beispiel)
1 1 1 1


1 1 1 1
 0 1 0 0


1 0 0 0


1 1 1 1
 0 1 0 0


1 0 0 0


 0 0 1 0
 0 1 0 0


1 0 0 0


0 0 0 1
 0 1 0 0


1 0 0 0


 0 1 0 0
 0 1 0 0


1 0 0 0


 0 0 1 0
 0 1 0 0


1 0 0 0


0 0 0 1
 0 1 0 0


 0 1 0 0


1 1 1 1
 0 1 0 0


 0 1 0 0


1 0 0 0
 0 1 0 0


 0 1 0 0


 0 0 1 0
 0 1 0 0


 0 1 0 0


0 0 0 1
 0 1 0 0


Step 3
4
6
7
5
1
2
 0 0 1 0


1 1 1 1
 0 1 0 0


 0 0 1 0


1 0 0 0
 0 1 0 0


 0 0 1 0


0 0 0 1
 0 1 0 0


 0 0 1 0


 0 1 0 0
 0 1 0 0


 0 0 1 0


1 0 0 0
 0 1 0 0


 0 0 1 0


0 0 0 1
 0 1 0 0


0 0 0 1


1 1 1 1
 0 1 0 0


0 0 0 1


1 0 0 0
 0 1 0 0


0 0 0 1


 0 0 1 0
 0 1 0 0


0 0 0 1


 0 1 0 0
 0 1 0 0


0 0 0 1


1 0 0 0
 0 1 0 0


0 0 0 1


 0 0 1 0
 0 1 0 0


4.2 Einfacher Aufzählungsalgorithmus (Beispiel)
1 0 0 0


0
0
1
0


 0 1 0 0


1 0 0 0


0
0
0
1


 0 1 0 0


 0 0 1 0


1
0
0
0


 0 1 0 0


 0 0 1 0


0
0
0
1


 0 1 0 0


Berechnete s C  cij   M ' M ' B  jeweils
T
1
4
3
1
2
3
2
0 0 1


0
0
1


1 1 0


2
3
1
1
3
1
2
3
2
3
1
1
4
4
3
0 0 0 1


0
0
1
0


 0 1 0 0


Vergleiche mit A
0 0 1


0
0
1


1 1 0


1
0 0 0 1


1
0
0
0


 0 1 0 0


1
3
3
2
4.3 Verbesserte Prozedur


Wenn für alle Isomorphismen M‘ unter M gilt mij'  0
setze mij  0
vi gematcht auf vj 

 x   a
Neue Bedingung:

Iteratives Testen bis keine 1 in 0 umgewandelt wird
1 x  p
vx1

vy1
v j
vi
vx 2

m 1 dann
ij

1   y  mxy  byj  1
1 y  p


ix

vy 2
4.3 Verbesserte Prozedur (Der Algorithmus)
Step 10:
1:-Nächster
2
5:
6:
7:
8:
9:
Variablen
nächster
Überprüfe
Setze
4:
Fehler,
Nachbarn
Eintrag
Matrixeintrag
Matrixeintrag
aufsetzen
ob des
Nachbar
auf i-ten
0
Matrixeintrag
des
und
nächster
Knoten
i-ten
nächster
Knotens
Knoten
suchen
Knoten
0 ist auf
i, j
einen
neuerKnoten
Durchlauf
gemappt
werden
oder Erfolg
kann.
4.3 Verbesserte Prozedur (Anwendung)

Verbesserung durch Anwendung von
0 0 1


0 0 1
1 1 0


A


 aix 1   y  mxy  byj  1


1 y  p


1 1 1 1


1 1 1 1
 0 1 0 0


M
0
0

1
0

0

1 0 0

0 1 1
1 0 0

1 0 0 
B
4.3 Verbesserte Prozedur (Anwendung)






i=1
j=1
sc = 1000
lst = 3
h=2
1
x=3
0 0 1


0 0 1
1 1 0


A
Step 7
1,2,3,4,5
6
1 1 1 1


1 1 1 1
 0 1 0 0


M
0
0

1
0

0

1 0 0

0 1 1
1 0 0

1 0 0 
B
4.3 Verbesserte Prozedur (Anwendung)






i=1
j=2
sc = 0100
lst = 3
h=1
2
x=3
0 0 1


0 0 1
1 1 0


A
Step 8
6
7
9
 1 10 1 1 


1 1 1 1
 0 1 0 0


M
0
0

1
0

0

1 0 0

0 1 1
1 0 0

1 0 0 
B
4.3 Verbesserte Prozedur (Adaptierter Suchalgorithmus)
4.2 Verbesserte Prozedur (Beispiel)
1 0 1 1


1 0 1 1
 0 1 0 0


1 0 0 0


1 0 1 1
 0 1 0 0


 0 0 1 0


1 0 1 1
 0 1 0 0


Step 5
1
2
3
4
6
7
0 0 0 1


1 0 1 1
 0 1 0 0


1 0 0 0


 0 0 1 0
 0 1 0 0


1 0 0 0


0 0 0 1
 0 1 0 0


 0 0 1 0


1 0 0 0
 0 1 0 0


 0 0 1 0


0 0 0 1
 0 1 0 0


0 0 0 1


1 0 0 0
 0 1 0 0


0 0 0 1


 0 0 1 0
 0 1 0 0


1 0 0 0


 0 0 1 0
 0 1 0 0


1 0 0 0


0 0 0 1
 0 1 0 0


 0 0 1 0


1 0 0 0
 0 1 0 0


 0 0 1 0


0 0 0 1
 0 1 0 0


0 0 0 1


1 0 0 0
 0 1 0 0


0 0 0 1


 0 0 1 0
 0 1 0 0


5. Zusammenfassung

Rechenintensiv, aber akzeptabel

Verschiedene Arten von Matching und Methoden

Vielfältige Anwendungsgebiete und Methoden (>170 Referenzen im
zweiten Paper)

Für uns besonders RDF-Matching interessant
Referenzen
Herunterladen