• Nie Znaleziono Wyników

Metoda List Łańcuchowych

N/A
N/A
Protected

Academic year: 2021

Share "Metoda List Łańcuchowych"

Copied!
21
0
0

Pełen tekst

(1)

Metoda List Łańcuchowych

mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Sosnowiec, 2010

(2)

Celem metody jest utrzymanie zalet MLI (dobre czasy

wyszukiwania), ale wyeliminowanie jej wad (wysoka redundancja i zajętość pamięci).

Założenie: Dany jest system informacyjny S = <X, A, V, ρ>, Obiekty opisane są iloczynem odpowiednich niezaprzeczonych deskryptorów. Opisy obiektów pamiętane są w MLŁ w dowolnej kolejności.

Obiektom przyporządkowywany jest zbiór liczb zwanych adresami tych obiektów określony za pomocą funkcji adresującej:

: X → N,

gdzie X – zbiór obiektów, N – zbiór adresów obiektów w systemie.

Funkcja adresująca zachowuje jednak właściwość, że:

Obiekty mają przyporządkowany ten sam adres jeśli posiadają

identyczny opis deskryptorowy.

(3)

 Dla zbioru wszystkich deskryptorów systemu D = {d 1 … d m }, gdzie d i = (a i , v i ), tworzone są listy łańcuchowe[ łańcuchy ( ).

 Listę Ł(d i ) nazywamy listą łańcuchową deskryptora d i jeśli jest ona postaci:

gdzie n 1 jest adresem pierwszego obiektu zawierającego w swoim opisie deskryptor d i , a pozostałe elementy to odsyłacze do

kolejnych adresów obiektów zawierających w

swoim opisie ten deskryptor.

(4)

Na podstawie odsyłaczy można w łatwy sposób znaleźć adresy wszystkich innych obiektów zawierających w swoim opisie

deskryptor d

i

.

Przykład (gdy stosujemy odsyłacze bezwzględne):

Gdzie - j-ty obiekt zawierający w swoim opisie deskryptor d

i

.

Zwykle odsyłacze umieszczone są bezpośrednio przy każdym deskryptorze w opisach obiektów.

Wyróżniamy następujące typy odsyłaczy:

◦ Adres bezwzględny (odsyłacz wskazuje na adres obiektu w kartotece wyszukiwawczej)

◦ Adres względny (odsyłacz tworzony jest względem adresu pierwszego obiektu w łańcuchu, lub względem adresu pierwszego obiektu w

kartotece)

◦ Skok (odsyłacz wyznaczany jest jako różnica między sąsiednimi adresami obiektów na liście)

(5)

Kartotekę wyszukiwawczą tworzą opisy

deskryptorowe obiektów, z umieszczonymi bezpośrednio pod tym opisem odsyłaczami.

W skład kartoteki wyszukiwawczej wchodzi również tzw. Tablica zakotwiczeń.

Tablica zakotwiczeń podaje dla każdego deskryptora d

i

adres początku łańcucha i jego długość (liczbę

elementów łańcucha):

Gdzie to adres pierwszego obiektu w

systemie, który zawiera w swoim opisie deskryptor d

i

.

Listy łańcuchowe nie są pamiętane w systemie – są

generowane na bieżąco w zależności od potrzeb.

(6)
(7)

Inna wersja kartoteki wyszukiwawczej z odsyłaczem jako adres bezwzględny

kart_wyszukiwawcza_mll.pdf

(8)

Odsyłacz jako adres względny Odsyłacz jako skok

(9)

Pytania kierowane do systemu mają ogólnie postać sumy termów składowych:

t = t

1

+ t

2

+ … + t

m

gdzie t

i

jest termem składowym.

1.

Jeżeli term składowy jest pojedynczym

deskryptorem (t

i

= d

i

) to odpowiedź znajdujemy w następujący sposób:

◦ Na podstawie tablicy zakotwiczeń dla określonego deskryptora di znajdujemy adres początku i długość łańcucha , oraz generujemy wyszukany łańcuch.

◦ Zgodnie ze znalezionym łańcuchem, generujemy

odpowiadający mu zbiór obiektów.

(10)

2.

Jeżeli term składowy jest iloczynem deskryptorów (t

i

= d

1

*d

2

* … *d

k

) to:

◦ Na podstawie tablicy zakotwiczeń znajdujemy łańcuchy dla wszystkich deskryptorów pytania.

◦ Wybieramy łańcuch najkrótszy (minimalny).

Dalej wyszukiwanie może się odbywać na dwa sposoby (zał: adresy = nr obiektów):

a) Generujemy wybrany łańcuch minimalny i metodą przeglądu zupełnego sprawdzamy czy wybrane obiekty zawierają w swoim opisie pozostałe deskryptory pytania.

