Zpracování informací a znalostí Datové struktury a algoritmy pro vyhledávání informací Doc. RNDr. Jan Rauch, CSc. Katedra informačního a znalostního inženýrství
Datové struktury a algoritmy pro vyhledávání informací Literatura: Rauch, J.: Metody zpracování informací II, kapitoly 13, 14 KUČERA, L.: Kombinatorické algoritmy. Praha, SNTL 1983, 280 str. SALTON, G. - McGILL, M.: Introduction to Modern Information Retrieval. Tokyo, McGraw-Hill Book Company Japan 1983, 448 s.
Datové struktury a algoritmy pro vyhledávání informací Základní pojmy Sekvenční vyhledávání Binární vyhledávání Invertovaný soubor
Vyhledávání informací Základní pojmy záznam (bibliografický záznam) pole klíč je pole, podle jehož hodnoty vyhledáváme Novák Vyhledávání informací GRADA 2000 počítač, tezaurus, knihovna Kadlec Historie počítačů PASEKA 1999 počítač, historie, DOS Zounar Informační služby UK 2001 počítač, tezaurus, knihovna …….
Základní pojmy Hodnocení algoritmů : - typická operace (např. porovnání klíčů) - maximální počet typických operací - průměrný počet typických operací - složitost aktualizace potřebných datových struktur - … viz literatura …
Datové struktury a algoritmy pro vyhledávání informací Základní pojmy Sekvenční vyhledávání Binární vyhledávání Invertovaný soubor
Sekvenční vyhledávání Situace A: - neuspořádaný seznam N záznamů (Autor - Název - Deskriptory obsahu), - může být více záznamů s jednou hodnotou klíče (např. více záznamů s jedním autorem) Úloha: Nalézt všechny záznamy se zadanou hodnotou daného klíče (např. všechny knihy, jejichž autorem je Novák)
Sekvenční vyhledávání Situace A (může být více záznamů s jednou hodnotou klíče) Příklad: N záznamů … - Počet potřebných porovnání: N - Aktualizace: bez problémů Novák ABC... Kadlec ZDU… Adam REP.. Zounar ZJK.. Novák XYZ…
Sekvenční vyhledávání Situace B: - neuspořádaný seznam záznamů - právě jeden záznam pro danou hodnotu klíče (slovník autorů) Úloha: Nalézt záznam se zadanou hodnotou klíče
Sekvenční vyhledávání Situace B (právě jeden záznam pro danou hodnotu klíče) Příklad: N záznamů Novák ABC... Kadlec ZDU… Adam REP.. Zounar ZJK.. Jonáš XYZ… … Po nalezení záznamu lze skončit! Počet porovnání pro nalezení N záznamů: 1 + 2 + 3 + … + N = N*(N + 1) / 2 Průměrný počet porovnání na nalezení 1 záznamu: (N + 1) / 2 Aktualizace: bez problémů
Sekvenční vyhledávání Situace C: - neuspořádaný seznam záznamů - maximálně jeden záznam pro danou hodnotu klíče („neúplný slovník autorů“) Úloha: Nalézt záznam se zadanou hodnotou klíče
Sekvenční vyhledávání Situace C (maximálně jeden záznam pro danou hodnotu klíče) Příklad: 5 záznamů Novák ABC... Kadlec ZDU… Adam REP.. Zounar ZJK.. Jonáš XYZ… K nenalezení autora Jonáše nutno 5 porovnání (obecně N) Průměrný počet porovnání na nalezení 1 záznamu: nelze určit, záleží na počtu hledání nevyskytujících se autorů Maximální počet porovnání na nalezení 1 záznamu: N (obecně) Aktualizace: bez problémů
Modifikované sekvenční vyhledávání - Právě jeden záznam pro danou hodnotu klíče Známe pravděpodobnosti požadavků na vyhledávání podle jednotlivých hodnot klíče
Modifikované sekvenční vyhledávání autor Novák Kadlec Jonáš Kovář Zounar Pravděpodobnost požadavku na vyhledání 0.2 0.04 0.4 0.06 0.3 Úsilí na vyhledání: 0.2 * 1 + 0.04 * 2 + 0.4 * 3 + 0.06 * 4 + 0.3 * 5 = 3.22 Po přerovnání autor Jonáš Zounar Novák Kovář Kadlec Pravděpodobnost požadavku na vyhledání 0.4 0.3 0.2 0.06 0.04 Úsilí na vyhledání: 0.4 * 1 + 0.3 * 2 + 0.2 * 3 + 0.06 * 4 + 0.04 * 5 = 2.04
Datové struktury a algoritmy pro vyhledávání informací Základní pojmy Sekvenční vyhledávání Binární vyhledávání Invertovaný soubor
Binární vyhledávání Příklad: Vyhledáváni osob podle rodných čísel – hledáme ženu s rodným číslem 736021/0054 I) Uspořádáme záznamy podle velikosti: (čísla nevidíme) 741212/0053 725612/7865 730930/0067 736021/0054 737214/0012
Binární vyhledávání Příklad: Vyhledáváni osob podle rodných čísel – hledáme ženu s rodným číslem 736021/0054 Princip řešení: I) Uspořádání do pole (např. vzestupně) podle rodných čísel II) Půlení intervalu: - Inicializace: interval := celé pole - Vyhledávanou hodnotu porovnáme s prostředním záznamem intervalu: = ... nalezeno, konec < ... dále hledáme v první polovině intervalu > ... dále hledáme ve druhé poloviné intervalu - Interval nelze rozpůlit: nenalezeno, konec
Binární vyhledávání Maximální počet potřebných porovnání: úměrný Log2(N+1) Aktualizace: Složitá, třeba zachovat uspořádání, viz doplňkovou literaturu.
Porovnání sekvenčního a binárního vyhledávání Předpoklady: - jeden záznam pro danou hodnotu klíče, - 1 operace = 1/1000 vteřiny. počet průměrný případ pro nejhorší případ pro záznamů sekvenční vyhledávání binární vyhledávání operací čas (vteřiny) operací čas (vteřiny) 31 16 0.016 5 0.005 119 60 0.060 7 0.007 1 999 1 000 1 11 0.011 9 999 5 000 5 14 0.014 999 999 500 000 500 20 0.020
Datové struktury a algoritmy pro vyhledávání informací Základní pojmy Sekvenční vyhledávání Binární vyhledávání Invertovaný soubor
Invertovaný soubor Invertovaný soubor: MZI II – kapitola 14 oprava: MZI II, str. 83: má být místo