Co je algoritmus? - Zpracování algoritmů s příklady

Obsah:

Anonim

Co je to algoritmus?

Jde o posloupnost pravidel / pokynů, které jsou nastíněny před provedením přístupu k vyřešení jakéhokoli konkrétního problému, záruky pro vyřešení problému. Vezměme si například příklad železniční brány.
Algoritmus by měl:

  • Být dobře definovaný a dobře uspořádaný- Instrukce uvedené v algoritmu by měly být srozumitelné a dobře definované.
  • Mají jednoznačné operace, tj. Každý z kroků algoritmu by měl být dostatečně jednoduchý, aby nevyžadoval žádné další zjednodušení
  • Mají efektivně vypočítatelnou operaci.

Zdroj obrázku: d262ilb51hltx0.cloudfront.net/

Porozumění algoritmu

Zdroj obrázku : goo.gl/images/u76bFe

Existuje senzor, který snímá příjezd vlaku, jehož výstupem by mohly být 2 výsledky

  • Vlak přijíždí
  • Vlak nepřichází

Výsledek prvního výsledku je předán akci, kde se doporučuje zavřít brány, zatímco výsledek druhého výsledku je znovu otestován jeho odesláním do původního prohlášení. Kromě toho se výstup akce, která byla výsledkem první podmínky, podrobí zkoušce, aby se ověřilo, zda byl vlak úplně odjížděn. Pokud je odpověď ano, brány se otevřou, zatímco pokud jsou záporné, zůstanou brány zavřené. Budeme o tom diskutovat více a budeme pracovat s následujícími tématy (Podmnožiny / Stavební bloky a práce s algoritmem)

Jak usnadňuje algoritmus práci?

Jak víme, jedná se o plán řešení problému. Pokud nemáme plán, náš přístup k řešení složitého problému by při prvním pokusu pravděpodobně selhal a i kdyby to vyřešil, šance jsou mnohem menší, že to bude optimální řešení tohoto problému.

Na druhou stranu, pokud vytvoříme algoritmus před vyřešením jakéhokoli problému, řekněme, že vytvoříme několik algoritmů a roztřídíme je na základě optimálního řešení, které poskytují, zaručilo by to vyřešení daného problému. To je důvod, proč všude, před vyřešením jakéhokoli problému, je nejprve vytvořen algoritmus.

Nejlepší společnosti zabývající se vývojem algoritmů

Vytváření skvělého produktu vyžaduje opravdu dobrý design, ačkoli nemůžeme porovnat algoritmus pro dva různé problémy, můžeme udělat výčet jmen společností, které do 21. století dodaly na tento svět některé vynikající produkty:

  • DeepMind
  • Baidu
  • Nvidia
  • CloudWalk
  • SenseTime
  • Google
  • Facebook
  • Darktrace
  • Cambrian
  • IBM
  • OpenAI
  • ByteDance
  • CrowdStrike
  • Zebra Medical Vision
  • Babylon
  • Intel
  • Flatiron zdraví
  • Potvrdit
  • Povýšenec
  • Prvek AI
  • CloudMinds
  • DataRobot
  • Anki
  • Zymergen
  • UBTECH

Zdroj: algoritmxlab.com/

Podmnožiny / stavební bloky a práce s algoritmem

Všechny tyto roky bylo prokázáno, že algoritmus lze navrhnout pouze ze tří stavebních bloků:

  • Sekvence
  • Výběr
  • Opakování


Zdroj obrázku : https://goo.gl/

Posloupnost je řada instrukcí, které je třeba dodržovat, aby se problém vyřešil, a instrukce by měly být provedeny v pořádku.

Příklady

1. Sčítání dvou čísel

Krok 1: Start
Krok 2: Získejte dvě čísla jako vstup a uložte do proměnné jako aab
Krok 3: Přidejte číslo a & ba uložte do proměnné c
Krok 4: Tisk c
Krok 5: Zastavte.

Výběr je program, který nám umožňuje zvolit výstup z různých akcí. Jak jsme viděli dříve v příkladu železniční brány, měli jsme podmíněnou schránku, ve které bylo ověřováno, zda vlak přijíždí.

2. Najděte největší ze dvou čísel

Krok 1: Start
Krok 2: Získejte dvě čísla jako vstup a uložte do proměnné jako aab
Krok 3: Je-li a větší než b, pak
Krok 4: Tisk a je velký
Krok 5: jinak
Krok 6: Tisk b je velký
S tep 7: Stop

