Tải bản đầy đủ (.pdf) (20 trang)

Giải bài toán đồ thị đẳng cấu dùng thuật toán VF

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (767.7 KB, 20 trang )


I HC QUC GIA TP. H CHÍ MINH
I HC CÔNG NGH THÔNG TIN
KHOA KHOA HC MÁY TÍNH




TIU LUN
:









Ging dn: PGS. TS. 
Hc viên thc hin: NGUY
Lp: Cao hc Khóa 6 MSHV: CH1101159



TP. H Chí Minh, tháng 08 

Em xin bày t lòng bin PGS. TS. i hc Công
Ngh ng dn, cung cp kin thc, truyn
t nhng kinh nghim quí báu giúp em hoàn thành tt bài tiu lun này.
, các anh, ch  tr, lo lng viên.


ng tht c các bng h chúng tôi trong quá trình thc
hin bài tiu lun này.
u c gc chn s không tránh khi nhng thiu sót, em
rt mong nhc s n ca các Thy giáo, Cô giáo và các b 
c hoàn thi
Em xin chân thành c
Tp H Chí Minh, tháng 05 
Hc viên

NHN XÉT
(Ca ging dn)





























 1
 th 2
 th 2
 3
1.2.1. Cnh liên thunh k, bc 3
 4
1.3. Biu di th 4
1.3.1. Ma trn k 4
1.3.2. Danh sách cnh 5
1.3.3. Danh sách k 6
1.3.4. Danh sách liên thuc 7
Ch th ng cu 8
2.1. Gii thiu bài toán 8
2.2. Thut toán VF 9
2.3. Biu din thut toán VF 10
2.4. Các lut xét tính kh thi ca trng thái 11
 phc tp ca thut toán VF 12
t lun 13
 14
TÀI LIU THAM KHO 16




Tiu lun CSDL nâng cao: Gi th ng cu bng thut toán VF Trang 1

GVHD: PGS. TS.  Hc viên: Nguy

 th là mt cu trúc d lic s dng rng rãi trong vic biu din thông tin
c ng dng rng trong qun lý và khai phá d lin các bài
 th th ng cn nay vi gii
hoàn ch phc tp ca bài toán là rt l th có s nh ln và m
các cnh dày. ng 5 thum gii quyt
 th ng cu bao gm Ullman, SD, Nauty, VF và VF2. Trong s u
qu nht là VF và VF2 vi VF2 là thut toán ci tin da trên VF.
Báo cáo s trình bày v  lý thuy thm v bài toán
ng c thng ca thut, ng thi tính toán  phc
tp ca thut toán này nhm làm rõ tính hiu qu ca thut toán VF.

Tiu lun CSDL nâng cao: Gi th ng cu bng thut toán VF Trang 2

GVHD: PGS. TS.  Hc viên: Nguy
 
1.1. 
 th là mô hình biu din mt tng và mi quan h hai ngôi gia các
ng:
Graph = Object + Connections
G = (V,E)
Có th  th G là mt cp các
nh (vertices) biu ding và E gi là tp các cnh (edges) biu din mi
quan h gi ng. Chúng ta quan tâm ti mi quan h hai ngôi (pairwise
relations) ging nên có th coi E là tp các cp (u, v) vi u và v là hai

nh ca V biu ding có quan h vi nhau.

Hình 1: Các ng dng c th.
Có th phân lo th c tính và s ng ca tp các cnh E:
 c g th (hay gi t th) nu ginh u, v  V có
nhiu nht là 1 cnh trong E ni t n v.
 c g th (multigraph) nu ginh u, v  V có th có nhiu
nh trong E ni u và v. Nu có nhiu cnh ni ginh u, v  V
thì nhng cc gi là cnh song song (parallel edges)
 c g th ng (undirected graph) nu các cnh trong E là
ng, tc là cnh nnh u, v  V bnh ni 2
nh v, u. Hay nói cách khác, tp E gm các cp (u, v) không tính th t: (u,
v) = (v, u).
 c g th ng (directed graph) nu các cnh trong E là có
