Organizacija invertovanoindeksnih datoteka Organizacija indeksa 1 Pristup invertovanim

  • Slides: 44
Download presentation
Organizacija invertovanoindeksnih datoteka Organizacija indeksa 1

Organizacija invertovanoindeksnih datoteka Organizacija indeksa 1

Pristup invertovanim indeksima n n Korisnici postavljaju upite jednim terminom ili koriste više termina

Pristup invertovanim indeksima n n Korisnici postavljaju upite jednim terminom ili koriste više termina U invertovanim indeksima svakom terminu (ili ključu) je pridružena dugačka lista identifikatora dokumenata Mnogim ključevima su pridružene iste liste identifikatora dokumenata (sinonimi, ključevi u indeksima koji obrađuju sve vrste podsecanja, itd. ) Najefikasnije je da se koriste veliki indeksi u kojima je uz ključ zapisan samo pokazivač ka listama identifikatora dokumenata 2

Kako u takvom velikom indeksu pronaći ključ koji se traži? 3

Kako u takvom velikom indeksu pronaći ključ koji se traži? 3

1. Sekvancijalni pristup n n Prva pretpostavka je da je indeks na neki način

1. Sekvancijalni pristup n n Prva pretpostavka je da je indeks na neki način uređen (npr. svi ključevi su u rastućem alfabetskom poretku). Upitni termin se traži jedan po jedan u indeksu sve dok ne bude: q pronađen q dostignut je termin koji mu sledi u alfabetskom poretku q stiglo se do kraja indeksa Vreme potrebno da se obavi sekvencijalna pretraga zavisi od dva faktora: q Samog upitnog termina, jer od njega zavisi pozicija u indeksu q Dužine indeksne datoteke (N) Za sekvencijalno pretraživanje uređenog indeksa potrebno je otprilike N/2 poređenja i u slučaju da je termin u indeksu i da nije 4

Primer uspešnog i neuspešnog sekvencijalnog pretraživanja indeksa communication computational computer Traži se: dictionary data

Primer uspešnog i neuspešnog sekvencijalnog pretraživanja indeksa communication computational computer Traži se: dictionary data dictionary information informatics network software communication computational computer data Traži se: computing dictionary data > computing information informatics network software 5

2. Alfabetski lanci n n n Nalikuju pretrazi rečnika. Npr. Ako tražimo termin psychology

2. Alfabetski lanci n n n Nalikuju pretrazi rečnika. Npr. Ako tražimo termin psychology u rečniku ćemo prvo pronaći slovo P, a zatim bismo gledali u zaglavlja stranica dok ne nađemo PS, a dalje bismo tražili linearno. Kod alfabetskih lanaca, prvo pronalazimo kutijice po prvom slovu, a odatle sledimo pokazivač ka novim kutijicama, itd. dok ne nađemo šta tražimo, ili ne dođemo do liste koju ćemo linearno pretraživati. Problem sa alfabetskim lancima je što su u realnim situacijama neki termini vrlo bliski jedni drugima, tj. neka slova su mnogo gušće popunjena od ostalih pa će od toga zavisiti koliko poređenja je potrebno dok ne nađemo termin (ili utvrdimo da ga nema). Na primer, computations, computational, computers, computerization, etc. 6

Primer communication computational computer data dictionary information informatics network software traži se: computational C

Primer communication computational computer data dictionary information informatics network software traži se: computational C communication, computational, computer O A data D I dictionary I N N E network S O software Information, informatics 7

3. Binarno pretraživanje n n n Za velike indeksne datoteke sekvencijalno pretraživanje zahteva mnogo

3. Binarno pretraživanje n n n Za velike indeksne datoteke sekvencijalno pretraživanje zahteva mnogo vremena. Jedno poboljšanje se sastoji u tome da se smanji broj pokušaja (ili provera) potrebnih da se indeksni termin pronađe ili da se utvrdi da ga u indeksu nema. Ako su indeksni termini uređeni (što je obično slučaj) broj pokušaja se može smanjiti primenom tehnike binarnog pretraživanja. 8

