Što je algoritam? - Rad s algoritmima s primjerima

Sadržaj:

Anonim

Što je algoritam?

To je slijed pravila / uputa koji su izloženi prije nego što se pristupi rješavanju bilo kojeg specifičnog problema, garancija za rješenje problema. Na primjer, uzmimo primjer točke željezničke kapije.
Algoritam treba:

  • Budite dobro definirani i dobro organizirani - Upute date u algoritmu trebaju biti razumljive i dobro definirane.
  • Imati nedvosmislene operacije, tj. Svaki korak koraka algoritma trebao bi biti dovoljno jednostavan da možda neće trebati daljnje pojednostavljenje
  • Imati učinkovito izračunati rad.

Izvor slike: d262ilb51hltx0.cloudfront.net/

Razumijevanje algoritma

Izvor slike : goo.gl/images/u76bFe

Postoji senzor koji osjeti dolazak vlaka, čiji bi izlaz mogao biti 2 rezultata

  • Vlak stiže
  • Vlak ne stiže

Rezultat prvog ishoda prelazi se u radnju gdje se savjetuje da se zatvori vrata, dok se rezultat drugog ishoda opet stavi na test tako što se pošalje u početnu izjavu. Nadalje, rezultat akcije koja je bila rezultat prvog uvjeta stavlja se na test kako bi se provjerilo je li vlak potpuno krenuo. Ako je odgovor potvrdan, vrata se otvaraju, a ako je negativan, vrata ostaju zatvorena. O tome ćemo više raspravljati i raditi sa slijedećim temama (Podskupovi / Građevinski blokovi i rad algoritma)

Kako algoritam olakšava posao?

Kao što znamo, ovo je plan za rješenje problema. Pa, ako nemamo plan, naš pristup rješavanju složenog problema vjerojatno bi propao u prvom pokušaju, a čak i ako riješi problem, vrlo su male šanse da će to biti optimalno rješenje za taj problem.

S druge strane, ako kreiramo algoritam prije nego što riješimo bilo koji problem, recimo da stvorimo nekoliko algoritama i razvrstamo ih na temelju optimalnog rješenja koje oni pružaju, to bi garantirano riješilo zadani problem. To je razlog zašto se svugdje, prije rješavanja bilo kojeg problema, najprije izrađuje algoritam.

Najbolje tvrtke za razvoj algoritama

Izgradnja sjajnog proizvoda zahtijeva zaista dobar dizajn iako ne možemo usporediti algoritam za dva različita problema, ono što možemo učiniti je navesti imena tvrtki koje su u 21. stoljeće donijele izvrsne proizvode u ovaj svijet:

  • DeepMind
  • Baidu
  • Nvidia
  • CloudWalk
  • SenseTime
  • Google
  • Facebook
  • Darktrace
  • velški
  • IBM
  • OpenAI
  • ByteDance
  • CrowdStrike
  • Zebra Medical Vision
  • Vavilon
  • Intel
  • Flatiron Health
  • Potvrditi
  • Laktaš
  • Element AI
  • CloudMinds
  • DataRobot
  • Anki
  • Zymergen
  • UBTECH

Izvor: algoritamxlab.com/

Podskupovi / građevni blokovi i funkcioniranje algoritma

Sve ove godine dokazano je da se algoritam može konstruirati iz samo tri građevinska bloka:

  • slijed
  • Izbor
  • ponavljanje


Izvor slike : https://goo.gl/

Niz je niz uputstava koja se moraju poštivati ​​kako bi se riješio problem i upute bi trebalo izvoditi po redoslijedu.

Primjeri

1. Zbrajanje dva broja

1. korak: Počnite
Korak 2: Uzmite dva broja kao unos i pohranite u varijablu kao a i b
Korak 3: Dodajte broj a & b i pohranite u varijablu c
4. korak: ispis c
5. korak: Zaustavite se.

Izbor je program koji nam omogućuje odabir rezultata iz različitih radnji. Kao što smo vidjeli u primjeru željezničkih vrata, imali smo uvjetnu kutiju u kojoj se provjeravalo dolazi li vlak.

2. Pronađite najveći među 2 broja

1. korak: Počnite
Korak 2: Uzmite dva broja kao unos i pohranite u varijablu kao a i b
Korak 3: Ako je a veći od b, tada
Korak 4: Ispis a je velik
Korak 5: ostalo
Korak 6: Ispis b je velik
S tep 7: Stani

