Čo je to algoritmus?
Je to postupnosť pravidiel / pokynov, ktoré sú načrtnuté pred tým, ako sa pristúpi k riešeniu akéhokoľvek konkrétneho problému, sú zárukou riešenia tohto problému. Napríklad, vezmite príklad železničného bránového bodu.
Algoritmus by mal:
- Byť dobre definovaný a dobre usporiadaný- Inštrukcie uvedené v algoritme by mali byť zrozumiteľné a dobre definované.
- Majú jednoznačné operácie, tj každý z krokov algoritmu by mal byť dostatočne jednoduchý, aby si nemusel vyžadovať ďalšie zjednodušenie.
- Majte efektívne vypočítateľnú operáciu.
Zdroj obrázka: d262ilb51hltx0.cloudfront.net/
Pochopenie algoritmu
Zdroj obrázka : goo.gl/images/u76bFe
Existuje snímač, ktorý sníma príchod vlaku, ktorého výstupom by mohli byť 2 výsledky
- Vlak prichádza
- Vlak neprichádza
Výsledok prvého výsledku sa odovzdáva žalobe, v ktorej sa odporúča uzavrieť brány, zatiaľ čo výsledok druhého výsledku sa znova otestuje jeho odoslaním do pôvodného vyhlásenia. Okrem toho sa výstup skúšky, ktorá bola výsledkom prvej podmienky, podrobí skúške, aby sa skontrolovalo, či bol vlak úplne opustený. Ak je odpoveď áno, brány sa otvoria, zatiaľ čo ak sú záporné, brány zostanú zatvorené. Budeme o tom diskutovať viac a budeme pracovať s nasledujúcimi témami (podmnožiny / stavebné bloky a práca s algoritmom)
Ako uľahčuje algoritmus prácu?
Ako vieme, ide o plán riešenia problému. Ak nemáme plán, náš prístup k riešeniu zložitého problému by pri prvom pokuse pravdepodobne zlyhal a aj keby sa problém vyriešil, šanca je oveľa menšia, že bude optimálnym riešením tohto problému.
Na druhej strane, ak vytvoríme algoritmus skôr, ako vyriešime nejaký problém, povedzme, že vytvoríme niekoľko algoritmov a triedime ich na základe optimálneho riešenia, ktoré poskytujú, zaručilo by to vyriešenie daného problému. To je dôvod, prečo sa všade, pred vyriešením akéhokoľvek problému, najprv vytvorí algoritmus.
Najlepšie spoločnosti zaoberajúce sa vývojom algoritmov
Vytvorenie skvelého produktu vyžaduje skutočne dobrý dizajn, aj keď nemôžeme porovnávať algoritmus pre dva rôzne problémy. Čo môžeme urobiť, je vymenovať názvy spoločností, ktoré dodali na tento svet niektoré vynikajúce výrobky v priebehu 21. storočia:
- DeepMind
- Baidu
- nvidia
- CloudWalk
- SenseTime
- Darktrace
- Cambrian
- IBM
- OpenAI
- ByteDance
- CrowdStrike
- Zebra Medical Vision
- Babylon
- intel
- Flatiron Health
- vyhlásiť
- zbohatlík
- Element AI
- CloudMinds
- DataRobot
- anki
- Zymergen
- UBTECH
Zdroj: algoritmxlab.com/
Podmnožiny / stavebné bloky a fungovanie algoritmu
Počas všetkých týchto rokov sa preukázalo, že algoritmus možno navrhnúť iba z troch stavebných blokov:
- sekvencie
- výber
- opakovanie
Zdroj obrázka : https://goo.gl/
Sekvencia je rad pokynov, ktoré je potrebné dodržať, aby sa vyriešil problém, a inštrukcie by sa mali vykonať v tomto poradí.
Príklady
1. Pridanie dvoch čísiel
Krok 1: Štart
Krok 2: Získajte dve čísla ako vstup a uložte ich do premennej ako aab
Krok 3: Pridajte číslo a & ba uložte do premennej c
Krok 4: Tlač c
Krok 5: Zastavte.
Výber je program, ktorý nám umožňuje zvoliť výstup z rôznych akcií. Ako sme už videli v príklade železničnej brány, mali sme podmienečnú schránku, v ktorej bolo skontrolované, či vlak prichádza.
2. Nájdite najväčšie spomedzi 2 čísel
Krok 1: Štart
Krok 2: Získajte dve čísla ako vstup a uložte ich do premennej ako aab
Krok 3: Ak a je väčšie ako b
Krok 4: Tlač a je veľká
Krok 5: inak
Krok 6: Tlač b je veľká
S tep 7: Stop
Opakovanie alebo opakovanie alebo opakovanie sú menšie programy, ktoré sa vykonávajú niekoľkokrát, až kým nie je splnená podmienka.
3. Ak by sme chceli vypočítať faktoriál čísla
Krok 1 : Štart
Krok 2 : Vyhláste premenné n, faktoriálne a i
Krok 3 : Inicializujte premenné, tj faktorialß1 a iß1
Krok 4: Odčítajte hodnoty n
Krok 5: Opakujte kroky až do opakovania
faktoriál <- faktoriál * i
i <- i + 1
Krok 6: Zobraziť faktoriál
Krok 7: Zastavte
Čo môžete robiť s algoritmom?
Je to funkcia alebo séria funkcií, ktoré riešia problém. Algoritmus môžeme použiť na vyriešenie najjednoduchšieho problému, ako aj niektorých najťažších problémov na svete. Rozhodli sme sa, že je optimálny pomocou „časovej komplexnosti“. Jednoducho povedané, časová zložitosť je spôsob, ako opísať čas vykonávania ktoréhokoľvek daného algoritmu. Existuje minimálny čas chodu (nazývaný malý „O“), priemerný čas behu a najhorší čas behu O (N) (známy tiež ako veľký „O“). Počítačoví vedci a softwaroví inžinieri radi uvažujú o algoritmoch, pretože majú záujem o hodnotenie a zostavenie kolekcií osvedčených postupov tak, aby nemuseli začať od nuly pri každom výskyte podobnej triedy problémov. Nižšie je uvedený príklad rôznych časových komplexností, ktoré by sa mohli vyskytnúť pri riešení konkrétneho problému. To tiež znamená, že jeden problém by mohol mať viacero riešení, ale musíme si zvoliť najoptimálnejší problém pomocou výpočtu časovej zložitosti algoritmov. V rozhovoroch budete požiadaní o vyriešenie problému a navyše budete požiadaní o jeho optimalizáciu, tj o skrátenie doby chodu vášho algoritmu. Napríklad ste mohli mať napísaný kód s 2 slučkami „for“ (iterácia), ale je možné, že úlohu možno dosiahnuť iba pomocou jedinej slučky „for“ (iterácia), ale toto riešenie ste ešte nedosiahli. napriek tomu a musíte zistiť viac!
Zdroj obrázka: https://goo.gl/
Výhody algoritmu
- Je to postupné znázornenie riešenia každého daného problému, čo uľahčuje pochopenie.
- Používa jednoznačný postup.
- Je nezávislý od akéhokoľvek programovacieho jazyka, takže je ľahké pre každého porozumieť aj bez znalosti programovania.
- Každý krok má svoju vlastnú logickú postupnosť, preto je ľahké ho ladiť.
- Použitím algoritmu je problém rozdelený na menšie kúsky alebo kroky, a preto je pre programátora ľahšie previesť ho na skutočný program.
Požadované zručnosti
Aby bolo možné navrhnúť robustný a najlepší algoritmus zložitosti času, musí byť dobré logické myslenie a mal by byť dobrý v matematike a mal by poznať aspoň jeden objektovo orientovaný programovací jazyk. Potrebné sú aj znalosti o štruktúre údajov.
- Počítače - tu sa dozviete viac o poliach, prepojených zoznamoch, binárnych stromoch, hashových tabuľkách, grafoch, stohoch, frontoch, hromadách a iných základných údajových štruktúrach.
- Matematika - Dozviete sa o teórii množín, strojoch s konečným stavom, regulárnych výrazoch, násobení matíc, bitových operáciách, riešení lineárnych rovníc a ďalších dôležitých konceptoch, ako sú permutácie, kombinácie, princíp pigeonhole.
- Big-O & Runtime - Zistite, čo je Big-O a ako analyzovať prevádzkové doby algoritmov.
Prečo by sme mali používať a prečo potrebujeme algoritmus?
Jeden by mal používať algoritmus, pretože uľahčuje našu prácu a poskytuje nám najoptimálnejšie riešenie. Ak nepoužijeme algoritmus pred riešením akéhokoľvek zložitého problému, existuje veľká šanca, že z hľadiska riešenia pôjdeme bez smerovania. S algoritmom šetríme čas na riešenie problémov a zabezpečujeme, aby algoritmus riešenia bol, ako už bolo povedané, nezávislý od ľubovoľného programovacieho jazyka, takže ktokoľvek môže navrhnúť algoritmus, ale aby sa navrhol skutočne dobrý algoritmus, mal by byť dobrý v logike a matematike. Slúži ako prototyp riešenia.
Predstavte si napríklad, že máme pred sebou dve Rubikove kocky. Jedným z nich je dovolené používať algoritmy (napríklad koľkokrát alebo akým smerom otočiť tvár) a druhým musíte nájsť svoju vlastnú cestu. Ktorý spôsob bude rýchlejší? Určite to bude prvý.
Urobme zaujímavý príklad:
Povedzme, že máme celý rad prvkov a radi by sme ich usporiadali vzostupne. Teraz k tomu existuje odlišný algoritmický prístup. Zameriame sa na časovú zložitosť 2 z nich: Vloženie a Zlúčenie
Zoradenie vloženia: Zoradenie vloženia je jednoduché triedenie.
(Časová zložitosť je O (N 2).)
Zlúčiť zoradenie: Pri zlúčení zoradíme prvky pomocou metódy Rozdeľ a dobij.
Časová zložitosť je O (N log N).
To by mohol byť vplyv, s ktorým by ste sa stretli, ak by ste ho nedodržiavali a nevykonávali na ňom analýzu.
Rozsah algoritmu
Pomocou algoritmu učenia sa a ovládania by ste mali poznať umenie „Riešenie problémov“. Pri dobrej praxi a nepretržitom učení by ste mali byť schopní riešiť zložité problémy. Je to základ navrhovania nejakého softvéru alebo kódu, pretože čas vykonávania kódu je jedným z najdôležitejších faktorov pri určovaní vykonávania konkrétnej úlohy. Tech giganti sveta, ako sú Google a Facebook, posudzujú vaše zručnosti pri riešení problémov a pri rozhovoroch sa väčšina otázok týka navrhovania algoritmov a riešenia problémov. Budete požiadaní, aby ste navrhli algoritmus a optimalizovali ho tak, aby bol čo najlepší čas zložitosti.
Niekoľko bodov:
- Tým sa zlepší vaše zručnosti v riešení problémov, ktoré vás privedú k lepšej konkurencii pri rozhovoroch alebo online skúškach
- Znížite svoj čas na vyriešenie akéhokoľvek problému.
- Takmer všetci technickí obri najímajú kandidátov na základe ich lepších zručností pri riešení problémov
- Jeden môže vyťažiť maximum z programovacieho jazyka tým, že sa naučí, ako zostaviť a navrhnúť algoritmus
Kto je tým pravým publikom na výučbu technológií algoritmov?
Z hľadiska informatiky by sa každý, kto robí málo alebo viac programovania, mal učiť algoritmom. Ak píšete kód, ktorý váš problém nevyrieši, alebo ak problém vyrieši, ale neefektívne použije prostriedky (napríklad spustenie trvá príliš dlho alebo spotrebuje príliš veľa pamäte počítača), potom váš kód nie je optimálny, Spoločnosti by však chceli, aby ich softvér alebo produkty reagovali alebo vykonávali v čo najkratšom čase.
Každý, kto niečo vyvíja, by sa mal naučiť, ako vykonávať analýzu pomocou algoritmu, aby sa zabezpečilo optimálne fungovanie konečného produktu.
Ako vám algoritmus pomôže v kariérnom raste?
Dizajn a analýza algoritmu nie je rola (špecifická), ale je súčasťou vašej práce a táto časť hrá dôležitú úlohu pri vývoji kódu. Ak navrhnete dobrý algoritmus, napíšete dobré kódy s optimálnym riešením a nakoniec váš konečný produkt, ktorý sa dodáva zákazníkom, vynikne. Ak teda navrhujete a / alebo vyvíjate softvér, sú nevyhnutné znalosti a skúsenosti s dátovými štruktúrami a algoritmami. Povedzme, že pracujete na produkte vývoja softvéru, jeho reakcia by sa mala dôkladne otestovať (samozrejme by ste si mali skontrolovať čas vykonávania procesu pred odovzdaním kódu tímu pre testovanie softvéru), a to nie je niečo, čo by ste mohli urobiť hádajte takmer presne vopred, ale na výpočet časovej náročnosti musíte použiť analýzu algoritmu.
záver
Takže, ako sme videli úvodný opis algoritmov a ich rôznych aspektov, a videli sme, že by mohli existovať rôzne prístupy k riešeniu konkrétneho problému a zložitosť Big-O a Time sú parametre, ktoré nám pomáhajú zvoliť najoptimálnejšie riešenie. Preskúmaním veľkého počtu algoritmov sa zásadne stanete silnými v analýze algoritmov a mali by ste byť schopní navrhnúť a spustiť analýzu pomocou algoritmu s ľahkosťou.
Odporúčané články
Toto bola príručka Čo sú algoritmy. Tu sme diskutovali fungovanie algoritmov s príkladmi a ich rôznymi aspektmi. Viac informácií nájdete aj v ďalších navrhovaných článkoch -
- Čo je server Tableau?
- Sprievodca analýzou veľkých dát
- Čo je SQL Developer?
- Čo je Informatica