Osnovna ideja binarnog pretraživanja n n Ideja se sastoji u tome da se u

Osnovna ideja binarnog pretraživanja n n Ideja se sastoji u tome da se u svakom koraku pretraživanja indeksa broj indeksnih termina koje potencijalno treba pretražiti smanji na pola. Termin koji se traži se poredi sa terminom koji se nalazi u sredini intervala indeksnih termina preostalih za pretraživanje. Poređenje može da dâ tri rezultata: q q q Indeksni termin je jednak središnjem terminu (pronađen); Indeksni termin je manji od središnjeg termina – interval sledeće pretrage je donja polovina tekućeg intervala; Indeksni termin je veći od središnjeg termina – interval sledeće pretrage je gornja polovina tekućeg intervala; 9

Algoritam binarnog pretraživanja n je broj indeksnih termina u indeksu ključ je indeksni termin

Algoritam binarnog pretraživanja n je broj indeksnih termina u indeksu ključ je indeksni termin koji se traži u indeksu početak donji 1; gornji n; sve dok je donji gornji ponavljaj srednji (donji+gornji) div 2; ako je ključ = indeks[srednji] onda je ključ pronađen inače ako je ključ < indeks[srednji] onda je gornji srednji-1 inače donji srednji+1 kraj 10

Primer n n 1) 2) 3) 4) 5) 6) 7) 8) 9) 10) Neka

Primer n n 1) 2) 3) 4) 5) 6) 7) 8) 9) 10) Neka tražimo u indeksu ‘network’ Neka je indeks uređen i neka sadrži 10 termina: communication, computational, computer, data, dictionary, information, informatics, network, software srednji indeks[srednji] poređenje donji gornji 1 10 5 data network>data 6 10 8 informatics network> Iformatics 9 10 9 network Pronađen! 11

Efikasnost binarnog pretraživanja n n U prethodnom primeru je potrebno 3 pokušaja da bismo

Efikasnost binarnog pretraživanja n n U prethodnom primeru je potrebno 3 pokušaja da bismo pronašli traženi termin, u poređenju sa 9 potrebnih za sekvencijalno pretraživanje. U opštem slučaju je broj pokušaja kod binarnog pretraživanja O(log 2 n) – ili kako se obično kaže ‘reda veličine binarnog logaritma od broja indeksnih termina’ 12

Odnos linearne, eksponencijalne i logaritamske funkcije n Pošto je f(x) = ex jedan-jedan funkcija

Odnos linearne, eksponencijalne i logaritamske funkcije n Pošto je f(x) = ex jedan-jedan funkcija ona ima inverznu funkciju. Njena inverzna funkcija je f(x) = logex = lnx q n n n Logaritamska funkcija y je broj kojim treba stepenovati osnovu (e) da bi se dobilo x. Grafici ovih funkcija su simetrični u odnosu na grafik linearne funkcije f(x)=x Eksponencijalna funkcija mnogo brže raste od linearne funkcije Zato logaritamska funkcija mnogo sporije raste od linearne funkcije 13

Ilustrativni primer – priča o Makiju i grašku n n Obećanje – za prvo

Ilustrativni primer – priča o Makiju i grašku n n Obećanje – za prvo zrno graška nagrada 1 dinar Za svako naredno zrno graška već osvojena nagrada se duplira. (nagrada raste kao eksponencijalna funkcija 2 x, gde je x broj pojedenih zrna) 14

Rezultat ubeđivanja Makija da je grašak profitabilan ako ne i ukusan n Šta je