Ponavljanje ili iteracija ili petlja manji su programi koji se izvode nekoliko puta dok se uvjet ne ispuni.

3. Ako želimo izračunati faktore broja

1. korak : započnite
Korak 2 : Deklarirajte varijable n, faktorije i i
Korak 3 : Inicijalizirajte varijable tj. Faktorijel1 i i1
Korak 4: Pročitajte vrijednosti n
Korak 5: Ponavljajte korake do n iteracije
faktografski <- faktografski * i
i <- i + 1
6. korak: prikažite faktorije
7. korak: Zaustavite se

Što možete učiniti s algoritmom?

To je funkcija ili niz funkcija koji rješavaju problem. Pomoću algoritma možemo riješiti najjednostavniji problem kao i neke od najtežih problema na svijetu. Odlučujemo da je optimalna uz pomoć "vremenske složenosti". Jednostavno rečeno, vremenska složenost je način opisivanja vremena izvođenja bilo kojeg algoritma. Postoji minimalno vrijeme izvođenja (koje se naziva malo 'O'), prosječno vrijeme izvođenja i najgore vrijeme O (N) (također poznato kao veliko 'O'). Računalski znanstvenici i softverski inženjeri vole razmišljati o algoritmima jer su zainteresirani za ocjenu i izgradnju zbirki najboljih praksi kako ne bi morali početi ispočetka na svakoj instanci slične klase problema. Ispod je primjer različitih vremenskih složenosti koje biste mogli dobiti tijekom rješavanja određenog problema. To također znači da može postojati više rješenja za jedan problem, ali moramo odabrati najoptimalnije rješenje izračunavanjem složenosti algoritama. U razgovorima će se od vas tražiti da riješite problem, a osim toga, od vas će se tražiti da ga optimizirate tj. Da smanjite vrijeme rada vašeg algoritma. Na primjer, možda ste napisali kôd s 2 petlje "za" (iteracija), ali moguće je da se posao može postići samo jednim "za" petljom (iteracija), ali niste bili upoznati s ovim rješenjem a ipak trebate shvatiti više!

Izvor slike: https://goo.gl/

Prednosti algoritma

  1. To je detaljni prikaz rješenja bilo kojeg problema, što ga čini lako razumljivim.
  2. Koristi određeni postupak.
  3. Neovisan je o bilo kojem programskom jeziku, pa ga je lako razumjeti svakome čak i bez poznavanja programa.
  4. Svaki korak ima svoj logički slijed, pa je lako uklanjanje pogrešaka.
  5. Upotrebom algoritma problem se razgrađuje na manje dijelove ili korake, pa je programer lakše pretvoriti u stvarni program

Potrebne vještine

Da bi se konstruirao robustan i najbolji algoritam složenosti vremena, mora biti dobro logično razmišljanje, matematika bi trebala biti dobra i znati barem jedan objektno orijentirani programski jezik. Potrebno je i poznavanje strukture podataka.

  1. Računala - Saznajte o nizovima, povezanim popisima, binarnim stablima, hash tablicama, grafikonima, hrpama, redovima, hrpama i drugim temeljnim strukturama podataka.
  2. Matematika - Naučite o teoriji skupa, strojevima s konačnim stanjem, pravilnim izrazima, množenju matrice, bitnim operacijama, rješavanju linearnih jednadžbi i drugim važnim pojmovima kao što su permutacije, kombinacije, princip golubova.
  3. Big-O & Runtime - Saznajte što je Big-O i kako analizirati vrijeme rada algoritama.

Zašto bismo trebali koristiti i zašto nam treba algoritam?

Treba koristiti algoritam jer nam olakšava posao i pruža nam najoptimalnije rješenje. Ako ne primijenimo algoritam prije nego što riješimo bilo koji složeni problem, velike su šanse da ćemo ići bez smjera u smislu rješenja. Pomoću algoritma štedimo svoje vrijeme u rješavanju problema i osiguravamo da je optimalnost algoritma rješenja, kao što je ranije rečeno, neovisna o bilo kojem programskom jeziku, tako da svatko može dizajnirati algoritam, ali kako bi se dizajnirao stvarno dobar algoritam, budi dobar u logici i matematici. Služi kao prototip rješenja.

Na primjer, zamislite da pred sobom imamo dvije Rubikove kocke. Jedan od njih možete koristiti algoritme (poput broja puta ili u kojem smjeru da biste okrenuli lice), a drugi morate pronaći svoj put. Koji će put biti brži? Svakako, bit će to prvi.

