Ce este un algoritm? - Funcționarea algoritmilor cu exemple

Cuprins:

Anonim

Ce este un algoritm?

Este o succesiune de reguli / instrucțiuni care sunt prezentate înainte de a face o abordare pentru a rezolva orice problemă specifică, o garanție pentru rezolvarea problemei. De exemplu, să luăm un exemplu de punct de poartă feroviară.
Un algoritm ar trebui:

  • Fii bine definit și bine ordonat - Instrucțiunile furnizate într-un algoritm trebuie să fie bine de înțeles și definite.
  • Să aibă operațiuni fără ambiguitate, adică fiecare dintre etapele unui algoritm ar trebui să fie suficient de simplu încât să nu necesite nicio simplificare suplimentară
  • Au o operație eficient calculabilă.

Sursa imaginii: d262ilb51hltx0.cloudfront.net/

Înțelegerea algoritmului

Sursa imaginii : goo.gl/images/u76bFe

Există un senzor care simte sosirea unui tren, a cărui ieșire ar putea avea 2 rezultate

  • Se apropie trenul
  • Trenul nu ajunge

Rezultatul primului rezultat este trecut la o acțiune în care sfătuiește să închidă porțile în timp ce rezultatul celui de-al doilea rezultat este pus din nou la încercare, trimițându-l în declarația inițială. Mai mult, rezultatul acțiunii care a fost rezultatul primei condiții este pus la încercare pentru a verifica dacă trenul a fost plecat complet. Dacă răspunsul este da, porțile sunt deschise, în timp ce dacă este negativ, porțile rămân închise. Vom discuta mai multe despre aceasta și vom lucra cu următoarele subiecte (Subseturile / Blocurile de construcție și lucrul unui algoritm)

Cum face algoritmul să funcționeze ușor?

După cum știm, acesta este un plan pentru rezolvarea unei probleme. Ei bine, dacă nu avem un plan, abordarea noastră de a soluționa o problemă complexă ar eșua în prima încercare și chiar dacă rezolvă problema, șansele sunt foarte mici că va fi o soluție optimă pentru această problemă.

Deși, pe de altă parte, dacă creăm algoritmul înainte de a rezolva orice problemă, să spunem că creăm puțini algoritmi și îi sortăm în funcție de soluția optimă pe care o oferă, ar garanta rezolvarea problemei date. Acesta este motivul pentru care peste tot, înainte de a rezolva orice problemă, în primul rând este creat un algoritm.

Companii de dezvoltare a algoritmilor de top

Construirea unui produs excelent necesită un design foarte bun, deși nu putem compara un algoritm pentru două probleme diferite, ceea ce putem face este să enumerăm numele companiilor care au livrat câteva produse excelente în această lume de-a lungul secolului 21:

  • DeepMind
  • Baidu
  • Nvidia
  • CloudWalk
  • SenseTime
  • Google
  • Facebook
  • Darktrace
  • Cambrian
  • IBM
  • OpenAI
  • ByteDance
  • CrowdStrike
  • Zebra Medical Vision
  • Babylon
  • Intel
  • Flatiron Health
  • Afirma
  • Parvenit
  • Element AI
  • CloudMinds
  • DataRobot
  • Anki
  • Zymergen
  • UBTECH

Sursa: algoritmxlab.com/

Subseturile / Blocurile de construcție și funcționarea unui algoritm

În acești ani, s-a dovedit că un algoritm poate fi proiectat din doar trei blocuri de construcție:

  • Secvenţă
  • Selecţie
  • Repetare


Sursa imaginii : https://goo.gl/

O secvență este o serie de instrucțiuni care trebuie urmate pentru a rezolva o problemă și instrucțiunile ar trebui să fie executate în ordine.

Exemple

1. Adăugarea a două numere

Pasul 1: Start
Pasul 2: Obțineți două numere ca intrare și stocați o variabilă ca a și b
Pasul 3: Adăugați numărul a & b și stocați în variabila c
Pasul 4: Tipărire c
Pasul 5: oprește-te.

O selecție este un program care ne permite să alegem ieșirea din diferite acțiuni. Așa cum am văzut mai devreme în exemplul de la poarta feroviară, aveam o casetă condiționată în care se verifica dacă sosește trenul.

2. Găsiți cel mai mare număr dintre cele 2

Pasul 1: Start
Pasul 2: Obțineți două numere ca intrare și stocați o variabilă ca a și b
Pasul 3: Dacă a este mai mare decât b atunci
Pasul 4: Tipărirea a este mare
Pasul 5: altceva
Pasul 6: Tipărirea b este mare
S tep 7: Opriți-vă