Rezultat ubeđivanja Makija da je grašak profitabilan ako ne i ukusan n Šta je rezultat postignutog dogovora 1 1 17 131. 072 2 2 18 262. 144 3 4 19 524. 288 4 8 20 1, 048. 576 5 16 21 2, 097. 152 6 32 22 4, 194. 304 7 64 23 8, 388. 608 8 128 24 16, 777. 216 9 256 25 33, 554. 432 10 512 26 67, 108. 864 11 1024 27 134, 217. 728 12 2048 28 268, 435. 456 13 4096 29 536, 870. 912 14 8192 30 1, 073. 741. 824 15 32768 16 65536 bankrot roditelja n Šta bi bilo da je dogovor bio: za svako zrno graška jedan dinar, tj. Koliko zrna graška toliko dinara (linearna funkcija) 1 1 17 17 2 2 18 18 3 3 19 19 4 4 20 20 5 5 21 22 6 6 22 22 7 7 23 24 8 8 25 25 9 9 26 26 10 10 27 27 11 11 28 28 12 12 29 29 13 13 30 30 14 14 15 15 Ali, 16 16 Maki je mali nije naivan 15

4. Binarno drvo n Problemi sa binarnim pretraživanjem: q q n n Kako pronaći

4. Binarno drvo n Problemi sa binarnim pretraživanjem: q q n n Kako pronaći taj središnji element u indeksu? Lako, ako indeks može da stane u niz, ali ako ne može. . . Dodavanje ili izbacivanje elemenata iz indeksa otežano (indeks treba ponovo sortirati) Struktura binarnog drveta se sastoji od čvorova od kojih svaki sadrži indeksni termin i pokazivač ka poddrvetima koji sadrže indeksne termine koji mu prethode, odnosno koji ga slede u izabranom poretku. Organizacija drveta podržava operacije kao što su pronalaženje ključa, umetanje indeksnog termina, brisanje indeksnog termina. 16

Primer binarnog drveta – pronalaženje ključa information > data informatics computational Information > informatics

Primer binarnog drveta – pronalaženje ključa information > data informatics computational Information > informatics communication computer network dictionary Information < network computation information software 17

Dodavanje novog indeksnog termina – file; prvo se obavi neuspešna pretraga, a zatim se

Dodavanje novog indeksnog termina – file; prvo se obavi neuspešna pretraga, a zatim se ubacuje čvor tamo gde se neuspešna pretraga završila file>data file<informatics computational file>dictionary communication computer network dictionary file information software 18

Kako se gradi drvo? Na ulazu: mama, tata, brat, stric, ujak, ujna, sestra, strina,

Kako se gradi drvo? Na ulazu: mama, tata, brat, stric, ujak, ujna, sestra, strina, baka, deka 19

Kako se gradi drvo? Na ulazu: mama, tata, brat, stric, ujak, ujna, sestra, strina,

Kako se gradi drvo? Na ulazu: mama, tata, brat, stric, ujak, ujna, sestra, strina, baka, deka 20

Nedostaci binarnog drveta n Izbacivanje čvora iz drveta nije jednostavno q q q n

Nedostaci binarnog drveta n Izbacivanje čvora iz drveta nije jednostavno q q q n Ako je čvor koji treba izbaciti list drveta, čvor se jednostavno izbacuje; Ako čvor koji se izbacuje ima samo jedno dete, onda se taj čvor zamenjuje tim jedinim detetom; Ako čvor koji se izbacuje ima više dece, onda se on zamenjuje čvorom koji ima najmanju vrednost u desnom poddrvetu (rekurzivno) Drvo raste u dubinu i uskoro postaje nebalansirano – neke grane su veoma dugačke, a od dužine grane zavisi broj poređenja pre nego što se termin pronađe u indeksu ili se utvrdi da ga nema. 21

Izbacivanje indeksnog termina – informatics; čvor nije list, čvor ima dvoje dece; najmanja vrednost

Izbacivanje indeksnog termina – informatics; čvor nije list, čvor ima dvoje dece; najmanja vrednost u njegovom desnom podrvetu je information data informatics information computational communication computer network dictionary file information software 22

Korisna strana u kojoj je aplet za animaciju binarnog drveta n n David Galles,

Korisna strana u kojoj je aplet za animaciju binarnog drveta n n David Galles, Department of Computer Scinece, San Francisco Binary Search Tree 23