Uzmimo jedan zanimljiv primjer:

Recimo da imamo niz elemenata i željeli bismo ih sortirati uzlaznim redoslijedom. Sada postoji drugačiji algoritamski pristup tome. Usredotočit ćemo se na složenost vremena njih 2: sortiranje umetanja i spajanje sortiranja

Umetanje sortiranje: Umetanje vrsta je jednostavno sortiranje.
(Vremenska složenost je O (N 2).)

Spajanje sortiranja: U spajanju sortiramo elemente sortiramo pomoću metode Divide and conquer.
Vremenska složenost je O (N log N).

To bi mogao biti utjecaj na koji naiđete ako ne slijedite i ne izvršite analizu.

Opseg algoritma

Učenjem i savladavanjem algoritma znali biste umijeće rješavanja problema. Uz dobru praksu i kontinuirano učenje trebali biste biti u mogućnosti riješiti složene probleme. Osnova je dizajniranja nekog dijela softvera ili koda jer je vrijeme izvođenja koda jedan od najvažnijih čimbenika u određivanju izvršenja određenog zadatka. Svjetski tehnološki divovi poput Googlea i Facebooka ocjenjuju vaše vještine rješavanja problema, a u intervjuima se većina pitanja odnosi na dizajn algoritama i rješavanje problema. Od vas će se tražiti da napravite algoritam i optimizirate ga prema najboljem mogućem vremenu složenosti.

Nekoliko bodova:

  • To će poboljšati vaše vještine rješavanja problema zbog kojih ćete se bolje natjecati na intervjuima ili internetskim ispitima
  • Smanjit ćete svoje vrijeme u rješavanju bilo kojeg problema.
  • Gotovo svi tehnološki divovi zapošljavaju kandidate na temelju njihovih boljih vještina rješavanja problema
  • Iz programskog jezika se može najviše iskoristiti ako se nauči konstruirati i dizajnirati algoritam

Tko je prava publika za učenje tehnologija algoritma?

Iz perspektive informatike, svatko tko radi malo ili više programiranja trebao bi učiti algoritme. Ako napišete kôd koji ne rješava vaš problem, ili ako on rješava problem, ali neiskorišteno koristi resurse (na primjer, dugo je potrebno pokrenuti ili koristi previše računalne memorije), tada vaš kôd nije optimalan, No tvrtke bi htjele da njihov softver ili proizvodi reagiraju ili se izvrše u najkraćem mogućem roku.

Svi koji nešto razvijaju trebali bi naučiti kako napraviti analizu algoritma kako bi se osiguralo optimalno funkcioniranje krajnjeg proizvoda.

Kako će vam algoritam pomoći u rastu karijere?

Dizajn i analiza algoritma nije uloga (specifična), ali dolazi kao dio vašeg posla i taj dio igra vitalnu ulogu u razvoju koda. Ako osmislite dobar algoritam, napisat ćete dobre kodove s optimalnim rješenjem i na kraju će vaš krajnji proizvod koji isporučimo kupcima uspjeti. Dakle, ako dizajnirate i / ili razvijate softver, tada su znanje i iskustvo s podatkovnim strukturama i algoritmima ključno. Recimo da radite na proizvodu za razvoj softvera, njegov odgovor treba temeljito ispitati (naravno da želite provjeriti vrijeme rada prije predaje koda timu za testiranje softvera) i to nije nešto što biste mogli prethodno pretpostavite gotovo točno, ali za izračunavanje vremenske složenosti morate koristiti analizu algoritma.

Zaključak

Kao što smo vidjeli uvodni opis algoritama i njegovih različitih aspekata, te smo vidjeli da mogu postojati različiti pristupi rješavanju određenog problema, a složenost Big-O i Time su parametri koji nam pomažu u odabiru najoptimalnijeg rješenja. Istražujući dobar broj algoritama u osnovi ćete postati jaki u analizi algoritma i trebali biste biti lako dizajnirati i pokrenuti analizu algoritma.

Preporučeni članci

Ovo je vodič za Što su algoritmi. Ovdje smo raspravljali o radu algoritama s primjerima i njezinim različitim aspektima. Možete i proći naše druge predložene članke da biste saznali više -

  1. Što je Tableau Server?
  2. Vodič za analizu velikih podataka
  3. Što je SQL Developer?
  4. Što je Informatica