Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
1. Triedenie:
* Zlúčiť zoradenie: `O (n log n)„ Časová zložitosť. Algoritmus rozdelenia a konania, ktorý je stabilný a dobre pre veľké, netriedené súbory údajov. Často sa používa ako stavebný blok v zložitejších algoritmoch. Dobré pre externé triedenie (údaje príliš veľké na to, aby sa zmestili do pamäte).
* Rýchle zoradenie: `O (n log n)` priemerný prípad, `o (n^2)` Najhorší prípad. Ďalší algoritmus rozdelenia a konania. Všeobecne rýchlejšie ako zlúčenie v praxi z dôvodu lepšieho výkonu vyrovnávacej pamäte, ale náchylnejšie na najhoršie scenáre. Variácie, ako je randomizované rýchle zoradenie, pomáhajú to zmierniť.
* halda triedenie: `O (n log n)„ Časová zložitosť. Používa štruktúru údajov o halde. Zaručené `o (n log n)` Výkon, ale vo všeobecnosti nie také rýchle triedenie v praxi. Triedenie na mieste.
* Radix zoradenie: `O (nk)` časová zložitosť, kde `n` je počet prvkov a` k` je priemerná dĺžka kľúčov (počet číslic alebo znakov). Algoritmus triedenia založený na porovnaní, ktorý je veľmi efektívny pre konkrétne typy údajov (celé čísla, reťazce) s obmedzenou dĺžkou kľúčov. Môže byť rýchlejšie ako `o (n log n)` algoritmy triedenia pre primerane naformátované údaje.
* Tim triedenie: `O (n log n)„ Časová zložitosť. Hybridný algoritmus triedenia odvodený z triedenia zlúčenia a inzercie navrhnutý tak, aby fungoval dobre na údajoch v reálnom svete. Používa sa ako predvolený algoritmus triedenia v Pythone a Java.
2. Hľadanie:
* binárne vyhľadávanie: `O (log n)„ Časová zložitosť. Vyžaduje triedenie údajov. Mimoriadne efektívne na vyhľadávanie vo veľkých, zoradených súboroch údajov.
* hash tabuľky: `O (1)„ Priemerný prípad vkladania, vymazania a vyhľadávania. Používa funkciu hash na mapovanie klávesov na indexy v poli. Nevyhnutné na implementáciu slovníkov a vyhľadávaní v konštantnom čase (v priemere). Stratégie riešenia kolízie sú dôležité pre riešenie prípadov, keď rôzne kľúčy mapujú rovnaký index.
3. Grafové algoritmy:
* Vyhľadávanie na prvom šírke (BFS): `O (v + e)` Časová zložitosť, kde `v` je počet vrcholov a` e` je počet hrán. Používa sa na nájdenie najkratšej cesty v neváženom grafe, prechádza úrovňou grafu po úrovni a mnohým ďalším úlohám súvisiacim s grafom.
* Hĺbka prvé vyhľadávanie (dfs): `O (v + e)` časová zložitosť. Pred spätným sledovaním sa skúma čo najviac pozdĺž každej vetvy. Používa sa na topologické triedenie, detekciu cyklu a riešenie problémov bludiska.
* Dijkstra's Algoritmus: `O (e log V)„ Časová zložitosť (s prioritným frontom implementovaným ako minimálny heap). Nájde najkratšie cesty zo zdrojového vrcholu do všetkých ostatných vrcholov vo váženom grafe s nezápornými okrajovými hmotnosťami.
* a* vyhľadávanie: Algoritmus heuristického vyhľadávania, ktorý sa široko používa pri priechode a grafické prenosy, výber `H (n) výrazne ovplyvňuje jeho účinnosť.
* pageRank: Algoritmus používaný vyhľadávacími nástrojmi na hodnotenie webových stránok vo výsledkoch ich vyhľadávania. Iteratívny algoritmus, ktorý priradí každej stránke numerickú hodnotu na základe čísla a kvality odkazov.
4. Strojové učenie a štatistická analýza:
* Gradient zostup: Iteračný optimalizačný algoritmus použitý na nájdenie minimum funkcie. Základné pre školenie mnohých modelov strojového učenia vrátane lineárnej regresie, logistickej regresie a neurónových sietí. Na zlepšenie výkonu sa používajú variácie ako stochastický gradient zostup (SGD) a mini-šartový gradient.
* K-prostriedky zoskupenia: `O (n*k*i)` Časová zložitosť, kde `n` je počet dátových bodov,` k` je počet zhlukov a `i 'je počet iterácií. Rozdeľuje dátové body do klastrov K na základe ich blízkosti k klastrovým centrom.
* Analýza hlavných komponentov (PCA): Znižuje rozmernosť údajov identifikáciou hlavných komponentov (smery maximálnej rozptylu). Užitočné pre extrakciu funkcií, redukciu šumu a vizualizáciu. Výpočtová zložitosť závisí od veľkosti kovariančnej matice.
* Association Rule Ining (napr. Apriori): Nájde zaujímavé vzťahy (asociácie) medzi premennými vo veľkých súboroch údajov. Používa sa v analýze trhu, odporúčaných systémoch a ďalších aplikáciách.
* Algoritmy rozhodnutia (napr. ID3, C4.5, CART): Používa sa na klasifikáciu aj regresné úlohy. Môže byť efektívny, ale náchylný k nadmernému prispôsobeniu.
5. Kompresia údajov:
* Huffman Coding: `O (n log n)„ Časová zložitosť (na zostavenie stromu Huffman). Algoritmus kódovania s premenlivou dĺžkou používaný na kompresiu bezstratových údajov. Priradí kratšie kódy častejším znakom/symbolom.
* Lempel-Ziv (LZ77, LZ78, LZW): Rodina bezstratových algoritmov kompresie údajov, ktoré sa široko používajú vo formátoch súborov, ako sú ZIP a GIF. Identifikujte opakujúce sa vzory v údajoch a nahradte ich kratšími kódmi.
6. Spracovanie reťazcov:
* KNUTH-MORRIS-Pratt (KMP) Algoritmus: `O (n)„ Časová zložitosť, kde `n` je dĺžka textu. Efektívny algoritmus vyhľadávania reťazcov, ktorý nájde výskyt vzoru v texte. Vyhýba sa zbytočnému spätnému sledovaniu.
* Boyer-Moore Algoritmus: V praxi sa vo všeobecnosti rýchlejšie ako KMP, najmä pre dlhšie vzorce. Používa heuristiku na preskočenie častí textu, ktoré nemôžu obsahovať vzor.
7. Numerická analýza:
* Fast Fourierov transformácia (FFT): `O (n log n)„ Časová zložitosť. Efektívne vypočíta diskrétnu Fourierovu transformáciu (DFT), ktorá sa používa pri spracovaní signálu, spracovaní obrazu a ďalších aplikáciách.
* Newton-Raphson Metóda: Iteratívna metóda na nájdenie aproximácií koreňov (alebo nuly) funkcie v reálnom hodnotení.
Kľúčové úvahy o výbere algoritmu:
* Čas zložitosť: Ako rastie čas vykonávania, keď sa zvyšuje veľkosť vstupu.
* Vesmírna zložitosť: Koľko pamäte vyžaduje algoritmus.
* Dátové charakteristiky: Typ údajov (zoradený, netriedený, numerický, kategorický), jeho veľkosť a jeho distribúcia.
* stabilita (na triedenie): Či algoritmus zachováva relatívne poradie rovnakých prvkov.
* paralelizovateľnosť: Či je možné algoritmus ľahko paralelizovať, aby sa využilo viacjadrové procesory alebo distribuované systémy.
* Implementačná zložitosť: Aké ťažké je správne implementovať algoritmus.
* Prípad použitia: Konkrétna úloha, ktorú sa snažíte dosiahnuť.
Dôležitá poznámka: Algoritmus „najlepšie“ závisí od konkrétneho kontextu. Profilovanie a porovnávanie rôznych algoritmov vašich skutočných údajov je rozhodujúce pre prijímanie informovaných rozhodnutí. Knižnice ako Numpy, Scipy, Pandas (Python) a R poskytujú vysoko optimalizované implementácie mnohých z týchto algoritmov, čo uľahčuje ich využitie pri spracovaní a analýze údajov.