Kako izgleda binarno drvo koje se puni sortiranom listom? baka, brat, deka, mama, sestra,

Kako izgleda binarno drvo koje se puni sortiranom listom? baka, brat, deka, mama, sestra, tata baka brat deka mama sestra tata Drvo se pretvara u uređenu sekvencijalnu listu 24

5. Balansirano drvo ili B-drvo n n Kod ovog drveta iz svakog čvora polazi

5. Balansirano drvo ili B-drvo n n Kod ovog drveta iz svakog čvora polazi više grana, a ne samo dve kao kod binarnog drveta; Ovde se svaki čvor sastoji iz uređene liste termina, a uz svaki ide i pokazivač; Kada se traži ključem pronalazi se u čvoru prvi termin koji sledi iza ključa u izabranom poretku – na tom mestu se prati pokazivač koji vodi ka sledećem čvoru. Kapacitet B-drveta zavisi od broja termina u čvoru – u sledećem primeru je kapacitet dva termina, a broj pokazivača 3. 25

Primer B-drveta traži se ključ rat > cat ^ ass ^ ^ ^ cow

Primer B-drveta traži se ključ rat > cat ^ ass ^ ^ ^ cow ^ rat > dog ^ ^ pig ^ rat > pig 26

Ubacivanje novog ključa u B-drvo n n Umetanje počinje od korenog čvora. Da bi

Ubacivanje novog ključa u B-drvo n n Umetanje počinje od korenog čvora. Da bi se umetnuo novi element treba: Pretražiti drvo da bi se pronašao list u koji novi element treba umetnuti. Umetnuti novi element u nekoliko koraka: Ako čvor sadrži manje elemenata od maksimalne dužine u čvoru, onda ima mesta za novi element pa ga treba umetnuti tako da elementi u čvoru ostanu uređeni. Ako je čvor popunjen treba ga podeliti na dva jednaka dela: q q q Izabere se središnji element među elementima iz lista koji se deli i novog elementa. Vrednosti koje su manje od središnjeg elmenta idu u novi levi list, a vrednosti koje su veće idu u novi desni list, dok je središnji element onaj koji ih razdvaja. Ubaciti središnju vrednost u nadređeni čvor ako u njemu ima mesta, a ako nema on mora da se deli. Ako čvor nema nadređeni čvor, onda se kreira novi koren i visina drveta raste. 27

Primer B-drveta - ubacuje se ključ Koren je popunjen i nema mesta za pig

Primer B-drveta - ubacuje se ključ Koren je popunjen i nema mesta za pig goat koji se uzdigao pa se i taj čvor cepa: dog (središnji) se diže u koren, cat se nalazi na levom putu, a pig na desnom. goat > cat ^ ass ^ ^ ^ cow ^ pig goat rat goat > dog ^ ^ pig ^ rat ^ goat treba da dođe u ovaj list, ali on je pun pa se ovaj čvor deli na dva a pig ide u koren 28

Rezultat ubacivanje termina goat u B -drvo giraffe? yak deer dog sheep cat ass

Rezultat ubacivanje termina goat u B -drvo giraffe? yak deer dog sheep cat ass pig goat cow camel crab rat horse rhino 29

Korisna strana u kojoj je aplet za animaciju B-drveta n n David Galles, Department

Korisna strana u kojoj je aplet za animaciju B-drveta n n David Galles, Department of Computer Science, San Francisco B-Tree animacija 30

Prednosti B-drveta n n n Broj pristupa indeksu (tj. broj poređenja odnosno pokušaja) je

Prednosti B-drveta n n n Broj pristupa indeksu (tj. broj poređenja odnosno pokušaja) je srazmeran broju nivoa drveta (slično kao i kod binarnih drveta) Ali, pošto se blokovi uvek dele umesto da se dodaju nove grane na dno drveta, novi nivoi se ne prave sve dok to nije apsolutno neophodno. Na taj način se smanjuje srednje pristupno vreme indeksu. 31

