• Nie Znaleziono Wyników

Metoda List łańcuchowych

N/A
N/A
Protected

Academic year: 2021

Share "Metoda List łańcuchowych"

Copied!
32
0
0

Pełen tekst

(1)

Metoda List łańcuchowych

(2)

Zakładanie kartoteki wyszukiwawczej:

Zakładamy iż znany jest system wyszukiwania S, a więc zbiór obiektów X, atrybutów A, wartości tych atrybutów V oraz funkcja informacji

 : XAV

.

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:

N X

 :

gdzie: N - zbiór liczb naturalnych.

W systemie zachodzi następująca zależność: (x) (y) tx ty

x , yX

,

takie same adresy mają obiekty o jednakowym opisie deskryptorowym.

(3)

Definicja listy łańcuchowej

Dla każdego deskryptora di =(ai,vi)D (D - zbiór wszystkich deskryptorów systemu) tworzona jest lista Ł(di) o następującej postaci:

} ...

{ )

( d

i

n

1

n

2

n

k

Ł    

gdzie n1 jest adresem pierwszego obiektu zawierającego w swoim opisie deskryptor di, a

pozostałe elementy są odsyłaczami do kolejnych obiektów zawierających w swoim opisie ten deskryptor. Listę Ł(di) nazywamy listą łańcuchową deskryptora di.

(4)

Rodzaje odsyłaczy:

1. adresacja bezwzględna (odsyłacz jest rzeczywistym adresem obiektu w kartotece wyszukiwawczej)

2. adresacja względna (względem pierwszego obiektu w łańcuchu, względem pierwszego obiektu w bazie)

3. skok (jest różnicą między sąsiednimi adresami obiektów w liście)

(5)

Odsyłacze

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:

a) Odsyłacz bezwzględny – zawiera on bezpośredni adres obiektu w kartotece wyszukiwawczej.

b) Odsyłacz względny – jest on tworzony względem pierwszego obiektu zawierającego w swoim opisie dany deskryptor.

c) Odsyłacz jako skok – zawiera różnicę pomiędzy adresami kolejnych obiektów zawierających w swoim opisie dany deskryptor.

(6)

Kartoteka Wyszukiwawcza

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ń.

Dodatkowo w Kartotece Wyszukiwawczej tworzymy tzw. Tablicę Zakotwiczeń

Tablica ta dla każdego deskryptora di podaje adres pierwszego obiektu w łańcuchu i ilość

obiektów w łańcuchu (długość łańcucha ) :

tab ( d

i

)  ( n

1i

,  ( d

i

) )

gdzie

n

1i

  ( x

1i

)

jest to adres pierwszego takiego obiektu w Systemie, który w swoim opisie zawiera deskryptor di.

(7)

Kartoteka wtórna

(8)

Kartoteka wyszukiwawcza – odsyłacz jako adres bezwzględny

 X a  b  c 1 X1 A1 2 B1 2 C1 5 2 X2 A1 5 B1  C2 6 3 X3 A2 4 B2 4 C3 7 4 X4 A2 7 B2 5 C4 8 5 X5 A1 6 B2 6 C1 6 X6 A1  B2 7 C2 7 X7 A2 8 B2 8 C3 8 X8 A2  B2  C4

di N1 Ł(di) (a,a1) 1 4 (a,a2) 3 4 (b,b1) 1 2 (b,b2) 3 6 (c,c1) 1 2 (c,c2) 2 2 (c,c3) 3 2 (c,c4) 4 2 Kartoteka wtórna z odsyłaczami

Tablica zakotwiczeń

(9)

Kartoteka wyszukiwawcza – odsyłacz jako adres względny