b) Porównujemy elementy wybranego łańcucha Łmin z pozostałymi łańcuchami dla innych deskryptorów pytania i wybieramy tylko elementy wspólne, które

stanowią odpowiedź na pytanie ti.

(11)

 Pytanie: Podaj wszystkie filmy science-fiction o małej liczbie odcinków.

t = (Rodzaj, sci-fi)*(Liczba odcinków, Mało)

 Z tablicy zakotwiczeń pobieramy informacje odnośnie każdego z deskryptorów pytania:

Tab(Rodzaj, sci-fi) = (1, 5)

Tab(Liczba odcinków, mało) = (4, 3)

 Wybieramy łańcuch minimalny (o mniejszej

liczbie elementów) i go generujemy:

(12)

Generowanie łańcucha minimalnego c.d.

Ł(Liczba odcinków, mało) = {4, 11, 20}

Ale adresowi 20 odpowiadają DWA obiekty (x20 i x21)!

Uzyskujemy odpowiedź przybliżoną. By dostać odpowiedź dokładną używamy jednej z dwóch metod:

◦ Wykorzystujemy przegląd zupełny.

X

przybliżone

= {x4, x11, x20, x21}

(Rodzaj, sci-fi)

≰ x4

(Rodzaj, sci-fi)

≤ x11

(Rodzaj, sci-fi)

≰ x20

(Rodzaj, sci-fi)

≰ x21

σ (t) = {x

11}

(13)

◦ Generujemy łańcuch dla drugiego deskryptora i wykonujemy przecięcie tych łańcuchów.

◦ Odpowiedź uzyskujemy jako przecięcie

wygenerowanych łańcuchów i odwzorujemy adresy

w identyfikatory obiektów:

(14)

1.

Struktura bazy danych (kartoteki wyszukiwawczej)

Jest złożona w porównaniu z poprzednimi metodami. Na kartotekę wyszukiwawczą składa się opisy deskryptorowe obiektów z

odsyłaczami, oraz tablica zakotwiczeń.

2.

Redundancja i zajętość pamięci.

Metoda ta nie wprowadza redundancji.

Zajętość pamięci w stosunku do MLP jest dużo większa (ze względu na konieczność pamiętania odsyłaczy i tablicy

zakotwiczeń).

Ogólna zajętość pamięci wynosi:

M = M

x

+ M

o

+ M

t

,

Gdzie: M

x

– zajętość pamięci wynikająca z liczby obiektów w

bazie, M

o

– zajętość pamięci związana z koniecznością

pamiętania odsyłaczy, M

t

– zajętość pamięci powiązana z

tablicą zakotwiczeń.

(15)

3.

Czas wyszukiwania

◦ Dla pytań ogólnych czas wyszukiwania odpowiedzi równy jest czasowi generowania łańcucha dla poszczególnego deskryptora di.

◦ Dla pytań szczegółowych czas wyszukiwania jest powiększony o czas przeglądu zupełnego obiektów łańcucha lub porównywania łańcucha minimalnego z innymi łańcuchami.

◦ Ogólnie krótkie czasy wyszukiwania

4.

Aktualizacja bazy danych

◦ Dodanie lub usunięcie obiektu wprowadza konieczność zmiany odsyłaczy, oraz ewentualnie wpisów w tablicy zakotwiczeń.

◦ Dodanie, usunięcie lub zmiana opisu poszczególnego deskryptora może spowodować konieczność dodania/usunięcia nowych odsyłaczy oraz wprowadzenia zmian w tablicy zakotwiczeń.

◦ Ogólnie skomplikowana i czasochłonna aktualizacja

(16)

Usuwamy obiekt o adresie 16

(17)

O wyborze tej modyfikacji decyduje projektant systemu

Odsyłacze tworzone są według adresu ostatniego obiektu zawierającego w swoim adresie deskryptor d

i

.

Gdzie n

k

