Vyhľadávacie algoritmy sú základnými nástrojmi v informatike, ktoré sa používajú na vyhľadávanie konkrétnych položiek v súbore údajov. Tieto algoritmy sú navrhnuté tak, aby efektívne prechádzali dátovými štruktúrami s cieľom nájsť požadované informácie, čo ich robí základnými v rôznych aplikáciách, ako napr. databázy, webové vyhľadávače , a viac.

Algoritmus vyhľadávania
Obsah
- Čo je vyhľadávanie?
- Hľadanie terminológie
- Význam vyhľadávania v DSA
- Aplikácie vyhľadávania
- Základy vyhľadávacích algoritmov
- Algoritmy vyhľadávania
- Porovnania rôznych vyhľadávacích algoritmov
- Knižničné implementácie vyhľadávacích algoritmov
- Jednoduché problémy s vyhľadávaním
- Stredné problémy s vyhľadávaním
- Ťažké problémy s hľadaním
Čo je vyhľadávanie?
Hľadanie je základným procesom lokalizácia konkrétneho prvku alebo položky v rámci kolekcie údajov . Táto zbierka údajov môže mať rôzne formy, ako sú polia, zoznamy, stromy alebo iné štruktúrované reprezentácie. Primárnym cieľom vyhľadávania je určiť, či požadovaný prvok v údajoch existuje, a ak áno, identifikovať jeho presnú polohu alebo ho získať. Hrá dôležitú úlohu v rôznych výpočtových úlohách a aplikáciách v reálnom svete, vrátane vyhľadávania informácií, analýzy údajov, rozhodovacích procesov a ďalších.
Hľadanie terminológie:
Cieľový prvok:
Pri vyhľadávaní vždy existuje konkrétny cieľový prvok alebo položka, ktorú chcete nájsť v rámci kolekcie údajov. Týmto cieľom môže byť hodnota, záznam, kľúč alebo akákoľvek iná entita údajov, ktorá vás zaujíma.
Vyhľadávací priestor:
Vyhľadávací priestor sa vzťahuje na celú kolekciu údajov, v rámci ktorej hľadáte cieľový prvok. V závislosti od použitej štruktúry údajov sa môže vyhľadávací priestor líšiť veľkosťou a organizáciou.
zložitosť:
Vyhľadávanie môže mať rôzne úrovne zložitosti v závislosti od štruktúry údajov a použitého algoritmu. Zložitosť sa často meria z hľadiska časových a priestorových požiadaviek.
Deterministické vs. nedeterministické:
Niektoré vyhľadávacie algoritmy, napr binárne vyhľadávanie , sú deterministické, čo znamená, že sledujú jasný, systematický prístup. Iné, ako napríklad lineárne vyhľadávanie, sú nedeterministické, pretože v najhoršom prípade môžu potrebovať preskúmať celý priestor vyhľadávania.
Dôležitosť vyhľadávania v DSA:
- Účinnosť: Výkon programu zlepšujú efektívne vyhľadávacie algoritmy.
- Získavanie údajov: Rýchlo vyhľadajte a získajte špecifické údaje z veľkých súborov údajov.
- Databázové systémy: Umožňuje rýchle vyhľadávanie v databázach.
- Riešenie problémov: Používa sa v širokej škále úloh na riešenie problémov.
Aplikácie vyhľadávania:
Vyhľadávacie algoritmy majú množstvo aplikácií v rôznych oblastiach. Tu sú niektoré bežné aplikácie:
- Získavanie informácií: Vyhľadávače ako Google, Bing a Yahoo používajú sofistikované vyhľadávacie algoritmy na získavanie relevantných informácií z obrovského množstva údajov na webe.
- Databázové systémy: Vyhľadávanie je v databázových systémoch základom pre získavanie špecifických dátových záznamov na základe užívateľských dopytov, čím sa zvyšuje efektivita pri získavaní dát.
- Elektronický obchod: Vyhľadávanie je v platformách elektronického obchodu kľúčové, aby používatelia rýchlo našli produkty na základe svojich preferencií, špecifikácií alebo kľúčových slov.
- Networking: V sieti sa vyhľadávacie algoritmy používajú na efektívne smerovanie paketov cez siete, hľadanie optimálnych ciest a správu sieťových zdrojov.
- Umela inteligencia: Vyhľadávacie algoritmy hrajú dôležitú úlohu v aplikáciách AI, ako je riešenie problémov, hranie hier (napr. šach) a rozhodovacie procesy.
- Rozpoznávanie vzorov: Vyhľadávacie algoritmy sa používajú pri úlohách zhody vzorov, ako je rozpoznávanie obrázkov, rozpoznávanie reči a rozpoznávanie rukopisu.
Základy vyhľadávacích algoritmov:
- Úvod do vyhľadávania – Príručka o štruktúre údajov a algoritmoch
- Význam vyhľadávania v dátovej štruktúre
- Aký je účel vyhľadávacieho algoritmu?
Algoritmy vyhľadávania:
- Lineárne vyhľadávanie
- Sentinel Linear Search
- Binárne vyhľadávanie
- Meta binárne vyhľadávanie | Jednostranné binárne vyhľadávanie
- Ternárne vyhľadávanie
- Prejsť na vyhľadávanie
- Vyhľadávanie interpolácie
- Exponenciálne vyhľadávanie
- Fibonacciho vyhľadávanie
- Všadeprítomné binárne vyhľadávanie
Porovnania medzi rôznymi vyhľadávacími algoritmami:
- Lineárne vyhľadávanie vs binárne vyhľadávanie
- Interpolačné vyhľadávanie vs binárne vyhľadávanie
- Prečo je binárne vyhľadávanie uprednostňované pred ternárnym vyhľadávaním?
- Je Sentinel Linear Search lepšie ako normálne lineárne vyhľadávanie?
Knižničné implementácie vyhľadávacích algoritmov:
- Funkcie binárneho vyhľadávania v C++ STL (binary_search, lower_bound a upper_bound)
- Arrays.binarySearch() v jazyku Java s príkladmi | Set 1
- Arrays.binarySearch() v jazyku Java s príkladmi | Sada 2 (hľadať v podpole)
- Collections.binarySearch() v jazyku Java s príkladmi
Jednoduché problémy s vyhľadávaním:
- Nájdite najväčšie tri prvky v poli
- Nájdite chýbajúce číslo
- Nájdite prvý opakujúci sa prvok v poli celých čísel
- Nájdite chýbajúce a opakujúce sa číslo
- Vyhľadajte, vložte a odstráňte v zoradenom poli
- Počítajte 1 v zoradenom binárnom poli
- Dva prvky, ktorých súčet je najbližšie k nule
- Nájdite pár s daným rozdielom
- k najväčších (alebo najmenších) prvkov v poli
- K-tý najmenší prvok v 2D poli zoradenom po riadkoch a stĺpcoch
- Nájdite spoločné prvky v troch zoradených poliach
- Strop v triedenom poli
- Podlaha v triedenom poli
- Nájdite maximálny prvok v poli, ktorý sa najprv zvyšuje a potom klesá
- Dané pole s veľkosťou n a číslom k nájdite všetky prvky, ktoré sa vyskytujú viac ako n/k-krát
Stredné problémy s vyhľadávaním:
- Nájdite všetky trojice s nulovým súčtom
- Nájdite prvok, pred ktorým sú všetky prvky menšie ako on a po ktorom sú všetky väčšie
- Nájdite najväčší súčet párov v nezoradenom poli
- K’th najmenší/najväčší prvok v netriedenom poli
- Vyhľadajte prvok v zoradenom a otočenom poli
- Nájdite minimálny prvok v zoradenom a otočenom poli
- Nájdite vrcholový prvok
- Maximum a minimum poľa pomocou minimálneho počtu porovnaní
- Nájdite pevný bod v danom poli
- Nájdite k najčastejších slov zo súboru
- Nájdite k prvkov najbližších k danej hodnote
- Vzhľadom na zoradené pole a číslo x nájdite v poli dvojicu, ktorej súčet je najbližšie k x
- Nájdite najbližší pár z dvoch zoradených polí
- Nájdite tri najbližšie prvky z daných troch zoradených polí
- Binárne vyhľadávanie racionálnych čísel bez použitia aritmetiky s pohyblivou rádovou čiarkou
Ťažké problémy s vyhľadávaním:
- Medián dvoch triedených polí
- Medián dvoch triedených polí rôznych veľkostí
- Hľadajte v takmer zoradenom poli
- Nájdite polohu prvku v zoradenom poli nekonečných čísel
- Vzhľadom na zoradené a otočené pole zistite, či existuje pár s daným súčtom
- K’th najmenší/najväčší prvok v netriedenom poli | V najhoršom prípade Lineárny čas
- K’th najväčší prvok v prúde
- Najlepšie prvé vyhľadávanie (informované vyhľadávanie)
Rýchle odkazy:
- „Problémy s cvičením“ pri vyhľadávaní
- „Kvízy“ o vyhľadávaní
Odporúčané:
- Naučte sa dátovú štruktúru a algoritmy | Príručka DSA