Metoda list prostych Wykład II Agnieszka Nowak - Brzezińska
Wprowadzenie
Przykładowa KW
Inna wersja KW
Wyszukiwanie informacji
Metoda I 1. Przeglądamy kolejne opisy obiektów i wybieramy te, które zawierają w swoim opisie pierwszy term składowy pytania t czyli t1 (a potem to samo powtarzamy dla kolejnych pytań składowych (t2 tm)): (ti) = {x X : ti tx} 2. Zbiór obiektów będący sumą kolejno uzyskanych odpowiedzi na termy składowe jest dopiero odpowiedzią na pełne pytanie t. (t) = (t1) (t2) (tm)
Metoda II Porównujemy pełne pytanie t z opisami obiektów i wybieramy obiekty zawierające w swoim opisie przynajmniej jeden term składowy pytania t. (t) = {x X : ti t : ti tx}
Sprawdzenie wiadomości studenta: Ile termów składowych ma następujące pytanie t do systemu S: t = (c,c1)*(a,a1)+(b,b1) Jeśli mamy obiekt x o opisie: tx = (c,c1)(a,a1)(b,b2) To który z termów składowych pytania: t= (c,c1)+(a,a1) jest zawarty w opisie tego obiektu? Czy obie metody I i II tyle samo termów składowych będą analizować w przypadku pytania t i obiektu x?
Słowny algorytm dla pytań w postaci termów składowych
Wady metody I
Wady metody II
Czas wyszukiwania Ad. 1. Metoda wymaga m-krotnego (bo dla każdego z m termów składowych pytania t ) przeglądu opisów wszystkich obiektów. Ad. 2. Tylko raz przeglądany jest opis każdego obiektu i tak długo termy składowe pytania t są analizowane dopóki któryś nie będzie zawarty w opisie analizowanego obiektu.
Ocena metody klasycznej
Modyfikacje
Uporządkowanie opisów obiektów
Ocena modyfikacji
Grupowanie obiektów wg wybranego atrybutu
Wybieramy atrybut c Atrybut C trafia na 1-sze miejsce w KW Brakuje jeszcze uporządkowania wartości atrybutu C dla obiektów w KW.
Tworzymy kartotekę NU nowe uporządkowanie
Kartoteka wyszukiwawcza w MLP z grupowaniem obiektów wg atrybutu c
Wyszukiwanie informacji
Wyszukiwanie - przykład T = (c,c1)(a,a1) + (b,b1) T = t1 + t2 T1 = (c,c1)(a,a1) 1. Szukamy deskryptora (c,c1) termu t1 w TA 2. Znajdujemy AP=1, AK=2 3. Przeszukujemy wybrany fragment KW od adresu AP do AK (a więc obiekty x1 i x5) i wybieramy tylko te, które w swoim opisie zawierają pozostałe deskryptory pytania t (a więc deskryptor (a,a1)): (t1)={x X nu=1..nu=2 : (a,a1) tx} (t1)={x1,x5} (t)= (t1) (t2) = {x1,x5} {x1,x2} = {x1,x2,x5} T2 = (b,b1) 1. Szukamy deskryptora (b,b1) termu t2 w TA 2. Nie znajdujemy rekordu w TA odpowiadającego szukanemu deskryptorowi, a więc konieczny jest przegląd zupełny całej KW: Czy T2 tx1? Odp: TAK Czy T2 tx5? Odp: NIE Czy T2 tx2? Odp: TAK Czy T2 tx6? Odp: NIE Czy T2 tx3? Odp: NIE Czy T2 tx7? Odp: NIE Czy T2 tx4? Odp: NIE Czy T2 tx8? Odp: NIE Więc: (t2)={x1,x2}
Ocena modyfikacji
Podział połówkowy Metoda podziału połówkowego jest stosowana przede wszystkim dla atrybutów numerycznych, tzn. takich, których wartości są liczbami naturalnymi. Metoda ta może być jednak stosowana również dla innego rodzaju atrybutów, jeśli wartości tych atrybutów w opisach obiektów przedstawione zostaną w postaci kodów numerycznych. Ponieważ wartości atrybutów są liczbami naturalnymi wobec tego opisy obiektów można przedstawić w postaci ciągu liczb naturalnych. Ciągi te porządkujemy w kolejności rosnącej lub malejącej i numerujemy kolejnymi liczbami naturalnymi od 1 do r. term składowy t i przedstawiamy również w postaci ciągu liczb naturalnych. Porównujemy term składowy t i pytania z opisem obiektu w połowie bazy danych (x [r/2] ).
Ciągi te porządkujemy w kolejności rosnącej lub malejącej i numerujemy kolejnymi liczbami naturalnymi od 1 do r. Tx1=(a,a1)(b,b1)(c,c1) Tx5=(a,a1)(b,b1)(c,c2) Tx2=(a,a1)(b,b2)(c,c1) Tx6=(a,a1)(b,b2)(c,c2) Tx3=(a,a2)(b,b2)(c,c3) Tx7=(a,a2)(b,b2)(c,c3) Tx4=(a,a2)(b,b2)(c,c4) Tx8=(a,a2)(b,b2)(c,c4) Tx1=111 Tx5=112 Tx2=121 Tx6=122 Tx3=223 Tx7=223 Tx4=224 Tx8=224
Tx1=111 Tx5=112 Tx2=121 Tx6=122 Tx3=223 Tx7=223 Tx4=224 Tx8=224
term składowy t i przedstawiamy również w postaci ciągu liczb naturalnych. Porównujemy term składowy t i pytania z opisem obiektu w połowie bazy danych (x [r/2] ). Tx1=111 Tx5=112 Tx2=121 Tx6=122 Tx3=223 Tx7=223 Tx4=224 Tx8=224 T = (a,a1)(c,c1) normalizacja T = (a,a1)(c,c1)[(b,b1)+(b,b2]= (a,a1)(c,c1)(b,b1)+ (a,a1)(c,c1)(b,b2) Porządkowanie termów T = (a,a1)(b,b1)(c,c1)+ (a,a1)(b,b2)(c,c1) T = 111+ 121
T = (a,a1)(b,b1)(c,c1)+ (a,a1)(b,b2)(c,c1) Najpierw t1 = (a,a1)(b,b1)(c,c1) T1 = 111 Tx1=111 Tx5=112 Tx2=121 Tx6=122 Tx3=223 Tx7=223 Tx4=224 Tx8=224 1. Porównujemy pytanie ti z opisem będącym w połowie kartoteki wyszukiwawczej (a,a1)(b,b1)(c,c1) T1 = 111
T = (a,a1)(b,b1)(c,c1)+ (a,a1)(b,b2)(c,c1) Najpierw t1 = (a,a1)(b,b1)(c,c1) Tx1=111 Tx5=112 Tx2=121 Tx6=122 Tx3=223 Tx7=223 Tx4=224 Tx8=224 1. Porównujemy pytanie ti z opisem będącym w połowie kartoteki wyszukiwawczej (a,a1)(b,b1)(c,c1) T1 = 111
T = (a,a1)(b,b1)(c,c1)+ (a,a1)(b,b2)(c,c1) Najpierw t1 = (a,a1)(b,b1)(c,c1) Tx1=111 Tx5=112 Tx2=121 Tx6=122 Tx3=223 Tx7=223 Tx4=224 Tx8=224 1. Porównujemy pytanie t i z opisem będącym w połowie kartoteki wyszukiwawczej (a,a1)(b,b1)(c,c1) T1 = 111 Tx1=111 Tx5=112 Tx2=121 Tx6=122 Czy pytanie w porządku leksykograficznym jest przed czy po opisie spotkanym w połowie kartoteki? przed I połowa Tx3=223 Tx7=223 Tx4=224 Tx8=224 po II połowa
Wady Konieczność porządkowania pytań tak jak i opisów obiektów sprawia, że metoda nie będzie chętnie stosowana. Można wykorzystać pewne założenia metody ale ograniczyć się do porządkowania tylko jednego wybranego atrybutu bądź kilku atrybutów w opisie obiektów.
Podział połówkowy - uproszczony
Wybieramy atrybut c
Wyszukiwanie
Wyszukiwanie - przykład T = (c,c1)(a,a1) + (b,b1) T = t1 + t2 n 8 Szukamy obiektu o indeksie: 1 1 5 2 2 C B A Szukamy więc 5-go obiektu w uporządkowanej kartotece. Jest to obiekt x3 o opisie (c,c3)(b,b2)(a,a2). 1 2 3 4 5 6 7 X1 C1 B1 A1 X5 C1 B2 A1 X2 C2 B1 A1 X6 C2 B2 A1 X3 C3 B2 A2 X7 C3 B2 A2 X4 C4 B2 A2 I połowa II połowa 8 x8 C4 B2 a2
Wyszukiwanie - przykład T = (c,c1)(a,a1) + (b,b1) T = t1 + t2 1. W pytaniu t1 mam poszukujemy obiektów zawierających w swoim opisie deskryptor (c,c1). 2. A więc deskryptor (c,c1) < (c,c3) zatem musimy szukać odpowiedzi w I-ej połowie KW: 3. Sprawdzamy kolejno opisy obiektów w I połowie czy zawierają one szukane deskryptory pytania t1: Czy T1 tx1? Odp: TAK Czy T1 tx5? Odp: TAK Czy T1 tx2? Odp: NIE Czy T1 tx6? Odp: NIE Więc: (t1)={x1,x5} C B A X1 C1 B1 A1 X5 C1 B2 A1 X2 C2 B1 A1 X6 C2 B2 A1
Wyszukiwanie - przykład T = (c,c1)(a,a1) + (b,b1) T = t1 + t2 1. W pytaniu t2 mam poszukujemy obiektów zawierających w swoim opisie deskryptor (b,b1). 2. Niestety deskryptor pytania nie porządkował naszej kartoteki zatem konieczny jest przegląd zupełny całej KW: Czy T2 tx1? Odp: TAK Czy T2 tx5? Odp: NIE Czy T2 tx2? Odp: TAK Czy T2 tx6? Odp: NIE Czy T2 tx3? Odp: NIE Czy T2 tx7? Odp: NIE Czy T2 tx4? Odp: NIE Czy T2 tx8? Odp: NIE Więc: (t1)={x1,x2} C B A X1 C1 B1 A1 X5 C1 B2 A1 X2 C2 B1 A1 X6 C2 B2 A1 X3 C3 B2 A2 X7 C3 B2 A2 X4 C4 B2 A2 x8 C4 B2 a2 (t)= (t1) (t2) = {x1,x5} {x1,x2} = {x1,x2,x5}
Ocena modyfikacji
Ocena modyfikacji Kiedy może być tak, że utracimy kompletność? Co to jest kompletność wyszukiwania?
Kompletność wyszukiwania Przez wyszukiwanie kompletne będziemy rozumieć taką metodę, która na zadane do systemu pytanie potrafi znaleźć wszystkie obiekty będące odpowiedzią (na to pytanie). Jeśli choć jeden obiekt (który był odpowiedzią) nie zostanie wyszukany to powiemy, że odpowiedź systemu nie jest kompletna.
Kiedy podział połówkowy (wersji uproszczonej, z jednym atrybutem porządkowanym) może nie dostarczać odpowiedzi kompletnej? T = (c,c3)(a,a2) n 8 Szukamy obiektu o indeksie: 1 1 5 2 2 C B A Szukamy więc 5-go obiektu w uporządkowanej kartotece. Jest to obiekt x3 o opisie (c,c3)(b,b2)(a,a2). Skoro obiekt x3 ma wartość atrybutu C równą c3 to decydujemy że informacje których szukamy będą w drugiej połowie kartoteki A więc przeglądniemy odpowiednio tylko 4 obiekty x3, x7, x4, x8 (wśród których x3 i x7 określimy jako odpowiedź na pytanie) a pominiemy obiekt x6 będący w pierwszej (pominiętej) połowie, mimo, że on też jest odpowiedzią na tak zadane pytanie. Z tego względu zamiast znaleźć 3 obiekty stanowiące odpowiedź na zadanie pytanie, znajdziemy tylko 2, a więc nasza odpowiedź nie będzie kompletna!!! 1 2 3 4 5 6 7 8 X1 C1 B1 A1 X5 C1 B2 A1 X2 C2 B1 A1 X6 C3 B2 A2 X3 C3 B2 A2 X7 C3 B2 A2 X4 C4 B2 A2 x8 C4 B2 a2 I połowa II połowa
Pozostałe modyfikacje patrz laboratoria Metoda odcinkowa (polegająca na grupowaniu obiektów wg więcej niż jednego deskryptora).
Modyfikacje (po pewnym czasie eksploatacji systemu) Odcedzanie: statyczne, dynamiczne, hiperdynamiczne Organizacja zwarta Założenia: Pytania do systemu się powtarzają Mamy pewien okres obserwacji systemu i wiemy więc jakie obiekty stanowiły odpowiedź na takie pytania Efekt: Porządkujemy obiekty w KW tak, że na górze kartoteki powinny być te obiekty, które najczęściej są odpowiedzią na pytania a te, które najrzadziej odpowiednio niżej w KW
Odcedzanie statyczne KW: Tworzymy macierz [tx x ti] t1 t2 t3 t4 t5 F X1 1 0 1 1 1 4 X2 1 0 0 1 1 3 X3 0 0 0 0 0 0 X4 0 0 0 0 0 0 X5 1 1 0 1 1 4 X6 1 1 0 1 1 4 X7 0 0 0 0 0 0 x8 0 0 0 0 0 0 Po pewnym czasie eksploatacji systemu widzimy, że najczęściej pytania są następujące: T1 = (a,a1) T2 = (a,a1)(b,b2) T3 = (b,b1)(c,c1) T4 = (a,a1)+(b,b1) T5= (a,a1)+(c,c1) A odpowiedzi na te pytania były następujące: (T1) = {x1,x2,x5,x6} ( T2) = {x5,x6} ( T3) = {x1} ( T4) = {x1,x2,x5,x6} ( T5)= {x1,x2,x5,x6} Patrząc na częstość występowania obiektów w odpowiedziach na pytanie (F) NOWE uporządkowanie obiektów będzie następujące: a b C X1 A1 B1 C1 X5 A1 B2 C1 X6 A1 B2 C2 x2 A1 B1 C2 X3 A2 B2 C3 x4 A2 B2 C4 X7 A2 B2 C3 x8 a2 b2 c4
Ocena Wady: zwiększona zajętość pamięci na macierz pomocniczą, konieczność obliczania częstości występowania obiektów w odpowiedziach na pytania. Zalety: kolejność pytań nie ma wpływu na uporządkowanie obiektów jedynie częstość występowania obiektów w odpowiedziach na pytania.
Odcedzanie dynamiczne KW: NIE Tworzymy macierzy [tx x ti] t1 t2 t3 t4 t5 F X1 1 0 1 1 1 4 X2 1 0 0 1 1 3 Po pewnym czasie eksploatacji systemu widzimy, że najczęściej pytania są następujące: T1 = (a,a1) T2 = (a,a1)(b,b2) T3 = (b,b1)(c,c1) T4 = (a,a1)+(b,b1) T5= (a,a1)+(c,c1) A odpowiedzi na te pytania były następujące: (T1) = {x1,x2,x5,x6} ( T2) = {x5,x6} ( T3) = {x1} ( T4) = {x1,x2,x5,x6} ( T5)= {x1,x2,x5,x6} X3 0 0 0 0 0 0 X4 0 0 0 0 0 0 X5 1 1 0 1 1 4 X6 1 1 0 1 1 4 X7 0 0 0 0 0 0 x8 0 0 0 0 0 0
t0 X1 X2 Po pytaniu t1 T1 = (a,a1) X3 X4 X5 X6 X7 x8 t1 X1 X2 X3 X4 X5 X6 X7 x8 Zasada: Obiekty które są odpowiedzią na pytania przesuwają się w górę KW o jedno miejsce! Kartoteka Wyszukiwawcza a b C X1 A1 B1 C1 X2 A1 B1 C2 X3 A2 B2 C3 X5 A1 B2 C1 X6 A1 B2 C2 x4 A2 B2 C4 X7 A2 B2 C3 x8 a2 b2 c4
t1 X1 X2 Po pytaniu t2 T2 = (a,a1)(b,b2) X3 X5 X6 x4 X7 x8 t2 X1 X2 X3 X5 X6 x4 X7 x8 Zasada: Obiekty które są odpowiedzią na pytania przesuwają się w górę KW o jedno miejsce! Kartoteka Wyszukiwawcza a b C X1 A1 B1 C1 X2 A1 B2 C1 X5 A1 B2 C1 X6 A1 B2 C2 X3 A2 B2 C3 x4 A2 B2 C4 X7 A2 B2 C3 x8 a2 b2 c4
t2 X1 X2 Po pytaniu t3 T3 = (b,b1)(c,c1) X5 X6 X3 x4 X7 x8 t3 X1 X2 X5 X6 X3 X4 X7 X8 Zasada: Obiekty które są odpowiedzią na pytania przesuwają się w górę KW o jedno miejsce! Kartoteka Wyszukiwawcza a b C X1 A1 B1 C1 X2 A1 B2 C1 X5 A1 B2 C2 X6 A1 B1 C2 X3 A2 B2 C3 X4 A2 B2 C4 X7 A2 B2 C3 X8 a2 b2 c4
t3 X1 X2 Po pytaniu t4 T4 = (a,a1)+(b,b1) X5 X6 X3 X4 X7 X8 t4 X1 X2 X5 X6 X3 X4 X7 X8 Kartoteka Wyszukiwawcza a b C X1 A1 B1 C1 X2 A1 B2 C1 X5 A1 B2 C2 X6 A1 B1 C2 X3 A2 B2 C3 Zasada: Obiekty które są odpowiedzią na pytania przesuwają się w górę KW o jedno miejsce! X4 A2 B2 C4 X7 A2 B2 C3 X8 a2 b2 c4
t4 X1 X2 X5 X6 X3 X4 X7 X8 t5 X1 X2 X5 X6 X3 X4 X7 X8 Zasada: Obiekty które są odpowiedzią na pytania przesuwają się w górę KW o jedno miejsce! Po pytaniu t5 T5= (a,a1)+(c,c1) Kartoteka Wyszukiwawcza a b C X1 A1 B1 C1 X2 A1 B2 C1 X5 A1 B2 C2 X6 A1 B1 C2 X3 A2 B2 C3 X4 A2 B2 C4 X7 A2 B2 C3 X8 a2 b2 c4
Ocena Wady: kolejność występowania obiektów na początku ma wpływ na wynikowe uporządkowanie obiektów, kolejność zadawania pytań też ma znaczenie. Zalety: uporządkowanie kartoteki zmienia się na bieżąco po każdym pytaniu a więc nie ma zwiększonej zajętości pamięci.
Odcedzanie hiperdynamiczne KW: NIE Tworzymy macierzy [tx x ti] t1 t2 t3 t4 t5 F X1 1 0 1 1 1 4 X2 1 0 0 1 1 3 Po pewnym czasie eksploatacji systemu widzimy, że najczęściej pytania są następujące: T1 = (a,a1) T2 = (a,a1)(b,b2) T3 = (b,b1)(c,c1) T4 = (a,a1)+(b,b1) T5= (a,a1)+(c,c1) A odpowiedzi na te pytania były następujące: (T1) = {x1,x2,x5,x6} ( T2) = {x5,x6} ( T3) = {x1} ( T4) = {x1,x2,x5,x6} ( T5)= {x1,x2,x5,x6} X3 0 0 0 0 0 0 X4 0 0 0 0 0 0 X5 1 1 0 1 1 4 X6 1 1 0 1 1 4 X7 0 0 0 0 0 0 x8 0 0 0 0 0 0
t0 X1 X2 X3 X4 X5 X6 X7 x8 t1 X1 X2 X5 X6 X3 X4 X7 x8 Po pytaniu t1 Kartoteka Wyszukiwawcza a b C X1 A1 B1 C1 X2 A1 B1 C2 X5 A1 B2 C1 X6 A1 B2 C2 X3 A2 B2 C3 x4 A2 B2 C4 X7 A2 B2 C3 x8 a2 b2 c4
t1 X1 X2 X5 X6 X3 X4 X7 x8 t2 X5 X6 X1 X2 X3 x4 X7 x8 Po pytaniu t2 Kartoteka Wyszukiwawcza a b C X5 A1 B2 C1 X6 A1 B2 C2 X1 A1 B1 C1 X2 A1 B2 C1 X3 A2 B2 C3 x4 A2 B2 C4 X7 A2 B2 C3 x8 a2 b2 c4
t2 X5 X6 X1 X2 X3 x4 X7 x8 t3 X1 X5 X6 X2 X3 X4 X7 X8 Po pytaniu t3 Kartoteka Wyszukiwawcza a b C X1 A1 B1 C1 X5 A1 B2 C1 X6 A1 B2 C2 X2 A1 B1 C2 X3 A2 B2 C3 X4 A2 B2 C4 X7 A2 B2 C3 X8 a2 b2 c4
t3 X1 X5 X6 X2 X3 X4 X7 X8 t4 X1 X5 X6 X2 X3 X4 X7 X8 Po pytaniu t4 Kartoteka Wyszukiwawcza a b C X1 A1 B1 C1 X5 A1 B2 C2 X6 A1 B1 C2 X2 A1 B2 C1 X3 A2 B2 C3 X4 A2 B2 C4 X7 A2 B2 C3 X8 a2 b2 c4
t4 X1 X5 X6 X2 X3 X4 X7 X8 t5 X1 X5 X6 X2 X3 X4 X7 X8 Po pytaniu t5 Kartoteka Wyszukiwawcza a b C X1 A1 B1 C1 X5 A1 B2 C2 X6 A1 B1 C2 X2 A1 B2 C1 X3 A2 B2 C3 X4 A2 B2 C4 X7 A2 B2 C3 X8 a2 b2 c4
Ocena Wady: kolejność występowania obiektów na początku ma wpływ na wynikowe uporządkowanie obiektów, kolejność zadawania pytań też ma znaczenie. Ostatnie pytanie jest decydującym!!! Zalety: uporządkowanie kartoteki zmienia się na bieżąco po każdym pytaniu a więc nie ma zwiększonej zajętości pamięci.
Jak się wyszukuje przy odcedzaniu? KW Załóżmy, że do systemu zadano pytanie: T = (a,a1)(b,b2) a b C X1 A1 B1 C1 X5 A1 B2 C1 Zwykle zadanemu pytaniu towarzyszy dodatkowy parametr k X6 A1 B2 C2 x2 A1 B1 C2 X3 A2 B2 C3 x4 A2 B2 C4 X7 A2 B2 C3 x8 a2 b2 c4 Załóżmy, że w naszym przypadku: K- przeszukaj tylko połowę KW Wówczas wiadomo, że odpowiedź na pytanie t będzie poszukiwana tylko dla pierwszej połowy obiektów w KW, a więc (po zmianie uporządkowania) będą to obiekty: a b C X1 A1 B1 C1 X5 A1 B2 C1 X6 A1 B2 C2 x2 A1 B1 C2 Sprawdzamy więc: Czy T tx1? Odp: NIE Czy T tx5? Odp: TAK Czy T tx6? Odp: TAK Czy T tx2? Odp: NIE Ostatecznie: (t) = {x5,x6}
Jaka jest kompletność odpowiedzi? W metodzie klasycznej znaczenie termu T = (a,a1)(b,b2) jest następujące: (t) = {x5,x6} Przy zastosowaniu odcedzania statycznego znaczeniem tego termu jest zbiór: (t) = {x5,x6} A więc przeszukując tylko 50 % KW dostaliśmy tę samą odpowiedź. Kompletność 100%
Czy tak będzie zawsze? W metodzie klasycznej znaczenie termu T = (a,a1)(b,b2) jest następujące: (t) = {x5,x6} Przy zastosowaniu odcedzania statycznego i parametru k = 25 % KW znaczeniem tego termu jest zbiór: (t) = {x5} A więc przeszukując tylko 25 % KW dostaliśmy niekompletną odpowiedź. Kompletność 50%
Wniosek Gdy nie przeszukujemy całej KW: 1. zyskujemy na czasie wyszukiwania (bo się on skraca) 2. ale ryzykujemy utratą kompletności odpowiedzi (bo możemy nie wyszukać wszystkich obiektów, które w swoim opisie zawierają termy pytania).
Organizacja zwarta Podobnie jak odcedzanie prowadzi do zmiany uporządkowania obiektów w KW. Zmiana uporządkowania dokonana jest dzięki budowie zwartych obszarów obiektów, które były odpowiedzią na zadane pytanie.
Organizacja zwarta - przykład KW: Tworzymy macierz [tx x ti] t1 t2 t3 t4 t5 X1 1 0 1 1 1 X2 1 0 0 1 1 Po pewnym czasie eksploatacji systemu widzimy, że najczęściej pytania są następujące: T1 = (a,a1) T2 = (a,a1)(b,b2) T3 = (b,b1)(c,c1) T4 = (a,a1)+(b,b1) T5= (a,a1)+(c,c1) A odpowiedzi na te pytania były następujące: (T1) = {x1,x2,x5,x6} ( T2) = {x5,x6} ( T3) = {x1} ( T4) = {x1,x2,x5,x6} ( T5)= {x1,x2,x5,x6} X3 0 0 0 0 0 X4 0 0 0 0 0 X5 1 1 0 1 1 X6 1 1 0 1 1 X7 0 0 0 0 0 x8 0 0 0 0 0
Organizacja zwarta budowa zwartych obszarów dla pytania t1 t1 t2 t3 t4 t5 X1 1 0 1 1 1 X2 1 0 0 1 1 X3 0 0 0 0 0 X4 0 0 0 0 0 X5 1 1 0 1 1 X6 1 1 0 1 1 X7 0 0 0 0 0 x8 0 0 0 0 0 t1 t2 t3 t4 t5 X1 1 0 1 1 1 X2 1 0 0 1 1 X5 1 1 0 1 1 X6 1 1 0 1 1 X3 0 0 0 0 0 X4 0 0 0 0 0 X7 0 0 0 0 0 x8 0 0 0 0 0 Tak naprawdę już po tym pierwszym pytaniu t1 wszystkie obiekty na wszystkie pytania budują zwarte obszary!!!
Kartoteka wyszukiwawcza dla organizacji zwartej NU t1 t2 t3 t4 t5 1 X1 1 0 1 1 1 2 X2 1 0 0 1 1 3 X5 1 1 0 1 1 4 X6 1 1 0 1 1 5 X3 0 0 0 0 0 6 X4 0 0 0 0 0 7 X7 0 0 0 0 0 8 x8 0 0 0 0 0 NU a b C 1 X1 A1 B1 C1 2 x2 A1 B1 C2 3 X5 A1 B2 C1 4 X6 A1 B2 C2 5 X3 A2 B2 C3 6 x4 A2 B2 C4 7 X7 A2 B2 C3 8 x8 a2 b2 c4 + AP AK T1 1 4 T2 3 4 T3 1 1 T4 1 4 t5 1 4 Kartoteka wyszukiwawcza
Przykład wyszukiwania - 1 Załóżmy, że do systemu zadano pytanie: T = (a,a1)(b,b2) Sprawdzamy, czy pytanie odpowiada, któremuś z pytań które budowały KW? W naszym przypadku TAK bo jest to odpowiednik t2 więc widzimy, że: AP T2 3 4 AK Czyli odpowiedzią na pytanie t są obiekty o numerach od AP do AK czyli 3 i 4 a więc: NU a b C 1 X1 A1 B1 C1 2 x2 A1 B1 C2 3 X5 A1 B2 C1 4 X6 A1 B2 C2 5 X3 A2 B2 C3 6 x4 A2 B2 C4 7 X7 A2 B2 C3 8 x8 a2 b2 c4 AP AK T1 1 4 T2 3 4 T3 1 1 T4 1 4 t5 1 4 Ostatecznie: (t) = {x5,x6}
Przykład wyszukiwania -2 Załóżmy, że do systemu zadano pytanie: T = (a,a1)(b,b2)(c,c2) Sprawdzamy, czy pytanie odpowiada, któremuś z pytań które budowały KW? W naszym przypadku TAK bo jest to odpowiednik t2 więc widzimy, że: AP T2 3 4 Ponieważ term t2 jest zawarty w termie t musimy obiekty wskazane jako odpowiedź na pytanie t2 przeszukać względem pozostałych deskryptorów pytania, a więc (c,c2): NU a b C AK 3 X5 A1 B2 C1 4 X6 A1 B2 C2 NU a b C 1 X1 A1 B1 C1 2 x2 A1 B1 C2 3 X5 A1 B2 C1 4 X6 A1 B2 C2 5 X3 A2 B2 C3 6 x4 A2 B2 C4 7 X7 A2 B2 C3 8 x8 a2 b2 c4 AP AK T1 1 4 T2 3 4 T3 1 1 T4 1 4 t5 1 4 Ostatecznie: (t) = {x6}
Przykład wyszukiwania -3 Załóżmy, że do systemu zadano pytanie: T = (a,a2)(b,b2)(c,c2) Sprawdzamy, czy pytanie odpowiada, któremuś z pytań które budowały KW? W naszym przypadku NIE więc nie pomoże nam tablica adresowa i konieczny jest przegląd zupełny całej KW: Czy T tx1? Odp: NIE Czy t tx2? Odp: NIE Czy T tx5? Odp: NIE Czy T tx6? Odp: NIE Czy T tx3? Odp: NIE Czy T tx4? Odp: NIE Czy T tx7? Odp: NIE Czy T tx8? Odp: NIE NU a b C 1 X1 A1 B1 C1 2 x2 A1 B1 C2 3 X5 A1 B2 C1 4 X6 A1 B2 C2 5 X3 A2 B2 C3 6 x4 A2 B2 C4 7 X7 A2 B2 C3 8 x8 a2 b2 c4 AP AK T1 1 4 T2 3 4 T3 1 1 T4 1 4 t5 1 4 Ostatecznie: (t) = { }
Wniosek Organizacja zwarta jest wtedy zaletą gdy zadajemy pytania w oparciu o pytania, które tworzyły całą organizację i budują tablicę TA (inaczej konieczny jest przegląd zupełny KW). Nie zawsze daje się zbudować zwarte obszary obiektów.
Podsumowanie Metoda list prostych jest najłatwiejszą do implementacji metodą wyszukiwania. Zaletą jest brak redundancji i stosunkowo niewielka zajętość pamięci. Modyfikacje pozwalają skrócić czas wyszukiwania. Aktualizacja nie jest trudnym procesem.