VÝUKOVÝ MATERIÁL
Transkript
VÝUKOVÝ MATERIÁL
VÝUKOVÝ MATERIÁL Identifikační údaje školy Číslo projektu Název projektu Číslo a název šablony Autor Tematická oblast Číslo a název materiálu Anotace Vytvořeno Určeno pro Přílohy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 CZ.1.07/1.5.00/34.1076 Pro vzdělanější Šluknovsko 32 – Inovace a zkvalitnění výuky prostřednictvím ICT 0207 Mgr. Bc. Jan Škoda Programování VY_32_INOVACE_0207_0119 Vyhledávání Žák si upevní učivo o vyhledávacích algoritmech 17. 7. 2013 3. ročník oboru Informační technologie Bez příloh Metodický list • Učitel: • Výklad s projekcí elektronického učebního materiálu. • Ukázka obecného postupu činností. • Monitorování činnosti žáků. • Žák: • Sleduje výkladovou projekci a demonstraci učitele. Vyhledávání Binární vyhledávání - princip • Mějme sestupně seřazené pole a hledejme v něm prvek h. • Binární vyhledávání v každém svém kroku zvolí prostřední prvek pole (p) a porovná jej s prvkem h. • Pokud jsou tyto prvky totožné, tak vrátí index prvku p. • Pokud má hledaný prvek vyšší hodnotu než p, tak je zřejmé, že h se musí nacházet v levé části pole. • V opačném případě (p>h) se hledaný prvek musí nacházet v pravé části pole. Binární vyhledávání - princip • Protože dochází v každém kroku k půlení prohledávaného intervalu (a druhá polovina se nezpracovává), • musí dojít k nalezení (nebo vyvrácení přítomnosti) hledaného prvku nejpozději v log 2 𝑛 krocích. Interpolační vyhledávání • Interpolační vyhledávání je vylepšením binárního vyhledávání pro případ, kdy víme, že jsou čísla v poli nejen seřazená, ale také rovnoměrně rozložená. • Tento postup lze přirovnat k tomu, jak hledáme např. v telefonním seznamu. • Neotvíráme jej v polovině, čtvrtině, atd., ale odhadujeme místo otevření podle lexikografického umístění jména účastníka - tj. interpolujeme. • Interpolační vyhledávání lze použít pouze v případě, že jsme schopni provést interpolaci pro odhad indexu hledaného prvku. Princip • Interpolační vyhledávání vychází z úvahy, že pokud máme v poli například čísla od 0 do 100 a hledáme číslo 2, tak je přinejmenším nerozumné pole binárně dělit (napřed se podívat na index 50, pak 25, pak 12...). • Je daleko rozumnější se podívat někam kolem indexu 2, kde by se číslo mělo nacházet (vzhledem k rovnoměrnému rozložení). • Složitost tohoto přístupu je 𝑂(log(log 𝑛)) Lineární vyhledávání • Lineární (sekvenční) vyhledávání je nejjednodušším způsobem, jak zjistit, jestli se v poli (nebo jiné datové struktuře) nachází námi hledaný prvek. • Princip je zcela triviální, procházíme jeden prvek po druhém a zjišťujeme, jestli to není právě ten, který hledáme. • Z tohoto vyplývá složitost tohoto postupu O(n) Využití • Lineární vyhledávání použijeme tehdy, pokud nemáme žádné informace o uspořádání prvků struktury nebo pokud nám datová struktura neumožňuje efektivnější způsob vyhledávání. • Výhodou lineárního vyhledávání, oproti efektivnějším algoritmům jako například binární vyhledávání, je právě možnost použití i na neuspořádaných seznamech. Prořezávej a hledej • Prořezávej a hledej (Prune and search) je typ algoritmu založený na vyřazování neperspektivních dat – redukci velikosti problému. • Toto paradigma je velmi podobné algoritmům typu rozděl a panuj (divide and conquer). • Zásadní rozdíl je ovšem v tom, že při prořezávání neprocházíme všechny větve, ale pouze ty, které pro nás dávají smysl. Příklad • Pokud hledáme n-té nejvyšší číslo v neseřazeném poli, tak by řešením zajisté bylo pole seřadit a podívat se na zadaný index. • Toto řešení ovšem není příliš efektivní. • Lepším řešením je upravit například Quicksort tak, aby se po rozdělení pole dle pivota prohledávala pouze ta část, která obsahuje řešení. • Quicksort v každém svém kroku umístí pivota na korektní místo v seřazeném poli, není proto problém rozhodnout, ve které části se nachází ono hledané číslo. Zdroje • HUDEC, Bohuslav. Programovací techniky. Vyd. 4. Praha: ČVUT, Elektrotechnická fakulta, 2001, 234 s. ISBN 80-010-2374-5. • Searching and Sorting. HOLLOWAY, Robert. University of Wisconsin– Madison [online]. © 2002-2003 [cit. 2013-07-17]. Dostupné z: http://pages.cs.wisc.edu/~bobh/367/SORTING.html. • TÖPFER, Pavel. Algoritmy a programovací techniky. 1. vyd. Praha: Prometheus, 1995, 299 s. ISBN 80-858-4983-6. • VEČERKA, Arnošt. Základní algoritmy [online]. Olomouc, 2007 [cit. 2013-07-17]. Dostupné z: http://phoenix.inf.upol.cz/esf/ucebni/ zakladni_alg.pdf. • Základy programování v jazyce Pascal [online]. 2004 [cit. 2013-0717]. Dostupné z: http://pascal.webz.cz/kurs/index.html.