Agnieszka Nowak - Brzezi«ska
28 listopada 2019
Metoda ªa«cuchowa - metoda klasyczna + modykacje Wykªad 6 i 7
Zakªadamy i» znany jest system wyszukiwania S, a wi¦c zbiór obiektów X, atrybutówA, warto±ci tych atrybutówVoraz funkcja informacji ρ.
Obiekty opisane s¡ iloczynem odpowiednich niezaprzeczonych deskryptorów. S¡ one pami¦tane w metodzie ªa«cuchowej w dowolnej kolejno±ci.
Obiektom przyporz¡dkowujemy zbiór liczb zwanych adresami obiektów okre±lony za pomoc¡ funkcji: µ : X → N gdzie: N- zbiór liczb naturalnych.
W systemie zachodzi nast¦puj¡ca zale»no±¢:
µ(x ) = µ(y ) ↔ tx = ty, takie same adresy maj¡ obiekty o jednakowym opisie deskryptorowym.
Denicja listy ªa«cuchowej
Dla ka»dego deskryptoradi = (ai, vi) ∈ D (D - zbiór wszystkich deskryptorów systemu) tworzona jest listaL(di) o nast¦puj¡cej postaci:
L(di) = {n1− n2− . . . − nk}
gdzien1 jest adresem pierwszego obiektu zawieraj¡cego w swoim opisie deskryptordi , a pozostaªe elementy n1, n2, . . . , nk s¡
odsyªaczamido kolejnych obiektów zawieraj¡cych w swoim opisie ten deskryptor. List¦L(di) nazywamy list¡ ªa«cuchow¡ deskryptoradi.
Odsyªacze w listach ªa«cuchowych zawieraj¡ informacj¦, gdzie znajduje si¦ kolejny obiekt zawieraj¡cy w swoim opisie dany deskryptor.
Zazwyczaj umieszczane s¡ one bezpo±rednio przy ka»dym deskryptorze ka»dego obiektu w kartotece wyszukiwawczej.
Do ustalenia adresów pozostaªych obiektów mo»na u»y¢
nast¦puj¡cych typów odsyªaczy:
Odsyªacz bezwzgl¦dny zawiera on bezpo±redni adres obiektu w kartotece wyszukiwawczej.
Odsyªacz wzgl¦dny jest on tworzony wzgl¦dem pierwszego obiektu zawieraj¡cego w swoim opisie dany deskryptor.
Odsyªacz jako skok zawiera ró»nic¦ pomi¦dzy adresami kolejnych obiektów zawieraj¡cych w swoim opisie dany deskryptor.
Kartotek¦ wyszukiwawcz¡ tworz¡ opisy deskryptorowe obiektów z umieszczonymi zwykle bezpo±rednio pod tym opisem odsyªaczami, tzn. odsyªacz jest umieszczony przy ka»dym deskryptorze bezpo±rednio przy opisie obiektu.
Listy ªa«cuchowe nie s¡ pami¦tane w systemie, s¡
generowane na bie»¡co, w miar¦ potrzeby.
W pami¦ci oprócz obiektów z odsyªaczami umieszczamy tylko tablic¦ zakotwicze«.
Tablica zakotwicze« dla ka»dego deskryptoradi podaje adres pierwszego obiektu w ªa«cuchu i ilo±¢ obiektów w ªa«cuchu (dªugo±¢ ªa«cucha ):
tab(di) = (ni1, L(di))
gdzieni1 jest to adres pierwszego takiego obiektu w Systemie, który w swoim opisie zawiera deskryptordi .
di n1 L(di) ... ... ...
... ... ...
... ... ...
Znaj¡c odsyªacze ªatwo uzyska¢ adresy wszystkich obiektów zawieraj¡cych w swoim opisie deskryptordi :
µ(x1i) = n1, µ(x2i) = n1+ n2, . . . , µ(xji) = n1+ nj
gdzie: xji - j -ty obiekt zawieraj¡cy w swoim opisie deskryptor di . µ(x1i) = n1 to pierwszy obiekt w systemie, który w swoim opisie ma deskryptordi.
µ(x2i) = n1+ n2 to drugi obiekt w systemie, który w swoim opisie ma deskryptordia.
µ(xji) = n1+ nj to j-ty obiekt w systemie, który w swoim opisie ma deskryptordib.
azakªadaj¡c, »e u»yto odsyªaczy wzgl¦dnych b¡d¹ skoku
bzakªadaj¡c, »e u»yto odsyªaczy wzgl¦dnych
ka»dego deskryptoradi podaje adres pocz¡tku ªa«cucha i dªugo±¢
ªa«cucha (liczb¦ elementów ªa«cucha):
tab(di) = (n1, L(di)) dla di ∈ D, gdzie:
n1 = µ(x1i).
U w a g a. Zwykle odsyªacze umieszczone s¡ bezpo±rednio przy ka»dym deskryptorze w opisach obiektów. W pami¦ci oprócz obiektów z odsyªaczami umieszczamy tylko tablic¦ zakotwicze«
(ªa«cuchy oddzielnie nie s¡ zapami¦tywane).
Niech pytanie do systemuS b¦dzie zadane w postaci termut b¦d¡cego sum¡ termów skªadowych. Odpowied¹ na pytaniet jest zatem sum¡ odpowiedzi na pytania skªadowe. Rozpatrzmy
szczegóªowo odpowiadanie na pytanie skªadoweti .
Je»eli term skªadowy jest pojedynczym deskryptoremti = di
to odpowied¹ znajdujemy w nast¦puj¡cy sposób: z tablicy zakotwicze« dla di znajdujemy(n1,L(di)), a nast¦pnie generujemy zbiór obiektów (zbiór adresów obiektów) zgodnie ze znalezionym ªa«cuchem dla deskryptora di .
Je»eli ti = d1· d2· . . . · dk , odpowied¹ znajdujemy w nast¦puj¡cy sposób: z tablicy zakotwicze« znajdujemy ªa«cuchy dla wszystkich deskryptorów pytania.
Lmin(di) =min
di {L(di)}
Dalej wyszukiwanie odpowiedzi mo»e odbywa¢ si¦ jednym z podanych sposobów:
1 Generujemy wybrany ªa«cuch minimalny i metod¡ przegl¡du zupeªnego sprawdzamy, czy wybrane obiekty zawieraj¡ w swoim opisie pozostaªe deskryptory pytaniati . Odpowied¹ zatem mo»na zapisa¢ jako:
σ(ti) = {xi ∈ Lmin(di)&^
dj∈ti
dj6= di⇒ dj∈ txi}
2 Porównujemy elementy wybranego ªa«cuchaLminz pozostaªymi ªa«cuchami deskryporów pytania i wybieramy tylko elementy wspólne, które stanowi¡ odpowied¹ na pytanieti .
σ(ti) = {xi ∈ [Lmin(di) ∩ (\
j
L(dj))], di, dj∈ ti, di 6= dj}
Kartoteka wtórna
tx1 = (a, a1)(b, b1)(c, c1) tx2 = (a, a1)(b, b1)(c, c2) tx3 = (a, a2)(b, b2)(c, c3) tx4 = (a, a2)(b, b2)(c, c4) tx5 = (a, a1)(b, b2)(c, c1) tx6 = (a, a1)(b, b2)(c, c2) tx7 = (a, a2)(b, b2)(c, c3) tx8 = (a, a2)(b, b2)(c, c4)
Kartoteka wtórna
tx1 = (a, a1)(b, b1)(c, c1) tx2 = (a, a1)(b, b1)(c, c2) tx3 = (a, a2)(b, b2)(c, c3) tx4 = (a, a2)(b, b2)(c, c4) tx5 = (a, a1)(b, b2)(c, c1) tx6 = (a, a1)(b, b2)(c, c2) tx7 = (a, a2)(b, b2)(c, c3) tx8 = (a, a2)(b, b2)(c, c4) + funkcja adresuj¡ca µ
µ(x1) →1, µ(x2) →2, µ(x3) →3,µ(x4) →4, µ(x5) →5, µ(x6) →6, µ(x7) →3 oraz µ(x8) →4
Kartoteka wyszukiwawcza z odsyªaczami bezwzgl¦dnymi 1 : (a, a1) (b, b1) (c, c1)
2 2 5
2 : (a, a1) (b, b1) (c, c2)
5 ∅ 6
3 : (a, a2) (b, b2) (c, c3)
4 4 ∅
4 : (a, a2) (b, b2) (c, c4)
∅ 5 ∅
5 : (a, a1) (b, b2) (c, c1)
6 6 ∅
6 : (a, a1) (b, b2) (c, c2)
∅ ∅ ∅
Kartoteka wyszukiwawcza z odsyªaczami wzgl¦dnymi 1 : (a, a1) (b, b1) (c, c1)
+1 +1 +4
2 : (a, a1) (b, b1) (c, c2)
+4 ∅ +4
3 : (a, a2) (b, b2) (c, c3)
+1 +1 ∅
4 : (a, a2) (b, b2) (c, c4)
∅ +2 ∅
5 : (a, a1) (b, b2) (c, c1)
+5 +3 ∅
6 : (a, a1) (b, b2) (c, c2)
∅ ∅ ∅
Kartoteka wyszukiwawcza z odsyªaczami w postaci skoku 1 : (a, a1) (b, b1) (c, c1)
+1 +1 +4
2 : (a, a1) (b, b1) (c, c2)
+3 ∅ +4
3 : (a, a2) (b, b2) (c, c3)
+1 +1 ∅
4 : (a, a2) (b, b2) (c, c4)
∅ +1 ∅
5 : (a, a1) (b, b2) (c, c1)
+1 +1 ∅
6 : (a, a1) (b, b2) (c, c2)
∅ ∅ ∅
Tablica zakotwicze«
di n1 L(di) (a, a1) 1 4 (a, a2) 3 2 (b, b1) 1 2 (b, b2) 3 4
(c, c1) 1 2
(c, c2) 2 2 (c, c3) 3 1
(c, c4) 4 1
Tablica zakotwicze« b¦dzie dla wszystkich 3 przypadków (z ró»nymi odsyªaczami) taka sama
Dla pytania t = (a, a2)(b, b2) + (c, c3)
t = t1+ t2 gdzie t1= (a, a2)(b, b2), t2= (c, c3) Dla pytania t1:
szukamy informacji w tablicy zakotwicze« dla ka»dego deskryptora pytania t1:
tab(a, a2) = (3, 2) tab(b, b2) = (3, 4)
wybieramy ªa«cuch minimalny:
Lmin(di) = L(a, a2)
generujemy ªa«cuch dla (a, a2): L(a, a2) = {3 − 1 − ∅}
µ(x1(a,a2)) = n1=3, µ(x2(a,a2)) = n1+ n2=3 + 1 = 4
odpowied¹ przybli»ona: σ(t1) ≈ L(a, a2) = {3, 4} = {x3, x4, x7, x8} odpowied¹ dokªadna:
(b, b2) ≤ tx3, (b, b2) ≤ tx4, (b, b2) ≤ tx7, (b, b2) ≤ tx8
σ(t1) = {x3, x4, x7, x8} dla pytania t2:
szukamy informacji w tablicy zakotwicze« dla ka»dego deskryptora pytania t2:
tab(c, c3) = (3, 1)
generujemy ªa«cuch dla (c, c3): L(c, c3) = {3 − ∅}
µ(x1(c,c3)) = n1=3, σ(t2) = {x3, x7}
t = t1+ t2 gdzie t1= (a, a2)(b, b2), t2= (c, c3) Dla pytania t1:
szukamy informacji w tablicy zakotwicze« dla ka»dego deskryptora pytania t1:
tab(a, a2) = (3, 2) tab(b, b2) = (3, 4)
wybieramy ªa«cuch minimalny:
Lmin(di) = L(a, a2)
generujemy ªa«cuch dla (a, a2): L(a, a2) = {3 − 1 − ∅}
µ(x1(a,a2)) = n1=3, µ(x2(a,a2)) = n1+ n2=3 + 1 = 4
generujemy ªa«cuch dla (b, b2): L(b, b2) = {3 − 1 − 2 − 3 − ∅}:
µ(x1(b,b2)) = n1=3,
µ(x2(b,b2)) = n1+ n2=3 + 1 = 4,µ(x3(b,b2)) = n1+ n3=3 + 2 = 5, µ(x4(b,b2)) = n1+ n4=3 + 3 = 6
σ(t1) = {x3, x4, x7, x8} dla pytania t2:
szukamy informacji w tablicy zakotwicze« dla ka»dego deskryptora pytania t2:
tab(c, c3) = (3, 1)
generujemy ªa«cuch dla (c, c3): L(c, c3) = {3 − ∅}
µ(x(c,c3)) = n =3, σ(t ) = {x , x }
tx1= (A1, M) · (A2, b) · (A3, W ) · (A4, D) · (A5, PR) tx2= (A1, K ) · (A2, c) · (A3, S ) · (A4, A) · (A5, BT ) tx3= (A1, K ) · (A2, b) · (A3, P) · (A4, A) · (A5, BT ) tx4= (A1, M) · (A2, a) · (A3, S ) · (A4, T ) · (A5, BT ) tx5= (A1, M) · (A2, b) · (A3, W ) · (A4, D) · (A5, MR) tx6= (A1, M) · (A2, c) · (A3, W ) · (A4, D) · (A5, DR) tx7= (A1, K ) · (A2, c) · (A3, W ) · (A4, D) · (A5, DR) tx8= (A1, M) · (A2, c) · (A3, W ) · (A4, D) · (A5, DC ) tx9= (A1, K ) · (A2, b) · (A3, W ) · (A4, D) · (A5, DR) tx10= (A1, M) · (A2, b) · (A3, W ) · (A4, D) · (A5, MR) tx11= (A1, K ) · (A2, b) · (A3, W ) · (A4, D) · (A5, DR) tx12= (A1, K ) · (A2, b) · (A3, S ) · (A4, T ) · (A5, BT ) tx13= (A1, M) · (A2, b) · (A3, S ) · (A4, T ) · (A5, BT ) tx14= (A1, K ) · (A2, b) · (A3, W ) · (A4, D) · (A5, DR) tx15= (A1, M) · (A2, c) · (A3, W ) · (A4, D) · (A5, DC ) tx16= (A1, M) · (A2, c) · (A3, W ) · (A4, D) · (A5, DC ) tx17= (A1, M) · (A2, c) · (A3, W ) · (A4, D) · (A5, PR) tx18= (A1, M) · (A2, b) · (A3, W ) · (A4, D) · (A5, DR) t = (A , K ) · (A , b) · (A, W ) · (A , D) · (A , MR)
tx1= (A1, M) · (A2, b) · (A3, W ) · (A4, D) · (A5, PR) tx2= (A1, K ) · (A2, c) · (A3, S ) · (A4, A) · (A5, BT ) tx3= (A1, K ) · (A2, b) · (A3, P) · (A4, A) · (A5, BT ) tx4= (A1, M) · (A2, a) · (A3, S ) · (A4, T ) · (A5, BT ) tx5= (A1, M) · (A2, b) · (A3, W ) · (A4, D) · (A5, MR) tx6= (A1, M) · (A2, c) · (A3, W ) · (A4, D) · (A5, DR) tx7= (A1, K ) · (A2, c) · (A3, W ) · (A4, D) · (A5, DR) tx8= (A1, M) · (A2, c) · (A3, W ) · (A4, D) · (A5, DC ) tx9= (A1, K ) · (A2, b) · (A3, W ) · (A4, D) · (A5, DR) tx10= (A1, M) · (A2, b) · (A3, W ) · (A4, D) · (A5, MR) tx11= (A1, K ) · (A2, b) · (A3, W ) · (A4, D) · (A5, DR) tx12= (A1, K ) · (A2, b) · (A3, S ) · (A4, T ) · (A5, BT ) tx13= (A1, M) · (A2, b) · (A3, S ) · (A4, T ) · (A5, BT ) tx14= (A1, K ) · (A2, b) · (A3, W ) · (A4, D) · (A5, DR) tx15= (A1, M) · (A2, c) · (A3, W ) · (A4, D) · (A5, DC ) tx16= (A1, M) · (A2, c) · (A3, W ) · (A4, D) · (A5, DC ) tx17= (A1, M) · (A2, c) · (A3, W ) · (A4, D) · (A5, PR) tx18= (A1, M) · (A2, b) · (A3, W ) · (A4, D) · (A5, DR) t = (A , K ) · (A , b) · (A, W ) · (A , D) · (A , MR)
+ funkcja adresuj¡ca µ
µ(x1) →1, µ(x2) →2, µ(x3) →3,µ(x4) →4, µ(x5) →5, µ(x6) →6, µ(x7) →7 oraz µ(x8) →8,µ(x9) →9, µ(x10) →6, µ(x11) →9,µ(x12) →10, µ(x13) →11, µ(x14) →9, µ(x15) →12 oraz µ(x16) →12,µ(x17) →13, µ(x18) →14,
µ(x19) →15,µ(x20) →9
2 : (A1 2 3 4 5
3 : (A1, K ) · (A2, b) · (A3, P) · (A4, A) · (A5, BT ) 4 : (A1, M) · (A2, a) · (A3, S ) · (A4, T ) · (A5, BT ) 5 : (A1, M) · (A2, b) · (A3, W ) · (A4, D) · (A5, MR) 6 : (A1, M) · (A2, c) · (A3, W ) · (A4, D) · (A5, DR) 7 : (A1, K ) · (A2, c) · (A3, W ) · (A4, D) · (A5, DR) 8 : (A1, M) · (A2, c) · (A3, W ) · (A4, D) · (A5, DC ) 9 : (A1, K ) · (A2, b) · (A3, W ) · (A4, D) · (A5, DR) 10 : (A1, K ) · (A2, b) · (A3, S ) · (A4, T ) · (A5, BT ) 11 : (A1, M) · (A2, b) · (A3, S ) · (A4, T ) · (A5, BT ) 12 : (A1, M) · (A2, c) · (A3, W ) · (A4, D) · (A5, DC ) 13 : (A1, M) · (A2, c) · (A3, W ) · (A4, D) · (A5, PR) 14 : (A1, M) · (A2, b) · (A3, W ) · (A4, D) · (A5, DR) 15 : (A1, K ) · (A2, b) · (A3, W ) · (A4, D) · (A5, MR)
+1 +4 +2 +1 +1 3 : (A1, K ) (A2, b) (A3, P) (A4, A) (A5, BT )
+5 +4 +∅ +∅ +2
4 : (A1, M) (A2, a) (A3, S) (A4, T ) (A5, BT )
+4 +∅ +8 +6 +8
5 : (A1, M) (A2, b) (A3, W ) (A4, D) (A5, MR)
+5 +8 +5 +5 +10
6 : (A1, M) (A2, c) (A3, W ) (A4, D) (A5, DR)
+7 +5 +6 +6 +1
7 : (A1, K ) (A2, c) (A3, W ) (A4, D) (A5, DR)
+7 +6 +7 +7 +3
8 : (A1, M) (A2, c) (A3, W ) (A4, D) (A5, DC )
+10 +10 +8 +8 +4
9 : (A1, K ) (A2, b) (A3, W ) (A4, D) (A5, DR)
+8 +9 +11 +11 +8
10 : (A1, K ) (A2, b) (A3, S) (A4, T ) (A5, BT )
+13 +10 +9 +7 +9
11 : (A1, M) (A2, b) (A3, S) (A4, T ) (A5, BT )
+11 +13 +∅ +∅ +∅
12 : (A1, M) (A2, c) (A3, W ) (A4, D) (A5, DC )
+12 +11 +12 +12 +∅
13 : (A1, M) (A2, c) (A3, W ) (A4, D) (A5, PR)
+13 +∅ +13 +13 +∅
14 : (A1, M) (A2, b) (A3, W ) (A4, D) (A5, DR)
+∅ +14 +14 +14 +∅
15 : (A1, K ) (A2, b) (A3, W ) (A4, D) (A5, MR)
+∅ +∅ +∅ +∅ +∅
Tablica zakotwicze«
di n1 L(di) (A1, K ) 2 6 (A1, M) 1 9 (A2, a) 4 1 (A2, b) 1 8 (A2, c) 2 6 (A3, W ) 1 10
(A3, S) 2 4 (A3, P) 3 1 (A4, D) 1 10 (A4, A) 2 2 (A4, T ) 4 3 (A5, PR) 1 2 (A5, BT ) 2 5 (A5, DR) 6 4 (A5, MR) 5 2 (A5, DC ) 8 2
L(A2, b) = {1 − 2 − 4 − 7 − 8 − 9 − 13 − 14 − ∅}, L(A2, c) = {2 − 4 − 5 − 6 − 10 − 11 − ∅}, L(A2, a) = {4 − ∅},
L(A3, W ) = {1 − 4 − 5 − 6 − 7 − 8 − 11 − 12 − 13 − 14 − ∅}, L(A3, S) = {2 − 2 − 8 − 9 − ∅},
L(A3, P) = {3 − ∅},
L(A4, D) = {1 − 4 − 5 − 6 − 7 − 8 − 11 − 12 − 13 − 14 − ∅}, L(A4, A) = {2 − 1 − ∅},
L(A4, T ) = {4 − 6 − 7 − ∅}, L(A5, PR) = {1 − 12 − ∅},
L(A5, BT ) = {2 − 1 − 2 − 10 − 11 − ∅}, L(A5, MR) = {5 − 10 − ∅},
L(A5, DR) = {6 − 1 − 3 − 8 − ∅}, L(A5, DC ) = {8 − 4 − ∅}.
Odsyªacze s¡ pami¦tane przy opisach obiektów. Uwaga ! a«cuchy nie s¡
pami¦tane
t1= (A4, D) · (A2, b).
Z tablicy zakotwicze« znajdujemy:
tab(A4, D) = (1, 10), tab(A2, b) = (1, 8),
Lmin= L(A2, b) = {1 − 2 − 4 − 7 − 8 − 9 − 13 − 14 − ∅}.
Po przetworzeniu ªa«cucha uzyskujemy:
L(A2, b) = {1, 3, 5, 8, 9, 10, 14, 15}
Porównujemy elementy Lminz L(A4, D)i wybieramy elementy wspólne:
L(A4, D) = L(A4, D) = {1 − 4 − 5 − 6 − 7 − 8 − 11 − 12 − 13 − 14 − ∅}
po przetworzeniu ªa«cucha:
L(A4, D) = {1, 5, 6, 7, 8, 9, 12, 13, 14, 15}
σ(t1) = {1, 3, 5, 8, 9, 10, 14, 15} ∩ {1, 5, 6, 7, 8, 9, 12, 13, 14, 15}
P2 = Poda¢ pracowników technicznych w wieku pomi¦dzy 20 a 35 rokiem »ycia lub pracowników z wyksztaªceniem ±rednim
nieadministracyjnym.
t2 = (A2, b) · (A4, T ) + (A3, S ) · (A4, T ) + (A3, S ) · (A4, D) Term t2 jest sum¡ termów skªadowych t21, t22, t23
t2 = t21+ t22+ t23, gdzie:
t21= (A2, b) · (A4, T ), t22= (A3, S ) · (A4, T ), t23= (A3, S ) · (A4, D).
Znajdujemy odpowied¹ na pytania skªadowe.
Rozpatrzmy pierwszy term skªadowy t21= (A2, b) · (A4, T ): Z tablicy zakotwicze«:
tab(A2, b) = (1, 8), tab(A4, T ) = (4, 3), Lmin= L(A4, T )
Ze wzgl¦du na maª¡ liczb¦ obiektów w ªa«cuchu minimalnym, zastosujemy przegl¡d zupeªny elementów ªa«cucha minimalnego, wybieraj¡c te obiekty, które zawieraj¡
w swoim opisie dodatkowo deskryptor (A2, b).
Wybieramy ªa«cuch minimalny: L(A4, T ) = {4 − 6 − 7 − ∅}
Przetwarzamy ªa«cuch: µ(x1(A4,T )) = n1=4, µ(x2(A4,T )) = n1+ n2=4 + 6 = 10, µ(x3(A4,T )) = n1+ n3=4 + 7 = 11
L(A4, T ) = {4, 10, 11} = {x4, x12, x13}
Tylko opis obiektu x4nie zawiera deskrypora (A2, b): (A2, b) tx4, (A2, b) ≤ tx12, (A2, b) ≤ tx14
σ(t21) = {x12, x13}.
Rozpatrzmy drugi term skªadowy: t22= (A3, S ) · (A4, T ).
Z tablicy zakotwicze«:
tab(A3, S ) = (2, 4), tab(A4, T ) = (4, 3).
Rozpatrywane b¦d¡ nast¦puj¡ce ªa«cuchy:
Ju» wiemy, »e Lmin= L(A4, T ) = {4, 10, 11},
L(A3, S ) = {2 − 2 − 8 − 9 − ∅}
co po przetworzeniu tego ªa«cucha daje nam:
L(A3, S ) = {2, 4, 10, 11}
Odpowied¹ na pytanie znajdujemy jako przeci¦cie ªa«cucha minimalnego z pozostaªymi:
σ(t22) = L(A4, T ) ∩ L(A3, S ) = {4, 10, 11} = {x4, x12, x13}.
Analogicznie znajdujemy odpowied¹ na kolejny term skªadowy:
t23= (A3, S ) · (A4, D) Wiemy ju», »e: L(A3, S ) = {2, 4, 10, 11} oraz, »e
L(A4, D) = {1 − 4 − 5 − 6 − 7 − 8 − 11 − 12 − 13 − 14 − ∅}
co po przetworzeniu daje: L(A4, D) = {1, 5, 6, 7, 8, 9, 12, 13, 14, 15}
Wtedy przeci¦cie obu ªa«cuchów daje nam odpowied¹ σ(t23) = {∅}.
Opowied¹ na pytanie t2b¦dzie sum¡ odpowiedzi na pytania skªadowe:
σ(t2) = σ(t21) ∪ σ(t22) ∪ σ(t23), σ(t2) = {x12, x13} ∪ {x4, x12, x13} ∪ {∅}
σ(t2) = {x4, x12, x13}
Brak redundancji obiektowej i stosunkowo krótki czas wyszukiwania informacji wi¡»e si¦ ze skomplikowan¡ struktur¡ bazy danych i kªopotliw¡ aktualizacj¡. Modykacje metody maj¡ na celu uproszczenie struktury oraz uªatwienie procesu aktualizacji.
Budowa ªa«cuchów:
L(di) = {nk− nk−1− nk−2− . . . − n1},
gdzie: nk= µ(xki), to znaczy pierwszy element ªa«cucha jest adresem ostatniego obiektu zawieraj¡cego w swoim opisie deskryptor di; pozostaªe elementy s¡
odsyªaczami do kolejnych (poprzednich) obiektów zawieraj¡cych w swoim opisie desktyptor di. Adresy obiektów znajdujemy w nast¦puj¡cy sposób:
µ(xki) = nk, µ(xk−i 1) = nk− nk−1, . . . , µ(xji) = nk− nj
gdzie xji - j-ty obiekt zawieraj¡cy w swoim opisie deskryptor di. Wyszukiwanie odpowiedzi odbywa si¦ tak jak w metodzie z ªa«cuchowaniem w przód. Tablica zakotwicze« jest identyczna z tym tylko zastrze»eniem, »e jej pierwsza kolumna zawiera adres ostatniego obiektu zawieraj¡cego w opisie deskryptor di. Wybranie sposobu ªa«cuchowania nie ma wpªywu na przebieg procesu wyszukiwania informacji. O wyborze metody z ªa«cuchowaniem w przód lub w tyª decyduje projektant systemu bior¡c pod uwag¦ umieszczenie obiektów w pami¦ci maszyny cyfrowej.
Kartoteka wyszukiwawcza z odsyªaczami wzgl¦dnymi 1 : (a, a1) (b, b1) (c, c1)
∅ ∅ ∅
2 : (a, a1) (b, b1) (c, c2)
−5 −1 ∅
3 : (a, a2) (b, b2) (c, c3)
∅ ∅ ∅
4 : (a, a2) (b, b2) (c, c4)
−1 −3 ∅
5 : (a, a1) (b, b2) (c, c1)
−4 −2 −4
6 : (a, a1) (b, b2) (c, c2)
−1 −1 −4
Tablica zakotwicze«
di nk L(di)
(a, a1) 6 4
(a, a2) 4 2 (b, b1) 2 2
(b, b2) 6 4
(c, c1) 5 2 (c, c2) 6 2 (c, c3) 3 1 (c, c4) 4 1
L(a, a1) = {6 − 1 − 4 − 5 − ∅}
L(a, a2) = {4 − 1 − ∅}
L(b, b1) = {2 − 1 − ∅}
L(b, b2) = {6 − 1 − 2 − 3 − ∅}
L(c, c1) = {5 − 4 − ∅}
L(c, c2) = {6 − 4 − ∅}
L(c, c3) = {3 − ∅}
L(c, c4) = {4 − ∅}
t=t1+t2 gdziet1= (a,a2)(b,b2),t2= (c,c3) Dla pytaniat1:
szukamy informacji w tablicy zakotwicze« dla ka»dego deskryptora pytaniat1:
tab(a,a2) = (3, 2) tab(b,b2) = (3, 4)
wybieramy ªa«cuch minimalny:
Lmin(di) = L(a,a2), który ma 2 elementy:
generujemy ªa«cuch dla (a,a2): L(a,a2) = {4 − 1 − ∅}
µ(x2(a,a2)) =n2=4, µ(x1(a,a2)) =n2−n1=4 − 1 = 3
odpowied¹ przybli»ona: σ(t1) ≈ L(a,a2) = {4, 3} = {x3,x4,x7,x8} odpowied¹ dokªadna:
(b,b2) ≤tx3, (b,b2) ≤tx4, (b,b2) ≤tx7, (b,b2) ≤tx8
σ(t1) = {x3,x4,x7,x8} dla pytaniat2:
szukamy informacji w tablicy zakotwicze« dla ka»dego deskryptora pytaniat2:
tab(c,c3) = (3, 1)
generujemy ªa«cuch dla (c,c3): L(c,c3) = {3 − ∅}
µ(x1(c,c3)) =nk=3, σ(t2) = {x3,x7}
t=t1+t2 gdziet1= (a,a2)(b,b2),t2= (c,c3) Dla pytaniat1:
szukamy informacji w tablicy zakotwicze« dla ka»dego deskryptora pytaniat1:
tab(a,a2) = (3, 2) tab(b,b2) = (3, 4)
wybieramy ªa«cuch minimalny:
Lmin(di) = L(a,a2)
generujemy ªa«cuch dla (a,a2): L(a,a2) = {4 − 1 − ∅}
µ(x2(a,a2)) =n2=4, µ(x1(a,a2)) =n2−n1=4 − 1 = 3
generujemy ªa«cuch dla (b,b2): L(b,b2) = {6 − 1 − 2 − 3 − ∅}:
µ(x4(b,b2)) =n4=6,
µ(x3(b,b2)) =n4−n3=6 − 1 = 5,µ(x2(b,b2)) =n4−n2=6 − 2 = 4, µ(x1(b,b2)) =n4−n3=6 − 3 = 3
σ(t1) = {3, 4} ∩ {6, 5, 4, 3} = {x3,x4,x7,x8} dla pytaniat2:
szukamy informacji w tablicy zakotwicze« dla ka»dego deskryptora pytaniat2:
tab(c,c3) = (3, 1)
generujemy ªa«cuch dla (c,c3): L(c,c3) = {3 − ∅}
(c,c3) 3, σ(
Stosowana jest modykacja metody ªa«cuchowej z podwójnym ªa«cuchowaniem i w tyª, i w przód. Wprowadzenie podwójnego ªa«cuchowania nie zmienia samej metody wyszukiwania, ale pozwala bardzo szybko ustali¢ pozycj¦ ka»dego obiektu w ªa«cuchu, co z kolei uªatwia i przyspiesza proces aktualizacji.
Metoda list ªa«cuchowych charakteryzuje si¦ szybkim czasem wyszukiwania, szczególnie w przypadku pyta« ogólnych,
jednodeskryptorowych i mimo zwi¦kszonej zaj¦to±ci pami¦ci, wynikaj¡cej z konieczno±ci pami¦tania odsyªaczy i tablicy zakotwicze«, zysk czasowy przewa»a nad t¡ wad¡. Jednak»e sztywna struktura, wi¡»ca poprzez pola odsyªacz obiekty nale»¡ce do jednego ªa«cucha mo»e by¢ przyczyn¡
skomplikowanej procedury aktualizacji obiektów. W celu poprawy tej sytuacji omówimy modykacj¦ polegaj¡c¡ na ªa«cuchowaniu
dwukierunkowym, gdzie przy poszczególnych warto±ciach deskryptorów mo»emy uzyska¢ informacje na temat adresu poprzednika i nast¦pnika w li±cie ªa«cuchowej, w której rozpatrujemy aktualizacj¦ dotycz¡c¡
pojedynczego obiektu.
Kartoteka wyszukiwawcza z odsyªaczami wzgl¦dnymi 1 : (a, a1) (b, b1) (c, c1)
∅ ∅ ∅
+1 +1 +4
2 : (a, a1) (b, b1) (c, c2)
−5 −1 ∅
+4 ∅ +4
3 : (a, a2) (b, b2) (c, c3)
∅ ∅ ∅
+1 +1 ∅
4 : (a, a2) (b, b2) (c, c4)
−1 −3 ∅
∅ +2 ∅
5 : (a, a1) (b, b2) (c, c1)
−4 −2 −4
+5 +3 ∅
6 : (a, a1) (b, b2) (c, c2)
−1 −1 −4
∅ ∅ ∅
Tablica zakotwicze«
di n1 nk L(di)
(a, a1) 1 6 4
(a, a2) 3 4 2
(b, b1) 1 2 2
(b, b2) 3 6 4
(c, c1) 1 5 2
(c, c2) 2 6 2
(c, c3) 3 3 1
(c, c4) 4 4 1
Rozpatrzmy pewien podzbiórD0 zbioru deskryptorówD systemuS(na przykªad podzbiór deskryptorów najcz¦±ciej wyst¦puj¡cych w pytaniach do systemu).
Obiekty w bazie danych grupujemy wedªug wybranego zbioru
deskryptorówD0⊂ D . Nast¦pnie tworzymy ªa«cuchy dowoln¡ metod¡
(ªa«cuchowanie w przód lub w tyª), ale tylko dla deskryptorówdj∈ D0. L(dj) = {n1− n2− n3− . . . − nk}, dj∈ D0, 1 ≤ j ≤ k.
Dla deskryptorówdj∈ D0 tworzymy równie» tablic¦ zakotwicze«. Pytanie do systemu, jak w poprzednich metodach, zadajemy w postaci termut . Term skªadowy jest postaciti = d1· d2· . . . · dk.
Odpowied¹ na term skªadowy znajdujemy w nast¦puj¡cy sposób:
je»eli wszystkie deskryptory pytania nale»¡ do zbioruD0 , to odpowied¹ znajdujemy jak w metodzie list ªa«cuchowych bez modykacji,
je»eli pewne deskryptory pytaniadi ∈/ D0 , to dla pewnego termutj ≤ ti
, którego wszystkie deskryptorydj ∈ D0 , odpowied¹ znajdujemy klasyczn¡ metod¡ list ªa«cuchowych.
W ten sposób znajdujemy zbiór obiektówXj: σ(tj) =Xj,
przy czymXj⊇Xi . Zbiór obiektówXj stanowi odpowied¹ przybli»on¡ na pytanieti. Odpowied¹ dokªadn¡ mo»emy znale¹¢ metod¡ przegl¡du zupeªnego w wyszukanym zbiorze obiektówXj:
σ(ti) = {xi ∈Xj, ^
di∈D/ 0
di∈txi ⇒di∈ti}
je»eli »aden deskryptor pytania nie nale»y do zbioruD0 , to odpowied¹ znajdujemy metod¡ przegl¡du zupeªnego opisów obiektów w bazie danych.
Wprowadzona modykacja pozwala upro±ci¢ struktur¦ bazy danych, poniewa» odsyªacze umieszczone s¡ tylko przy niektórych
deskryptorach w opisach obiektów.
O wyborze zbioruD0 ⊂ D , dla którego tworzymy ªa«cuchy, decyduj¡ takie same wzgl¦dy jak przy wyborze zbioruD0 w modykacji metody list inwersyjnych.