Opakování nebo iterace nebo smyčka jsou menší programy, které se provádějí několikrát, dokud není podmínka splněna.

3. Pokud bychom chtěli vypočítat faktoriál čísla

Krok 1 : Start
Krok 2 : Deklarujte proměnné n, faktoriál a i
Krok 3 : Inicializujte proměnné, tj. Faktorialß1 a iß1
Krok 4: Přečtěte hodnoty n
Krok 5: Opakujte kroky až do n iterací
faktoriál <- faktoriál * i
i <- i + 1
Krok 6: Zobrazení faktoriálu
Krok 7: Zastavte

Co můžete dělat s algoritmem?

Je to funkce nebo řada funkcí, které řeší problém. Algoritmus můžeme použít k vyřešení nejjednoduššího problému i některých nejtěžších problémů na světě. Rozhodli jsme se, že je to optimální s pomocí „časové složitosti“. Zjednodušeně řečeno, časová složitost je způsob, jak popsat dobu běhu jakéhokoli daného algoritmu. Je zde minimální doba běhu (nazývaná malá 'O'), průměrná doba běhu a nejhorší doba běhu O (N) (také známá jako velká 'O'). Počítačoví vědci a softwaroví inženýři rádi uvažují o algoritmech, protože se zajímají o hodnocení a vytváření sbírek osvědčených postupů tak, aby nemuseli začínat od nuly na každém stupni podobné třídy problémů. Níže je uveden příklad různých časových komplikací, které by člověk mohl získat při řešení konkrétního problému. To také znamená, že by mohl existovat více řešení jednoho problému, ale musíme si vybrat nejoptimálnější problém spočtením časové složitosti algoritmů. V rozhovorech budete požádáni o vyřešení problému a dále budete požádáni, abyste jej optimalizovali, tj. Zkrátili dobu běhu vašeho algoritmu. Můžete mít například napsaný kód se dvěma smyčkami „for“ (iterace), ale je možné, že úlohu lze dosáhnout pouhým použitím jediné smyčky „for“ (iterace), ale nebyli jste na řešení přesto a musíte přijít na další!

Zdroj obrázku: https://goo.gl/

Výhody algoritmu

  1. Jedná se o postupné znázornění řešení daného problému, což usnadňuje pochopení.
  2. Používá jednoznačný postup.
  3. Je nezávislý na jakémkoli programovacím jazyce, takže pro každého je snadné porozumět i bez znalosti programování.
  4. Každý krok má svou vlastní logickou posloupnost, takže je snadné jej ladit.
  5. Pomocí algoritmu je problém rozdělen na menší části nebo kroky, proto je pro programátora snazší převést jej na skutečný program.

Požadované dovednosti

Aby bylo možné navrhnout robustní a nejlepší algoritmus pro časovou složitost, musí být dobré logické myšlení a měl by být dobrý v matematice a měl by znát alespoň jeden objektově orientovaný programovací jazyk. Rovněž je zapotřebí znalost struktury dat.

  1. Počítače - Další informace o polích, propojených seznamech, binárních stromech, hashových tabulkách, grafech, hromádkách, frontách, halách a dalších základních datových strukturách.
  2. Matematika - Dozvědět se o teorii množin, konečných stavech strojů, regulárních výrazech, násobení matic, bitových operacích, řešení lineárních rovnic a dalších důležitých pojmech, jako jsou permutace, kombinace, pigeonhole princip.
  3. Big-O & Runtime - Zjistěte, co je Big-O a jak analyzovat běh algoritmů.

Proč bychom měli používat a proč potřebujeme algoritmus?

Jeden by měl používat algoritmus, protože to usnadňuje naši práci a poskytuje nám nejoptimálnější řešení. Pokud nepoužijeme algoritmus před vyřešením jakéhokoli složitého problému, existuje velká šance, že z hlediska řešení půjdeme bez směrů. S algoritmem šetříme čas při řešení problémů a zajišťujeme, že algoritmus řešení je, jak již bylo řečeno, nezávislý na jakémkoli programovacím jazyce, takže kdokoli může navrhnout algoritmus, ale aby mohl navrhnout opravdu dobrý algoritmus, měl by být dobrý v logice a matematice. Slouží jako prototyp řešení.

