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.