6. Trie n n n Ovo je podatkovna struktura koja je počela da se

6. Trie n n n Ovo je podatkovna struktura koja je počela da se koristi 1960 -tih godina. Termin je nastao od engleske reči RETRIEVAL jer se koristi u pronalaženju informacija. Zbog toga nema adekvatnog prevoda na srpski. Ovaj način organizovanja indeksa dozvoljava da se termini predstavljaju slovo po slovo što ga čini pogodnim za predstavljanje termina proizvoljne dužine. Najčešće je u upotrebi binarni povezani trie u kome je svaki karakter povezan sa dva pokazivača: desnim i donjim. Desni pokazivač vodi ka sledećem karateru na istoj poziciji u (nekom drugom) terminu a donji ka narednoj poziciji. Prilikom pretraživanja, kod neslaganja se sledi desni pokazivač, a kod slaganja donji. 32

Primer trie: maca, macin, mačka, mačor, maketa roze kućice označavaju završetak termina 33

Primer trie: maca, macin, mačka, mačor, maketa roze kućice označavaju završetak termina 33

Nedostaci strukture trie n n Količina memorije koja potrebna za skladištenje indeksa je velika,

Nedostaci strukture trie n n Količina memorije koja potrebna za skladištenje indeksa je velika, jer se uz svaki karakter vezuju dva pokazivača: desni i donji. Ovo utiče i na vreme pretraživanja jer će se indeks brže pretraživati ako ceo može da stane u unutrašnju memoriju u vreme rada sistema 34

Trie - animacija n n Tufts University, Computer Science Trie - animacija 35

Trie - animacija n n Tufts University, Computer Science Trie - animacija 35

7. Metode haširanja (engl. hash) n n n Sastoji su u transformaciji indeksa u

7. Metode haširanja (engl. hash) n n n Sastoji su u transformaciji indeksa u haš-tabelu koja svodi oblike reči promenljivih dužina u kratke kodove (brojeve) fiksne dužine. Dobijeni kod se koristi kao adresa odgovarajućeg termina u invertovanom indeksu (npr. adresa termina u datoteci ili u nizu u unutrašnjoj memoriji). Funkcija koja prevodi reč promenljive dužine u haš-kod, odnosno adresu, mora da bude takva da, u najvećem broju slučajeva, različiti termini promenljive dužine imaju različit haš-kod (u optimalnom slučaju, funkcija treba da bude 1 -1). Haš-funkcija se može realizovati recimo na sledeći način: binarni zapis prvih osam karaktera termina, shvaćeni kao ceo broj deli se sa željenom veličinom rečnika (koja treba da bude prost broj), a ostatak pri deljenju je traženi haš-kod. Druga mogućnost je da se dve četvorke binarno zapisanih karaktera termina shvaćene kao celi brojevi, pomnože međusobno i da se iz dobijenog rezulata izdvoji jedan deo kao haš-kod. 36

Simulirani primer korišćenja hašfunkcije n n n Neka imamo tekst: Now is the time

Simulirani primer korišćenja hašfunkcije n n n Neka imamo tekst: Now is the time to read some books. I neka je svaka reč u indeksu Neka je haš funkcija sledeća: q haš-kod se dobija sabiranjem za svaku reč pozicije u abecedi svakog slova reči. Dobijaju se sledeći haš-kodovi za indeks: n now 52 n is 28 n the 33 n time 47 n to 35 n read 28 n some 54 n books 41 na primer: now = 14(n)+15(o)+23(w)= 52 n 37

Simulirani primer – dorada haškoda n n n Ovo je jednostavan metod, ali se