Repetarea sau iterația sau bucla sunt programele mai mici care sunt executate de mai multe ori până la îndeplinirea condiției.

3. Dacă am dori să calculăm factorialul unui număr

Pasul 1 : Start
Pasul 2 : Declarați variabilele n, factorial și i
Pasul 3 : Inițializează variabilele adică factorialß1 și iß1
Pasul 4: Citiți valorile lui n
Pasul 5: Repetați pașii până la n iterații
factorial <- factorial * i
i <- i + 1
Pasul 6: afișare factorială
Pasul 7: Oprește-te

Ce poți face cu un algoritm?

Este o funcție sau o serie de funcții care rezolvă o problemă. Putem folosi un algoritm pentru a rezolva cea mai simplă problemă, precum și unele dintre cele mai dificile probleme din lume. Hotărâm că este una optimă cu ajutorul „complexității timpului”. În termeni simpli, complexitatea timpului este o modalitate de a descrie timpul de rulare al oricărui algoritm dat. Există un timp de rulare minim (numit „O” mic, timp de rulare mediu și cel mai rău caz O (N) (cunoscut și sub numele de „O” mare). Oamenii de informatică și inginerii de software doresc să se gândească la algoritmi, deoarece sunt interesați să evalueze și să construiască colecțiile de cele mai bune practici, astfel încât să nu fie nevoiți să înceapă de la zero pentru fiecare instanță a unei clase similare de probleme. Mai jos este un exemplu de complexități temporale diferite pe care le-ar putea obține în timp ce rezolvăm o problemă specifică. Aceasta înseamnă, de asemenea, că ar putea exista mai multe soluții pentru o singură problemă, dar trebuie să o alegem pe cea mai optimă, calculând complexitățile de timp ale algoritmilor. În interviuri, vi se va cere să rezolvați o problemă și, în plus, vi se va solicita să o optimizați, adică să reduceți timpul de rulare al algoritmului dvs. De exemplu, este posibil să aveți un cod scris cu 2 bucle „pentru” (iterație), dar poate fi posibil ca lucrarea să fie realizată doar folosind o singură buclă „pentru” (iterație), dar nu ați fost la curent cu această soluție totuși și trebuie să vă dați seama mai mult!

Sursa imaginii: https://goo.gl/

Avantajele algoritmului

  1. Este o reprezentare pasivă a unei soluții la orice problemă dată, ceea ce face ușor de înțeles.
  2. Utilizează o procedură certă.
  3. Este independent de orice limbaj de programare, de aceea este ușor de înțeles pentru oricine, chiar și fără cunoștințe de programare.
  4. Fiecare pas are secvența logică proprie, prin urmare, este ușor de depanat.
  5. Folosind algoritmul, problema este defalcată în bucăți sau pași mai mici, prin urmare, este mai ușor pentru un programator să-l transforme într-un program real

Aptitudini necesare

Pentru a proiecta un algoritm robust și cel mai bun de complexitate a timpului, trebuie să fie o gândire logică bună și ar trebui să fie bună la matematică și să cunoască cel puțin un limbaj de programare orientat pe obiecte. Cunoașterea structurii datelor este, de asemenea, necesară.

  1. Calculatoare - Aflați despre tablouri, liste legate, arbori binari, tabele hash, grafice, stive, cozi, grămezi și alte structuri de date fundamentale.
  2. Matematică - Aflați despre teoria seturilor, mașini în stare finită, expresii obișnuite, înmulțirea matricei, operațiunile în bit, rezolvarea ecuațiilor liniare și alte concepte importante, cum ar fi permutările, combinațiile, principiul găurilor de porumbei
  3. Big-O & Runtime - Aflați ce este Big-O și cum să analizați timpul de rulare al algoritmilor.

De ce ar trebui să folosim și de ce avem nevoie de un algoritm?

Unul ar trebui să folosească algoritmul deoarece ne ușurează treaba și ne oferă cea mai optimă soluție. Dacă nu aplicăm un algoritm înainte de a rezolva vreo problemă complexă, există șanse mari să mergem fără direcție în ceea ce privește o soluție. Cu algoritmul ne economisim timpul în rezolvarea problemelor și ne asigurăm că optimitatea algoritmului soluției, așa cum s-a spus mai devreme, este independentă de orice limbaj de programare, astfel încât oricine poate proiecta un algoritm, dar pentru a proiecta un algoritm cu adevărat bun. fii bun la logică și matematică. Servește ca prototip al unei soluții.

De exemplu, imaginați-vă că avem doi cuburi ai lui Rubik în fața noastră. Unul dintre ei are voie să folosești algoritmi (de câte ori sau în ce direcție pentru a întoarce o față), iar celălalt trebuie să-ți găsești propria cale. Ce mod va fi mai rapid? Cu siguranță, va fi primul.

Să luăm un exemplu interesant:

Să spunem că avem o serie de elemente și am dori să le sortăm în ordine crescătoare. Acum există o abordare algoritmică diferită. Ne vom concentra asupra complexității temporale a 2 dintre ele: sortare inserție și sortare Merge

Sortare inserție: Sortarea inserției este o sortare simplă.
(Complexitatea timpului este O (N 2).)

Sortare combinată : În sortare îmbinare, sortăm elementele folosind metoda Divide și cucerire.
Complexitatea timpului este O (N log N).

Acesta ar putea fi impactul pe care l-ați întâmpina dacă nu urmați și nu efectuați o analiză asupra acesteia.

Domeniul de algoritm

Învățând și stăpânind algoritmul, cunoașteți arta „Rezolvarea problemelor”. Cu o bună practică și învățare continuă, ar trebui să fii capabil să rezolvi probleme complexe. Este baza proiectării unei piese de software sau cod, deoarece timpul de execuție al codului este unul dintre cei mai importanți factori în determinarea executării unei anumite sarcini. Giganți tehnici ai lumii, cum ar fi Google și Facebook, îți evaluează abilitățile de rezolvare a problemelor și în interviuri, majoritatea întrebărilor sunt legate de proiectarea algoritmului și de rezolvare a problemelor. Vi se va cere să proiectați un algoritm și să-l optimizați în cel mai bun timp posibil de complexitate.

Puține puncte:

  • Acest lucru vă va îmbunătăți abilitățile de rezolvare a problemelor, ceea ce vă va conduce să concurați mai bine la interviuri sau examene online
  • Vă veți reduce timpul în rezolvarea oricărei probleme.
  • Aproape toți giganții tehnologici angajează candidați pe baza abilităților lor mai bune de soluționare a problemelor
  • Se poate scoate la maxim un limbaj de programare învățând cum să construiți și să proiectați un algoritm

Cine este publicul potrivit pentru învățarea tehnologiilor Algoritmului?

Din punct de vedere al informaticii, oricine care face puțin sau mai multe programări ar trebui să învețe algoritmi. Dacă scrieți cod care nu rezolvă problema dvs. sau dacă rezolvă problema, dar utilizează resurse ineficient (de exemplu, este nevoie de mult timp pentru a rula sau utilizează prea multă memorie a computerului), atunci codul dvs. nu este cel optim . Dar companiile ar dori ca software-ul sau produsele lor să răspundă sau să le execute în cel mai mic timp posibil.

Oricine dezvoltă ceva ar trebui să învețe cum să facă o analiză pe un algoritm pentru a asigura funcționarea optimă a produsului final.

Cum te va ajuta algoritmul în creșterea carierei?

Proiectarea și analiza unui algoritm nu este un rol (specific), dar vine ca o parte a jobului tău, iar această parte joacă un rol vital în elaborarea codurilor. Dacă proiectați un algoritm bun, veți scrie coduri bune cu o soluție optimă și, în cele din urmă, produsul final care este livrat clienților excelează. Deci, dacă proiectați și / sau dezvoltați software, atunci cunoștințele și experiența cu structuri și algoritmi de date sunt esențiale. Să spunem că lucrați la un produs de dezvoltare software, răspunsul la acesta ar trebui să fie testat minuțios (bineînțeles, ați dori să verificați timpul de rulare a procesului înainte de a preda codul echipei de testare software), iar acest lucru nu este un lucru pe care l-ați putea ghiciți cu exactitate în prealabil, dar trebuie să folosiți analiza unui algoritm pentru a calcula complexitatea timpului.

Concluzie

Așa cum am văzut o descriere introductivă a algoritmilor și a diferitelor sale aspecte și am văzut că ar putea exista abordări diferite pentru a rezolva o anumită problemă, iar Big-O și complexitatea timpului sunt parametrii care ne ajută să alegem cea mai optimă soluție. Explorând un număr bun de algoritmi, veți deveni fundamental puternic în analiza algoritmului și ar trebui să puteți proiecta și rula analiza pe algoritm cu ușurință.

Articole recomandate

Acesta a fost un ghid pentru Ce este un algoritm. Aici am discutat funcționarea algoritmilor cu exemple și diferitele sale aspecte. Puteți parcurge și alte articole sugerate pentru a afla mai multe -

  1. Ce este Tableau Server?
  2. Ghid pentru analiza datelor mari
  3. Ce este SQL Developer?
  4. Ce este Informatica