to adres ostatniego obiektu zawierającego w swoim opisie deskryptor d

i

.

Wyszukiwanie odpowiedzi odbywa się tak jak z

łańcuchowaniem w przód. Tablica zakotwiczeń jest

niemalże identyczna, z tą różnicą, że jej pierwsza kolumna zawiera adres ostatniego obiektu zawierającego w swoim opisie określony deskryptor.

Zalety:

Aktualizacja jest w pewnych przypadkach wygodniejsza

(18)

 Podwójne łańcuchowanie (w przód i w tył) nie zmienia samej metody wyszukiwania, ale

pozwala skrócić czas i ułatwić aktualizację (mniejsze usztywnienie kartoteki).

1. Kartoteka wyszukiwawcza = Kartoteka wtórna z odsyłaczami + Tablica

zakotwiczeń.

2. Redundancji nie ma.

3. Zajętość pamięci:

M = M x + 2M o + M tz’ , M tz’ > M tz

(19)

Tablica zakotwiczeń Kartoteka wyszukiwawcza z odsyłaczami w modyfikacji

z łańcuchowaniem w przód i w tył

(20)

Wyodrębniony zostaje pewien podzbiór D 0 zbioru deskryptorów systemu (może to być np. podzbiór deskryptorów najczęściej występujących w

pytaniach). O wyborze podzbioru D’ decydują te same przesłanki jak dla modyfikacji w MLI.

Obiekty w bazie grupujemy według tego zbioru.

Tworzone są łańcuchy, ale tylko dla podzbioru D 0 . Dla tego zbioru tworzona jest również tablica

zakotwiczeń.

Odsyłacze umieszczone są tylko przy niektórych

deskryptorach w opisach obiektów.

(21)

Pytanie t kierowane do systemu jest w postaci sumy termów składowych. Term składowy jest w postaci:

t

i

= d

1

*d

2

* … *d

k

Odpowiedź na term składowy uzyskujemy w następujący sposób:

◦ Jeżeli wszystkie deskryptory pytania należą do zbioru D0 to odpowiedź znajdujemy jak w klasycznej metodzie list łańcuchowych.

◦ Jeżeli pewne deskryptory pytania należą do wybranego zbioru D0, a część z nich nie należy to dla pewnego termu tj, którego wszystkie deskryptory dj

∈ D

0

, odpowiedź znajdujemy klasyczną MLŁ. Uzyskujemy wówczas odpowiedź przybliżoną (zbiór obiektów X

j

).

σ (t

j

) = X

j

,

Gdzie X

i

X

j

. Odpowiedź dokładną uzyskujemy stosując metodę przeglądu zupełnego na zbiorze X

j

.

Jeżeli żaden deskryptor pytania nie należy do zbioru D

0

to odpowiedź znajdujemy metodą przeglądu zupełnego.

Zalety:

Uproszczona zostaje struktura bazy danych.

Zmniejszona redundancja i zajętość pamięci.

Cytaty

Powiązane dokumenty

[r]

Michał M wynajmował należące do niego mieszkanie Robertowi K. Na mocy umowy najmu Robert K był zobowiązany do zapłaty Michałowi M co miesiąc czynszu wynoszącego 1.000 zł.

There are described case reports about the femoral vein approach, for the extraction of the pacemaker lead by using a snare [4, 5].. In the present case, as is rarely in

Według danych autorów wśród wskazań do histe- rektomii okołoporodowej znalazły się według malejącej częstości: nieprawidłowości łożyska (50%), atonia macicy (41,6%)

W zakres usługi wchodzą niżej wymienione badania diagnostyki laboratoryjnej (nie obejmuje badań wykonywanych za pomocą testów paskowych), obrazowej i  czynnościowej wykony- wane

Przenoszenie zakażenia COVID-19 z matki na dziecko rzadkie Wieczna zmarzlina może zacząć uwalniać cieplarniane gazy Ćwiczenia fizyczne pomocne w leczeniu efektów długiego

Jeśli wybierze tę drugą opcję, wniosek będzie dostępny na Liście wniosków, a Użytkownik będzie mógł go później zautoryzować (z poziomu podglądu wniosku dostępne

„Regulamin”), stanowiącym integralną część Umowy, który określa także warunki gromadzenia i zarządzania Środkami, a także przyporządkowanie do Subfunduszy