Simulirani primer – dorada haškoda n n n Ovo je jednostavan metod, ali se kod njega pojavljuje problem: za samo 8 reči potrebno nam je bar 54 lokacije za skladištenje, iako bi se koristile samo lokacije 28, 33, 35, 41, 47, 52 i 54. Dopuna metode: svaka dobijena vrednost se deli maksimalnom veličinom indeksa koja je prost broj, u našem primeru npr. 19, a haškod je ostatak pri deljenju. Dobijaju se sledeće vrednosti: q books 41 → 7 q is, read 28 → 9 28/19=1*19+9; 47/19=2*19+9 q time 47 → 9 q now 52 → 14 q the 33 → 14 q to 35 → 16 q some 54 → 16 38

Realan(iji) primer n n n Neka je termin: time U ASCII kodu to je:

Realan(iji) primer n n n Neka je termin: time U ASCII kodu to je: t i m 0111 0100 0110 1001 0110 1101 0110 0101 74 69 6 D e 65 Dobija se celobrojna vrednost: 7*167 + 4*166 + 6*165 + 9*164 + 6*163 + 13*162 + 6*161 + 5*160 = 1, 953. 066. 341 n Ta vrednost onda može da se deli veličinom indeksa, a ostatak pri deljenju je haš-kod. 39

Problem sa svakom haš-funkcijom je kolizija n n Sada nije potrebno više od 19

Problem sa svakom haš-funkcijom je kolizija n n Sada nije potrebno više od 19 lokacija za skladištenje, ali je problem što neki termini treba da se ‘uguraju’ na iste lokacije (npr. is, time i read). Ova pojava se naziva kolizija (engl. collison). Prost broj za deljenje se upravo zato i koristi da bi se kolizija svela na što je moguće manju meru, ali se ipak ne može izbeći. Jednostavno rešavanje kolizije se može obaviti tako da se uz svaku adresu vezuje povezana lista svih termina čija je to haš-funkcija. Ta povezana lista može lako da se vodi i kao uređena, što čini pretraživanje efikasnijim. 40

Kolizija – rešenje 1 1 2 3 4 5 6 7 books 8 9

Kolizija – rešenje 1 1 2 3 4 5 6 7 books 8 9 is read now the to some 10 11 12 13 14 15 16 17 18 19 time

Nedostaci haš-funkcije n n Kolizija može da se razrešava i na drugi način ako

Nedostaci haš-funkcije n n Kolizija može da se razrešava i na drugi način ako je veličina prostora za skladištenje indeksa broj koji je (značajno) veći od broja indeksnih termina. Ako je posle izračunavanja haš-funkcije (bilo kod upisivanja novog termina ili kod pretraživanja) pozicija na izračunatoj adresi zauzeta nekim drugim terminom pokušava se sa sledećom pozicijom po redu sve dok: q se ne naiđe na slaganje (pretraživanje) ili q ne naiđe na prazno mesto koje označava da se termin ne može pronaći (pretraživanje) ili slobodno mesto za upis termina (umetanje novog). Kod ovako implementiranih haš-funkcija uništava se leksikografski poredak termina u invertovanom indeksu, tako da će se veoma slične reči, na primer SAND i SANE naći na sasvim različitim mestima u indeksu. Rezultat je da se pretraživanje unutar opsega (recimo pronalaženje svih termina koji počinju sa SAN*, veoma teško realizuje. ) 42

Kolizija – rešenje 2 1 1 2 2 3 3 4 4 5 5

Kolizija – rešenje 2 1 1 2 2 3 3 4 4 5 5 6 6 7 7 books 8 9 books 8 is read time 9 is 10 10 time 11 11 read 12 12 13 13 14 now the 14 now 15 the 16 to 17 17 some 18 18 19 19 15 16 to some

Kolizija – umetanje novog 1 Umetanje novog: library 2 3 Hash(library)=87 mod 19 =

Kolizija – umetanje novog 1 Umetanje novog: library 2 3 Hash(library)=87 mod 19 = 9 4 1 2 3 4 5 5 6 6 7 7 books 8 9 books 8 read is time 9 is 10 time 11 read 12 12 library 13 13 10 library 11 14 now the 14 now 15 the 16 to 17 17 some 18 18 19 19 15 16 to some