ng, tc là có th có cnh ni t c
Tiu lun CSDL nâng cao: Gi th ng cu bng thut toán VF Trang 3

GVHD: PGS. TS.  Hc viên: Nguy
có cnh ni t nh u. Hay nói cách khác, tp E gm các cp (u,
v) có tính th t: (u, v)   th ng, các cc
gi là các cung (arcs).

Hình 2: Phân lo th.
1.2. 
 th G = (V, E) là mt cu trúc ri rc, tc là các tp V và E
là tc, vì vy ta có th  th t n t
ca tng nht các phn t thuc tp V và E vi s th t ca chúng.
i lp trình cho máy tính thì ta ch n
 th hu hn (V và E là tp hu hn), chính vì vy t  sau, nu không chú
thích gì thêm thì khi nói t th, ta hiu r th hu hn.

1.2.1. Cnh liên thunh k, bc
i v th ng G = (V, E). Xét mt cnh e  E, nu e = (u,v) thì ta nói hai
nh u và v là k nhau (adjacent) và cnh e này liên thuc (incident) vnh
v.
Vi m th c (degree) ca v, kí hiu
deg(v) là s cnh liên thuc v th thì s cnh liên thuc v
s nh k vi v.
i v th ng G = (V, E). Xét trong mt cung e  E, nu e = (u,v) thì ta
nói u ni ti v và v ni t 
c gnh c gnh cui ca cung e.
Tiu lun CSDL nâng cao: Gi th ng cu bng thut toán VF Trang 4

GVHD: PGS. TS.  Hc viên: Nguy
Vi m th c ra (out-degree) ca v
kí hiu deg
+
(v) là s i nó; bán bc vào (in-degree) kí hiu deg
-
(v) là s
.
1.2.2. 
Mt nh:
P = <p
0
, p
1

k
>
Sao cho (p

i-1
, p
i
)  E,vi mc gi là m
này gnh p
0
, p
1

k
và k cnh (p
0
, p
1
), (p
1
, p
2
), 
k-1
, p
k
). Nu có mt

k,
, kí hiu p
0
~> p
k
nh p

0
c gnh
p
k
gnh cui cnh p
1
, p
2

k-1
c gnh trong ca
.
Mu tt c nh trên
      
0
, p
1
 
k
> tr thành chu trình
(circuit) nu p
0
= p
k
 th c gu k
nh p
1
, p
2
, 

k
hoàn toàn phân bit.
1.3. 
Khi lp trình gic mô hình hóa b th, viu tiên ta cn
làm tìm cu trúc d li biu di th sao cho vic gii quyc thun
tin nht.
Có rt nhiu di th, trong bài này chúng ta s kho sát mt
s  bin nht. Tính hiu qu ca tu din s c
ch ng thut toán c th.
1.3.1. Ma trn k
Vi G = (V, E) là m th   các
nh t ng nht mnh vi s th t ca nó. B 
v th G có th biu din bng ma trn vuông A = {a
ij
}
n*n

a
ij
= 1 nu (i,j)  E

0 nu (i,j) không  E

Tiu lun CSDL nâng cao: Gi th ng cu bng thut toán VF Trang 5

GVHD: PGS. TS.  Hc viên: Nguy
Vi mi i, giá tr ca các phn t ng chéo chính ma trn A: {a
ij
}có th t
tùy theo m th, chng ht bng 0. Ma trn A xây dc gi

là ma trn k (adjacent matrix) c th G. Vic biu di th c qui
v vic biu din phiên b    ng: thay mi cnh (i,j) bi hai cung
ng nhau: (i,j) và (j,i).
i v th thì vic biu di  u n
là cung thì a
ij
là s cnh ni ginh j.

Hình 3: Ma trn k biu di th.
m ca ma trn k:
 n, trc quan, d cài t trên máy tính.
 Kinh liên kt rn thông qua phép so sánh giá tr a