di N1 Ł(di) (a,a1) 1 4 (a,a2) 3 4 (b,b1) 1 2 (b,b2) 3 6 (c,c1) 1 2 (c,c2) 2 2 (c,c3) 3 2 (c,c4) 4 2

 X a  b  c 1 X1 A1 +1 B1 +1 C1 +4 2 X2 A1 +4 B1  C2 +4 3 X3 A2 +1 B2 +1 C3 +4 4 X4 A2 +4 B2 +2 C4 +4 5 X5 A1 +5 B2 +3 C1 6 X6 A1  B2 +4 C2 7 X7 A2 +5 B2 +5 C3 8 X8 A2  B2  C4

Kartoteka wtórna z odsyłaczami

Tablica zakotwiczeń

(10)

Kartoteka wyszukiwawcza – odsyłacz jako skok

di N1 Ł(di) (a,a1) 1 4 (a,a2) 3 4 (b,b1) 1 2 (b,b2) 3 6 (c,c1) 1 2 (c,c2) 2 2 (c,c3) 3 2 (c,c4) 4 2

 X a  b  c 1 X1 A1 +1 B1 +1 C1 +4 2 X2 A1 +3 B1  C2 +4 3 X3 A2 +1 B2 +1 C3 +4 4 X4 A2 +3 B2 +1 C4 +4 5 X5 A1 +1 B2 +1 C1 6 X6 A1  B2 +1 C2 7 X7 A2 +1 B2 +1 C3 8 X8 A2  B2  C4

Kartoteka wtórna z odsyłaczami

Tablica zakotwiczeń

(11)

t

m

t t

t

1

2

 ... 

) ) ( , ( )

(di n1i di

tab

) ) ( , ( )

( i 1i i

t d

d n

d tab

i i

Proces wyszukiwania

Do systemu S pytanie zadajemy t:

Jeżeli term składowy jest pojedynczym deskryptorem to:

1.W tablicy zakotwiczeń znajdujemy

2.Generujemy zbiór obiektów ( zbiór adresów obiektów ) zgodnie ze znalezionym adresem.

Jeżeli term składowy jest iloczynem deskryptorów to:

1.Z tablicy zakotwiczeń znajdujemy łańcuchy dla wszystkich deskryptorów pytania 2.Wybieramy łańcuch najkrótszy

min

:

} ) ( { )

(

min

min i

d

i d

d

i

 

3.Generujemy odpowiedz przybliżoną

)}

( {

)

( t

i

x

min

d

i

  

=

x

i

(12)

4a).Metodą przeglądu zupełnego spośród odpowiedzi przybliżonej tworzymy odpowiedz dokładną:

) (

{ )

( t

i

x

min

d

i

  

j i i

x j

i t j

d

dddt

}

lub

4b).Porównujemy elementy wybranego łańcucha min z pozostałymi łańcuchami i wybieramy tylko elementy wspólne, które stanowią odpowiedź na pytanie:

) (

( {

)

( t

i

x

min

d

i

  

1

(

j

),

i j

)}

k

j

d d

d

 

(13)

Przykład wyszukiwania

T = (a,a1)(c,c2)

Z tablicy zakotwiczeń dla każdego deskryptora pytania pobieramy dostępne informacje:

Tab(a,a1) = (1,4) Tab(c,c2) = (2,2)

Wybieramy łańcuch minimalny, czyli taki, który ma mniej elementów, mniejszą długość (Ł(di)):

czyli łańcuch dla (c,c2)

Generujemy ten łańcuch dla (c,c2):

} 4

2 { )

,

( c c

2

    Ł

} 6 , 2 { ) , (

6 4 2 4 )

(

2 )

(

2

1 )

, ( 2

1 )

, ( 1

2 2

c

Ł c

n x

n x

c c

c c

Jest to tzw. Odpowiedź przybliżona.

(14)

By wyszukiwać odpowiedź dokładną należy użyć jednej z dwóch metod:

} 6 , 2 { )

,

( c c

2

Ł

} 6 , 2 { )

( t

przybliżona

} ,

{ x

2

x

6

X

przybliżone

} )