Představte si například, že máme před sebou dvě Rubikovy kostky. Jedním z nich je povoleno používat algoritmy (například kolikrát nebo kterým směrem otočit obličej) a druhým musíte najít svou vlastní cestu. Který způsob bude rychlejší? Určitě to bude první.

Vezměme zajímavý příklad:

Řekněme, že máme řadu prvků a chtěli bychom je řadit vzestupně. Nyní k tomu existuje jiný algoritmický přístup. Zaměříme se na časovou složitost 2 z nich: Insertion sort a Merge sort

Insertion sort: Insertion sort je jednoduché třídění.
(Časová složitost je O (N 2).)

Sloučit řazení: Při sloučení třídíme prvky pomocí metody Rozdělit a Dobýt.
Časová složitost je O (N log N).

To by mohl být dopad, s nímž byste se setkali, kdybyste ho nedodržovali a neprováděli na něm analýzu.

Rozsah algoritmu

Pomocí algoritmu učení a zvládnutí byste znát umění „Řešení problémů“. Při dobré praxi a neustálém učení byste měli být schopni řešit složité problémy. Je to základ pro navrhování určitého softwaru nebo kódu, protože doba běhu kódu je jedním z nejdůležitějších faktorů při určování provádění konkrétního úkolu. Tech giganti světa, jako jsou Google a Facebook, posuzují vaše dovednosti v oblasti řešení problémů a v rozhovorech se většina otázek týká návrhu algoritmů a řešení problémů. Budete požádáni, abyste navrhli algoritmus a optimalizovali ho na co nejlepší čas složitosti.

Několik bodů:

  • Tím se zlepší vaše dovednosti při řešení problémů, které vás povedou k lepší konkurenci při pohovorech nebo online zkouškách
  • Snížíte čas při řešení jakéhokoli problému.
  • Téměř všichni techničtí obři najímají kandidáty na základě jejich lepších dovedností pro řešení problémů
  • Jeden může udělat maximum z programovacího jazyka tím, že se učí, jak vytvořit a navrhnout algoritmus

Kdo je tím pravým publikem pro výuku technologií algoritmů?

Z pohledu informatiky by se každý, kdo provádí málo nebo více programování, měl naučit algoritmy. Pokud píšete kód, který váš problém nevyřeší, nebo pokud jej řeší, ale neefektivně využívá prostředky (například spuštění běhu nebo příliš mnoho paměti počítače), pak váš kód není optimální . Společnosti by však chtěly, aby jejich software nebo produkty reagovaly nebo prováděly v co nejkratší době.

Každý, kdo něco vyvíjí, by se měl naučit, jak provádět analýzu pomocí algoritmu, aby se zajistilo optimální fungování konečného produktu.

Jak vám algoritmus pomůže v kariérním růstu?

Návrh a analýza algoritmu není role (konkrétní), ale je součástí vaší práce a tato role hraje zásadní roli při vývoji kódu. Pokud navrhnete dobrý algoritmus, budete psát dobré kódy s optimálním řešením a nakonec váš konečný produkt, který je dodáván zákazníkům, vyniká. Pokud tedy navrhujete a / nebo vyvíjíte software, jsou nezbytné znalosti a zkušenosti s datovými strukturami a algoritmy. Řekněme, že pracujete na produktu vývoje softwaru, jeho odpověď by měla být důkladně otestována (samozřejmě byste si měli zkontrolovat dobu běhu procesu před předáním kódu týmu testování softwaru), a to není něco, co byste mohli hádejte téměř přesně předem, ale pro výpočet časové složitosti musíte použít analýzu algoritmu.

Závěr

Takže, jak jsme viděli úvodní popis algoritmů a jeho různých aspektů, a viděli jsme, že by mohly existovat různé přístupy k řešení konkrétního problému a složitost Big-O a Time jsou parametry, které nám pomáhají vybrat nejoptimálnější řešení. Prozkoumáním velkého počtu algoritmů se v zásadě stanete silným v analýze algoritmu a měli byste být schopni navrhnout a spustit analýzu pomocí algoritmu s lehkostí.

Doporučené články

Toto byl průvodce Co je algoritmus. Zde jsme diskutovali práci algoritmů s příklady a jejich různými aspekty. Další informace naleznete také v dalších navrhovaných článcích -

  1. Co je server Tableau?
  2. Průvodce analýzou velkých dat
  3. Co je SQL Developer?
  4. Co je Informatica