Metoda list prostych Wykład II. Agnieszka Nowak - Brzezińska

Podobne dokumenty
Metoda List Prostych mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Sosnowiec, 2012

Metoda list inwersyjnych. Wykład III

METODA LIST PROSTYCH. Marcin Jaskuła

Metoda List Łańcuchowych

Metoda list inwersyjnych

Metoda List Inwersyjnych

Metoda Składowych atomowych

Wprowadzenie i pojęcia wstępne.

Dekompozycja w systemach wyszukiwania informacji

Systemy Wyszukiwania Informacji

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane

Algorytmy i struktury danych

Tadeusz Pankowski

METODY INŻYNIERII WIEDZY

METODY INŻYNIERII WIEDZY

Laboratorium nr 7 Sortowanie

Metody indeksowania dokumentów tekstowych

Rekurencja. Przykład. Rozważmy ciąg

Algorytmy przeszukiwania

wykład Organizacja plików Opracował: dr inż. Janusz DUDCZYK

Teoretyczne podstawy informatyki

Programowanie w VB Proste algorytmy sortowania

znalezienia elementu w zbiorze, gdy w nim jest; dołączenia nowego elementu w odpowiednie miejsce, aby zbiór pozostał nadal uporządkowany.

Hurtownie danych. Przetwarzanie zapytań. ZAPYTANIA NA ZAPLECZU

PODSTAWY INFORMATYKI wykład 5.

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe

Systemy Wyszukiwania Informacji: Metoda list inwersyjnych

Materiały dla finalistów

Wstęp do programowania

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Sortowanie przez wstawianie Insertion Sort

Klasyfikatory: k-nn oraz naiwny Bayesa. Agnieszka Nowak Brzezińska Wykład IV

Jednym z najprostszych sposobów porządkowania jest technika stosowana przy sortowaniu listów:

Teraz bajty. Informatyka dla szkoły podstawowej. Klasa VI

Luty 2001 Algorytmy (4) 2000/2001

Agnieszka Nowak Brzezińska

Programowanie w języku C++ Agnieszka Nowak Brzezińska Laboratorium nr 2

Wstęp do programowania

CIĄGI wiadomości podstawowe

Podstawy Programowania 1 Sortowanie tablic jednowymiarowych. Plan. Sortowanie. Sortowanie Rodzaje sortowania. Notatki. Notatki. Notatki.

SYSTEMY WYSZUKIWANIA INFORMACJI

Systemy Wyszukiwania Informacji

Wybrane metody przybliżonego. wyznaczania rozwiązań (pierwiastków) równań nieliniowych

Algorytmy sortujące i wyszukujące

Spis treści WSTĘP... 9

WYKŁAD 3 WYPEŁNIANIE OBSZARÓW. Plan wykładu: 1. Wypełnianie wieloboku

opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy)

Pojęcie systemu informacyjnego i informatycznego

1. Reguły minimalne (optymalne) Podstawowe twierdzenia i definicje. Definicja 1 Funkcję postaci f. nazwiemy n-argumentową funkcją boolowską.

Minimalizacja form boolowskich

dr inż. Jarosław Forenc

Ćwiczenie 3 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Wymagania edukacyjne z informatyki dla uczniów klas VI SP nr 53 w Krakowie w roku szkolnym 2019/2020

Optymalizacja harmonogramów budowlanych - szeregowanie zadań. Mgr inż. Aleksandra Radziejowska AGH Akademia Górniczo-Hutnicza w Krakowie

Agnieszka Nowak Brzezińska Wykład III

INFORMATYKA W ZARZĄDZANIU Arkusz kalkulacyjny MS EXCEL. Ćwiczenie 5 MS EXCEL. Zmiana rodzajów odwołania podczas kolejnych naciśnięć klawisza F4

Struktury Danych i Złożoność Obliczeniowa

INŻYNIERIA BEZPIECZEŃSTWA LABORATORIUM NR 2 ALGORYTM XOR ŁAMANIE ALGORYTMU XOR

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja I

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno

KADD Minimalizacja funkcji

. Podstawy Programowania 1. Sortowanie tablic jednowymiarowych. Arkadiusz Chrobot. 16 listopada 2016

PRZEWODNIK PO PRZEDMIOCIE

3a. Wstęp: Elementarne równania i nierówności

Algorytmy i struktury danych. Wykład 6 Tablice rozproszone cz. 2

Deklaracja struktury w C++

< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 >

Algorytmy przeszukiwania wzorca

Grafy (3): drzewa. Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków. UTP Bydgoszcz

Jaką postać mają informacje w umyśle? Radosław Sterczyński

Temat 20. Techniki algorytmiczne

Zadanie 3 Oblicz jeżeli wiadomo, że liczby 8 2,, 1, , tworzą ciąg arytmetyczny. Wyznacz różnicę ciągu. Rozwiązanie:

Algorytmy sortowania w języku C. Autor: mgr inż. Sławomir Samolej. Zagadnienie 1. (Sortowanie)

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Bioinformatyka. Ocena wiarygodności dopasowania sekwencji.

FUNKCJA LINIOWA. Zadanie 1. (1 pkt) Na rysunku przedstawiony jest fragment wykresu pewnej funkcji liniowej y = ax + b.

Projekt małej Bazy Danych.

Informatyka 1. Złożoność obliczeniowa

Przykładowe B+ drzewo

; B = Wykonaj poniższe obliczenia: Mnożenia, transpozycje etc wykonuję programem i przepisuję wyniki. Mam nadzieję, że umiesz mnożyć macierze...

Tablice z haszowaniem

Laboratorium 5: Tablice. Wyszukiwanie binarne

Podstawy Programowania. Złożoność obliczeniowa

Wymagania na poszczególne oceny szkolne dla klasy VI. (na podstawie Grażyny Koba, Teraz bajty. Informatyka dla szkoły podstawowej.

Agnieszka Nowak Brzezińska Wykład III

O co chodzi z tym MATLAB'em?!

Wykład 7 Implementacja języka SQL w systemach baz danych Oracle sortowanie, funkcje agregujące i podzapytania.

Schemat programowania dynamicznego (ang. dynamic programming)

Algorytmy i struktury danych

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja II

Podstawy programowania III WYKŁAD 4

SYSTEMY OPERACYJNE WYKLAD 5 - zarządzanie pamięcią pomocniczą

Wyszukiwanie binarne

METODY NUMERYCZNE. Wykład 4. Numeryczne rozwiązywanie równań nieliniowych z jedną niewiadomą. prof. dr hab.inż. Katarzyna Zakrzewska

Funkcje wyszukiwania i adresu PODAJ.POZYCJĘ

Bazy danych wykład dwunasty. dwunasty Wykonywanie i optymalizacja zapytań SQL 1 / 36

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Transkrypt:

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.