ij
 0.
m ca ma trn k:
 i n
2
ô nh   d liu gây lãng phí b nh.
 Khi bài toán yêu cu duyt qua tt c nh j k vnh i, ta luôn phi
duy kim tra giá tr a
ij
.
1.3.2. Danh sách cnh

Hình 4: Danh sách cnh biu di th.
Tiu lun CSDL nâng cao: Gi th ng cu bng thut toán VF Trang 6

GVHD: PGS. TS.  Hc viên: Nguy
V th nh, m cnh, ta có th lit kê tt c các cnh c th
trong mt danh sách, mi phn t ca danh sách là mt cp (x, ng vi mt

cp cng h th ng thì (x, y) là m n y. Cách
biu din này gi là danh sách cnh.
m ca danh sách cnh:
 ng h th  tit ki vì ch s
dng m ô nh.
 ng hp phi xét tt c các cnh thì vic duyt qua các cnh s
d c t
m ca danh sách cnh:
 Khi cn duynh j k v th ta phi duyt ht m
cnh.
 Khi kinh i, j có k i duyt qua m cnh.
 Khi g th  phc tp thut toán s m
trên.
1.3.3. Danh sách k
 khc phm ca 2 cách biu di th 
pháp biu di th bng danh sách k (adjacency list). Trong cách biu din này, vi
mnh v c th ng vi nó mnh k vi u.
V th ng G = (V, E). V gnh và E gm m cung. Có hai cách cài
t danh sách k ph bin:
 Forward Star: vi m mt danh sách adj[u] chnh ni
t u: adj[u] = { v: (u, v)  E }.
 Reserve Star: vi m mt danh sách adj[v] chnh ni
n v: adj[v] = { u: (u, v)  E }.
m ca danh sách k
 i vi danh sách k , vic duynh k vc là ht sc
d dàng.
 Vic duyt các cn vì mt cnh thc ra là ni mnh vi mt
nh khác k nó.
m ca danh sách k
Tiu lun CSDL nâng cao: Gi th ng cu bng thut toán VF Trang 7


GVHD: PGS. TS.  Hc viên: Nguy
 Danh sách k yn k  vic kim tra (u, v) có phi là cnh hay
không vì phi duyt qua tt c danh sách k ca u hoc ca v.
1.3.4. Danh sách liên thuc







Tiu lun CSDL nâng cao: Gi th ng cu bng thut toán VF Trang 8

GVHD: PGS. TS.  Hc viên: Nguy
 
2.1. 
 (graph isomorphism song ánh 
hai  th G
1

2
:
f: M(G
1
M(G
2
)
      n
i

và n
j
   G
1
      
 f(n
i
) và f(n
j
)  G
2
.
       ng cu          
này  
 th ng cu 



:
f(a) = 1 f(g) = 5
f(b) = 6 f(h) = 2
f(c) = 8 f(i) = 4
f(d) = 3 f(j) = 7
ng cu gi th G
1
= (N
1
, B
1
) và G

2
= (N
2
, B
2
) là quá trình tìm
ra ánh x M t  th G
1
sang G
2
. Có nhiu luc áp dng cho M và
ng vi các lut thì s có nhiu long cu khác nhau: ng cu, ng
cng cu gi th  th ng cu gi th 
th c s dng nhiu nht.
Ta có th t tp có th t các cp (n, m) vi n  G
1
và m  G
2
th
hin ánh x t n m:
M = { (n, m)  N
1
x N
2
| n ánh x n m }
Tiu lun CSDL nâng cao: Gi th ng cu bng thut toán VF Trang 9

GVHD: PGS. TS.  Hc viên: Nguy
Theo lý thuyt, vic gii quyt bài toán này có th c thc hin bng cách duyt
qua tt c các trng thái ánh x có th có và chn ra mt li gii phù hp vi long

cu cn tìm (s dng thut toán Brute Force).
2.2. TVF
Thut toán VF da trên khái nim không gian mô t trng thái (vit tt ting anh là
SSR) mô t ng cu c th vi mi trng thái s th hin mt phn
ca li gip con ca M và cha các thành phn thuc M.
 gim b phc tp ca bài toán, c th m bng hp cn
phi duyt, vi mi trn t trng thái s
0
n trng thái li gii, chúng
t  xét tính kh thi ca trng thái ng.
Ti bài toán này, t mi trng thái s
i
n trng thái s
j
, thao tác chúng ta cn làm là
thêm vào s mt cp ánh x ng ci. Nu
vip ánh x mi vào làm ng cu thì vic duyt tip các trng
thái sau khi thêm cp ánh x này là không cn thit.
Ví d th G
1
và G
2
sau:

Li gii ca bài toán: M = { (n
1
, m
4
), (n
2

, m
1
), (n
3
, m
2
), (n
4
, m
3
) }
Gi s  trng thái M(s
i
) = { (n
1
, m
4
), (n
2
, m
1
ng thái c
th ng cu ta xây dc 

Tiu lun CSDL nâng cao: Gi th ng cu bng thut toán VF Trang 10

GVHD: PGS. TS.  Hc viên: Nguy
i tip tc tìm mt cp ánh x (n, m) sao cho vm bo tính
ng cu c th tc là tìm trng thái s
j

mi da trên s
i


ng thái M(s
j
) = { (n
1
, m
4
), (n
2
, m
1
), (n
3
, m
2
) ng thái c
th ng cu ta xây d

Vic lp li các thao tác tính toán theo tng tr 
ta dn kt qu cui cùng ca bài toán.
2.3. 
Thuc biu dit thut toán tìm kim theo chi
PROCEDURE Match(s)
INPUT: trng thái hin ti s vi d liu khi to s
0
có M(s
0

) = Ø
OUTPUT: ánh x gi th ng cu
IF M(s) cha tt c nh THEN
OUTPUT M(s)
ELSE
Tính tp P(s) là tp các cp ánh x ng viên có th thêm vào M(s)
Tiu lun CSDL nâng cao: Gi th ng cu bng thut toán VF Trang 11

GVHD: PGS. TS.  Hc viên: Nguy
FOREACH p  P(s)
IF vic thêm p vào M(s) là kh thi THEN
Tính trc khi thêm p vào M(s)

END IF
END FOREACH
END IF
END PROCEDURE
2.4. 
i vi mca n trong tp ánh x ng là
cha cng.
i vi ma n trong tp ánh x ng là
con cng.
i vi mnh n thuc tp ánh x c, s nh là cha (con) cnh n nm
trong tnh vào T
in
1
(s)  trng thái s bng vi s nh là cha (con) cnh m
ng nm trong tnh vào T
in
2

(s)  trng thái s.
i vi mnh n thuc tp ánh x c, s nh là cha (con) cnh n nm
trong tp các nh ra T
out
1
(s)  trng thái s bng vi s nh là cha (con) cnh m
ng nm trong tnh ra T
out
2
(s)  trng thái s.

i vi m nh n thuc tp ánh x  c, s nh là cha (con) c nh n
không nm trong c tnh ra T
out
1
(s) ln tp M
1
(s)  trng thái s bng vi s
nh là cha (con) cng nm không trong tnh ra T
out
2
(s) ln
tp M
2
(s)  trng thái s.
Tiu lun CSDL nâng cao: Gi th ng cu bng thut toán VF Trang 12

GVHD: PGS. TS.  Hc viên: Nguy
2.5. 
 phc tp ca thung hp tt nht và xu nht

da trên hai yu t: s trng thái cn duyt và th duyt
mi trng thái.
Chi phí thi gian phi tr cho vic duyt qua mt trng thái bng cách thêm vào
mt cp (n, m) cho mt trng thái s có th chia làm 3 phn:
 Chi ph kim tra xem trng thái mc tính kh thi hay không.
  tính toán li các tp (T
in
1
, T
in
2
n trng thái
mi.
  p các ng viên mi cho trng thái hin thi.
ng hp tt nht, ti mi trng thái ta ch có th chc mt ng
viên duy nht thu kin xét tính kh  trng thái
cn duyt s là n, vi mi trng thái phi duy tìm kim ng viên. Vy
 phc tp v thng hp tt nht s là O(n
2
).
ng hp xu nht, ta phi duyt qua tt c các trng thái có th ng
hp này có th x th  phc tp có th c tính
i trng thái mc i s có n-i ng viên cn duyt trng thái ti
mc i+1 s c tính bng n-i nhân vi s trng thái  mc i. C tip ty,
tng s trng thái phi duyt s là:
1 + n + n(n-1) + n(n-1)(n-
Tng này có th vit li thành








Vy s ng hp phi duy ng hp 
nh phc tp v thng hp  nht là O(n!n).


Tiu lun CSDL nâng cao: Gi th ng cu bng thut toán VF Trang 13

GVHD: PGS. TS.  Hc viên: Nguy
 
Thut toán VF v lý theo tng trng thái ca li gii kt hp vi
các lut xét tính kh thi ca trng thái k ti các phép so sánh
cn s d phc tp ca thut toán m. C th khi
so sánh vi thut toán Ullman v phc tp cao nht là O(n!n
3
) và thp nht là
O(n
3
), ta thy rõ tính hiu qu ca thut toán VF.
i thiu v m nghim trong vic  th con
ng cu s dng thu kt qu ánh x gi th
hoàn toàn chính xác và hin có th chy tt vi s nh trong khong nh. Trên
thc t, kt qu c nhu cu hin nay v th ln có ti hàng
trinh và m cc (mng xã hi) nên vic tìm hiu và nghiên cu nhm
t thut toán mi có tính ng dng cao trong vi th ng cu vn còn
là mt câu hi li gii.
o0o



Tiu lun CSDL nâng cao: Gi th ng cu bng thut toán VF Trang 14

GVHD: PGS. TS.  Hc viên: Nguy

ng dn s d
t bng Mircrosoft Visual C# trên nn .NET Framework 3.5.
Giao din cng 

Hình 5: Giao din c
i dùng nhp d li th thông qua 3 
 c d liu trc tip t file: nhn vào nút c File và chn file cha d li
th    th liu file input phc vit
theo cu trúc sau:
- u tiên cha s nh n c th.
- n dòng tip theo là ma trn nxn là ma trn k a biu di th vi a[i][j] = 0
khi và ch khi không có cnh ni t c li.

Hình 6: .
Tiu lun CSDL nâng cao: Gi th ng cu bng thut toán VF Trang 15

GVHD: PGS. TS.  Hc viên: Nguy
 To b d liu ngi dùng nhp s nh c th và nhn vào nút
To Random  t th ngu nhiên.
 To b d liu ngng ci dùng nhn nút Tng cu
 to ngu nhiên c  th ng cu vi nhau.
Sau khi nhp d liu, danh sách cnh k s hin th i m th  i dùng
có th kim tra d liu.
 tìm b ng cu gi th  th con c th 1, ta nhn nút Kt qu
 xem b các ánh x c nu bài toán có kt qu c li, nu hoàn toàn

không có bt k  th con nào c th ng cu v th  hin
th thông báo là k th ng cu.

Tiu lun CSDL nâng cao: Gi th ng cu bng thut toán VF Trang 16

GVHD: PGS. TS.  Hc viên: Nguy

Ting Vit:
[1]. Slide   d liu nâng cao, PGS. TS.  Phúc (2012), i hc Công ngh
Thông tin - .
Ting Anh:
[2]. A (sub)graph isomorphism algorithm for matching large graphs, L.P.Cordella
(2004), IEEE.
[3]. Performance Evaluation of the VF Graph Matching Algorithm, L.P.Cordella  P.
Foggia  C. Sansone  M. Vento (1999), IEEE.
[4]. ebsite:










×