, ( : {

)

( txX

przybliżone

a a

1

x

6 1

2 1

) , (

) , (

x a

a

x a

a

} ,

{ )

( tx

2

x

6

} 5

4 1

1 { )

,

( a a

1

      Ł

} 6 , 5 , 2 , 1 { ) , (

6 5 1 5 )

(

5 4 1 4 )

(

2 1 1 1 )

(

1 )

(

1

1 )

, ( 4

1 )

, ( 3

1 )

, ( 2

1 )

, ( 1

1 1 1 1

a Ł a

n x

n x

n x

n x

a a

a a

a a

a a

} ,

{ } 6 , 2 { } 6 , 5 , 2 , 1 { }

6 , 2 { )

( t     x

2

x

6

(15)

Czas wyszukiwania

Pytania ogólne.

i

i

d

t

  

g

Czas wyszukiwania odpowiedz na pytanie ogólne jest równy czasowi generowania łańcucha.

Pytania szczegółowe.

k

i

d d d

t

1

2

 ... 

 '  

g

 

p

gdzie

p

- czas przeglądu odpowiedzi przybliżonej lub czas porównywania łańcuchów.

(16)

Redundancja i zajętość pamięci

Metoda nie wprowadza redundancji obiektowej ( opis każdego obiektu występuje tylko raz w bazie danych). Natomiast zajętość pamięci w stosunku do metody list prostych jest wyraźnie większa, gdyż pamiętać należy odsyłacze i tablicę zakotwiczeń. Łączna zajętość pamięci wynosi:

t o

x

M M

M

M   

gdzie:

Mx- zajętość pamięci wynikająca z liczby obiektów w bazie danych,

Mo- zajętość pamięci związana z koniecznością pamiętania odsyłaczy,

Mt Mt- zajętość pamięci związana z pamiętaną tablicą zakotwiczeń.

(17)

 Struktura kartoteki wyszukiwawczej jest złożona w porównaniu do poprzednich metod. Każdy deskryptor w opisie obiektu zostaje rozszerzony o odsyłacz względny, bezwzględny lub przez skok. Pozwala on ustalić adres kolejnego obiektu który w swoim opisie posiada dany deskryptor. Dodatkowo należy stworzyć tak zwaną tablicę zakotwiczeń z adresem pierwszego obiektu posiadającego w swoim opisie ten deskryptor oraz liczbą adresów obiektów zawierających dany deskryptor.

 W przypadku pytań jednodeskryptorowych odpowiedź uzyskiwana jest szybko poprzez wygenerowanie odpowiedniej listy łańcuchowej. Natomiast gdy pytanie występuje w postaci sumy termów składowych, odpowiedź wyznaczana jest w jeden ze znanych sposobów wyszukiwania (jako odpowiedź dokładna wcześniej uzyskanej z łańcucha najkrótszego odpowiedzi przybliżonej) bądź …poprzez sumę logiczną odpowiedzi na termy składowe wyznaczone z przecięcia łańcuchów wygenerowanych dla deskryptorów zawartych w opisie termu składowego. Odpowiedź na term składowy można uzyskać także poprzez przegląd zupełny obiektów którym odpowiadają adresy znajdujące się w najkrótszym łańcuchu spośród łańcuchów dla deskryptorów pytania.

(18)

Metoda nie wprowadza redundancji. Ze względu na dość kłopotliwą aktualizację, system wykorzystujący do wyszukiwania informacji metodę list łańcuchowych powinien pracować w trybie wsadowym.. W niniejszym rozdziale pracy został przedstawiony szczegółowy opis metody list inwersyjnych, jej modyfikacji, a także zostały dokładnie omówione wszystkie parametry charakterystyczne dla tej metody.

Sposób wyszukiwania został zilustrowany na praktycznym przykładzie.

(19)

Wady i zalety

ZALETY:

- szybki proces wyszukiwania, - brak redundancji,

WADY:

- duża zajętość pamięci,

- skomplikowana i czasochłonna aktualizacja

(20)

Modyfikacje

Bezpośrednią przyczyną stworzenia modyfikacji metody list łańcuchowych jest główna wada jej klasycznej wersji, czyli złożony i czasochłonny proces aktualizacji.

Realizowane są następujące modyfikacje metody list łańcuchowych:

1. Łańcuchowanie w tył

2. Podwójne łańcuchowanie

3. Łańcuchowanie grup obiektów

(21)

łańcuchowanie w tył

Modyfikacja ta różni się od wersji klasycznej budową list łańcuchowych, przy zastosowaniu łańcuchowania w tył mają one następującą postać:

Ł( )={ - - … - }

gdzie oznacza adres ostatniego obiektu, który zawiera w swoim opisie deskryptor , dla którego tworzona jest lista łańcuchowa. Natomiast kolejne elementy listy to odsyłacze do adresów poprzednich obiektów zawierających w swoim opisie deskryptor . Zmiana kolejności obiektów w listach łańcuchowych pociąga za sobą także zmianę zawartości odsyłaczy przy opisach obiektów.

Wdrożenie modyfikacji wymaga także zmiany pierwszej kolumny w tablicy zakotwiczeń. Będzie ona teraz dla każdego deskryptora zawierała adres nie pierwszego, a ostatniego obiektu zawierającego w swoim opisie dany deskryptor.

Łańcuchowanie w tył nie zmienia redundancji, zajętości pamięci ani algorytmu służącego do wyszukiwania informacji. O wyborze metody z łańcuchowaniem w przód lub w tył decyduje projektant systemu biorąc pod uwagę sposób napływania informacji do systemu lub dodatkowe czynniki decydujące o umieszczeniu obiektów w pamięci maszyny cyfrowej.

(22)

Podwójne łańcuchowanie

Przy wprowadzaniu modyfikacji metody list łańcuchowych poprzez łańcuchowanie w obie strony rozszerzeniu ulega także tablica zakotwiczeń. Będzie ona teraz dla każdego deskryptora zawierała adres pierwszego i ostatniego obiektu który zawiera w swoim opisie dany deskryptor, oraz łączną liczbę adresów obiektów w liście łańcuchowej dla tego deskryptora.

(23)

Kartoteka wtórna z Tablica zakotwiczeń odsyłaczami wprzód i w tył

 X a  ↑ b  ↑ c  ↑ 1 X1 A1 +1 B1 +1 C1 +4 2 X2 A1 +3 -5 B1  -1 C2 +4 3 X3 A2 +1 B2 +1 C3 +4 4 X4 A2 +3 -5 B2 +1 -1 C4 +4 5 X5 A1 +1 -4 B2 +1 -1 C1  -4 6 X6 A1  -1 B2 +1 -1 C2  -4 7 X7 A2 +1 -4 B2 +1 -1 C3  -4 8 X8 A2  -1 B2  -1 C4  -4

di N1 Nk Ł(di) (a,a1) 1 6 4 (a,a2) 3 8 4 (b,b1) 1 2 2 (b,b2) 3 8 6 (c,c1) 1 5 2 (c,c2) 2 6 2 (c,c3) 3 7 2 (c,c4) 4 8 2

(24)

Tak samo jak poprzednia modyfikacja, łańcuchowanie w przód oraz w tył nie powoduje zmian w procesie wyszukiwania, jednakże znacznie ułatwia znalezienie wszystkich obiektów w łańcuchu, co przyśpiesza proces aktualizacji kartoteki wyszukiwawczej. Struktura bazy danych jest bardziej złożona niż w wersji klasycznej metody, z powodu rozszerzenia opisów obiektów (o dwa rodzaje odsyłaczy) i tablicy zakotwiczeń. Wprowadzenie tej modyfikacji determinuje także zwiększoną zajętość pamięci, która wynosi:

= + + gdzie:

- Zajętość pamięci wynikająca z liczby obiektów w systemie,

- zajętość pamięci wynikająca z konieczności pamiętania odsyłaczy w opisach obiektów,

- zajętość pamięci potrzebna do pamiętania tablicy zakotwiczeń. Wartość ta jest większa, niż w wersji klasycznej, z powodu powiększenia się tablicy o dodatkową kolumnę.

(25)

łańcuchowanie grup obiektów

Ostatnią analizowaną w tej pracy modyfikacją metody list łańcuchowych jest łańcuchowanie grup obiektów. Polega ona na wyznaczeniu ze zbioru D tzn. zbioru wszystkich deskryptorów w systemie pewnego podzbioru D’, takiego że D’ ⊆ D. W zbiorze tym powinny znaleźć się deskryptory najczęściej występujące w pytaniach zadawanych do systemu. Następnie opisy obiektów są rozszerzane o odsyłacze tylko dla deskryptorów należących do zbioru D’.

(26)

Kartoteka wtórna z Tablica zakotwiczeń odsyłaczami względnymi

 X a  b  c 1 X1 A1 +1 B1 +1 C1 +4 2 X2 A1 +3 B1  C2 +4 3 X3 A2 +1 B2 +1 C3 +4 4 X4 A2 +3 B2 +1 C4 +4 5 X5 A1 +1 B2 +1 C1 6 X6 A1  B2 +1 C2 7 X7 A2 +1 B2 +1 C3 8 X8 A2 B2 C4

di N1 Ł(di) (a,a1) 1 4 (a,a2) 3 4 (b,b1) 1 2 (b,b2) 3 6 (c,c1) 1 2 (c,c2) 2 2 (c,c3) 3 2 (c,c4) 4 2

(27)

Kartoteka wtórna z Tablica zakotwiczeń odsyłaczami względnymi

 X a  b  c 1 X1 A1 +1 B1 C1 +4 2 X2 A1 +3 B1 C2 3 X3 A2 B2 +1 C3 +4 4 X4 A2 B2 +1 C4 5 X5 A1 +1 B2 +1 C1 6 X6 A1  B2 +1 C2 7 X7 A2 B2 +1 C3 8 X8 A2 B2  C4

di N1 Ł(di) (a,a1) 1 4 (b,b2) 3 6 (c,c1) 1 2 (c,c3) 3 2

(28)

Przykład wyszukiwania

T = (a,a1)(c,c2)

Z tablicy zakotwiczeń dla każdego deskryptora pytania pobieramy dostępne informacje:

Tab(a,a1) = (1,4)

Tab(c,c2) = brak informacji

Wybieramy łańcuch minimalny, czyli taki, który ma mniej elementów, mniejszą długość (Ł(di)):

czyli łańcuch dla (a,a1)

Generujemy ten łańcuch dla (a,a1):

} 5

4 1

1 { )

,

( a a

1

     

Ł

(29)

} 6 , 5 , 2 , 1 { ) , (

6 5 1 5 )

(

5 4 1 4 )

(

2 1 1 1 )

(

1 )

(

1

1 )

, ( 4

1 )

, ( 3

1 )

, ( 2

1 )

, ( 1

1 1 1 1

a Ł a

n x

n x

n x

n x

a a

a a

a a

a a

Jest to tzw. Odpowiedź przybliżona.

Teraz należy przejrzeć opisy wskazanych tak obiektów i sprawdzić, czy zawierają one w swoim opisie te deskryptory pytania, które nie występują w tablicy zakotwiczeń, bo nie utworzono dla nich łańcuchów.

tak odp

x c

c

NIE odp

x c

c

tak odp

x c

c

NIE odp

x c

c

:

? )

, (

:

? )

, (

:

? )

, (

:

? )

, (

6 2

5 2

2 2

1 2

} ,

{ } 6 , 2 { )

( t   x

2

x

6

(30)

Podsumowanie metody łańcuchowej

Metoda wyszukiwani

a

Struktura Bazy danych Redundancja Zajętość pamięci

Metoda List Łańcuchowyc h

Najbardziej złożona. Wynika to z

konieczności pamiętania odsyłaczy oraz tablicy zakotwiczeń.

Brak.

Informacje o obiektach są pamiętane tylko raz.

Większa niż w MLP, mniejsza niż w MLI, wynosi ona:

= + +

- Zajętość pamięci wynikająca z liczby obiektów w systemie.

- Zajętość pamięci wynikająca z

konieczności pamiętania odsyłaczy w opisach obiektów.

- Zajętość pamięci

potrzebna do pamiętania tablicy zakotwiczeń.

Implementacja

łańcuchowania w dwie strony zwiększa zajętość pamięci.

(31)

Podsumowanie wszystkich trzech metod

Metoda Struktura Bazy danych Redundancja Zajętość pamięci Metoda List

Prostych

Najprostsza. Opisy wszystkich obiektów, umieszczonych w

dowolnej kolejności. Nieznacznie zwiększona po wprowadzeniu modyfkacji.

Brak. Informacje o obiektach są pamiętane tylko raz.

Najmniejsza, wynosi ona:

M = N ∙ m0

N-Liczba obiektów,

- Zajętość pamięci potrzebna do pamiętania informacji o 1 obiekcie.

Zwiększona po wprowadzeniu modyfikacji.

Metoda List Inwersyjnych

Zwiększona złożoność w

porównaniu do MLP. Wynika to z konieczności pamiętania list

inwersyjnych. Dodatkowo

zwiększona przy wprowadzeniu dekompozycji.

Największa.

r- Liczba deskryptorów w systemie,

- Deskryptory

występujące w systemie.

N- Liczba adresów obiektów w systemie.

Największa, wynosi ona:

=

r- Liczba deskryptorów systemu,

-Zajętość pamięci potrzebna do pamiętania listy inwersyjnej.

Modyfikacje metody zmniejszają zajetośc pamięci.

Metoda List Łańcuchowy ch

Najbardziej złożona. Wynika to z konieczności pamiętania

odsyłaczy oraz tablicy zakotwiczeń.

Brak. Informacje o obiektach są pamiętane tylko raz.

Większa niż w MLP, mniejsza niż w MLI, wynosi ona:

= + +

- Zajętość pamięci wynikająca z liczby obiektów w systemie.

- Zajętość pamięci wynikająca z konieczności pamiętania odsyłaczy w opisach obiektów.

- Zajętość pamięci potrzebna do pamiętania tablicy zakotwiczeń. Implementacja

łańcuchowania w dwie strony zwiększa zajętość pamięci.

(32)

Dziękuję za uwagę

Cytaty

Powiązane dokumenty

wiekuisty powrót kwiatów na wiosnę i odtworzenie ich powrotu na ziemię w wierszach poetów” („Przedwiośnie”).. Wymień autorów i tytuły ich wierszy, które

Jest to spowodowane; tym, że przy zazębieniu specjalnym wszystkie ogniwa łańcucha znajdujące się na kole przenoszą napięcie robocze łańcucha. Rozkład sił

[r]

Charakter pracy elementów cięgien maszyn górniczych jest wybitnie zmęczeniowy [6,7] a większość zniszczeń eksploatacyjnych szybkozłączy posiada charakter zmęczenia nisko-

Omówiono wyniki przeprowadzonych w Instytucie Mechanizacji Górnictwa Politechniki Śląskiej badań nad wykorzystaniem nowych metod technologicznych polepszenia trwałości

Podano propozycję syntezy nowego typu m echanizm u korygującego stosowanego do w yrów nania liniowej prędkości łańcucha w długoogniw ow ych przenośnikach

Na .zakończenie przeprowadzonej analizy należy zaznaczyć, że zastosowanie mechanizmu korekcyjnego w postaci krzywoliniowej uzębionej tarczy jest

Jeśli potrzebujesz niezawodnego wciągnika, na którym możesz polegać, wciągnik Volt Trac™ posiada gwarancję jakości Tractel®..