Kaj je algoritem? - Delo algoritmov s primeri

Kazalo:

Anonim

Kaj je algoritem?

Gre za zaporedje pravil / navodil, ki so opisana pred pristopom k reševanju katere koli posebne težave, garancije za rešitev težave. Na primer, vzemite primer železniške točke.
Algoritem mora:

  • Bodite dobro opredeljeni in urejeni - Navodila v algoritmu morajo biti razumljiva in dobro definirana.
  • Zagotovite nedvoumne operacije, tj. Vsak korak algoritma mora biti dovolj preprost, da morda ne bo potrebno nadaljnje poenostavitve
  • Učinkovito izračunati operacijo.

Vir slike: d262ilb51hltx0.cloudfront.net/

Razumevanje algoritma

Vir slike : goo.gl/images/u76bFe

Obstaja senzor, ki zazna prihod vlaka, katerega izhod bi lahko bil 2 rezultata

  • Vlak prihaja
  • Vlak ne prihaja

Rezultat prvega izida se prenese na dejanje, kjer svetuje zapiranje vrat, medtem ko se rezultat drugega izida ponovno preizkusi tako, da ga pošlje v začetno izjavo. Poleg tega se rezultat ukrepanja, ki je bil rezultat prvega pogoja, preskusi, da se preveri, ali je vlak popolnoma odšel. Če je odgovor pritrdilen, se vrata odprejo, medtem ko so negativna, vrata ostanejo zaprta. O tem bomo več razpravljali in delali z naslednjimi temami (Podmnožja / gradniki in algoritem)

Kako algoritem olajša delo?

Kot vemo, gre za načrt za rešitev problema. No, če nimamo načrta, bi naš pristop k reševanju zapletenega problema morda spodletel že v prvem poskusu in četudi bi težavo rešil, je zelo malo možnosti, da bo to optimalna rešitev.

Čeprav na drugi strani, če izdelamo algoritem, preden rešimo katerokoli težavo, recimo, da ustvarimo malo algoritmov in jih razvrstimo na podlagi optimalne rešitve, ki jo ponujajo, bi zagotovilo, da rešimo dani problem. To je razlog, da povsod, preden rešimo katero koli težavo, najprej izdelamo algoritem.

Najboljša podjetja za razvoj algoritmov

Izdelava odličnega izdelka zahteva res dober načrt, čeprav ne moremo primerjati algoritma za dve različni težavi, kar lahko storimo, je, da naštejemo imena podjetij, ki so v ta svet v 21. stoletju dostavila nekaj odličnih izdelkov:

  • DeepMind
  • Baidu
  • Nvidia
  • CloudWalk
  • SenseTime
  • Google
  • Facebook
  • Temna sled
  • Kambrijski
  • IBM
  • OpenAI
  • ByteDance
  • CrowdStrike
  • Zebra Medical Vision
  • Babilon
  • Intel
  • Flatiron Health
  • Potrdi
  • Na začetku
  • Element AI
  • CloudMinds
  • DataRobot
  • Anki
  • Zymergen
  • UBTECH

Vir: algoritemxlab.com/

Podmnožja / gradniki in delovanje algoritma

Vsa ta leta je bilo dokazano, da lahko algoritem oblikujemo iz samo treh gradnikov:

  • Zaporedje
  • Izbor
  • Iteracija


Vir slik : https://goo.gl/

Zaporedje je niz navodil, ki jih je treba upoštevati, da se reši težava, in navodila je treba izvajati po vrstnem redu.

Primeri

1. Dodajanje dveh števil

1. korak: Začnite
2. korak: dobite dve številki kot vhod in shranite v spremenljivki kot a in b
3. korak: Dodajte številko a & b in shranite v spremenljivko c
4. korak: Natisnite c
5. korak: Ustavite se.

Izbor je program, ki nam omogoča, da izberemo izhod iz različnih dejanj. Kot smo že videli na primeru železniških vrat, smo imeli pogojno okence, kjer je bilo preverjanje, ali vlak prihaja.

2. Poiščite največjo med 2 štev

1. korak: Začnite
2. korak: dobite dve številki kot vhod in shranite v spremenljivki kot a in b
3. korak: Če je a večji od b, potem
4. korak: Tiskanje a je veliko
5. korak: ostalo
6. korak: Tiskanje b je veliko
S tep 7: Ustavite se

Ponavljanje ali iteracija ali zanka so manjši programi, ki se izvajajo večkrat, dokler pogoj ni izpolnjen.

3. Če bi radi izračunali faktografsko število

1. korak : Začnite
2. korak : Objavite spremenljivke n, faktorije in i
3. korak : Inicializirajte spremenljivki, tj. Faktororialß1 in iß1
4. korak: preberite vrednosti n
5. korak: Ponavljajte korake do n iteracij
faktororial <- faktororial * i
i <- i + 1
6. korak: Prikaži faktor
7. korak: Nehajte

Kaj lahko naredite z algoritmom?

Gre za funkcijo ali vrsto funkcij, ki rešujejo težavo. Z algoritmom lahko rešimo najpreprostejšo težavo in tudi nekatere najtežje težave na svetu. Odločili smo se, da je s pomočjo »časovne zapletenosti« optimalen. Preprosto povedano, časovna zapletenost je način opisovanja časa izvajanja katerega koli danega algoritma. Obstaja minimalni čas teka (imenovan malo 'O'), povprečni čas izvajanja in najslabši čas trajanja O (N) (znan tudi kot velik 'O'). Računalniki in programski inženirji radi razmišljajo o algoritmih, ker jih zanima ocenjevanje in oblikovanje zbirk najboljših praks, da jim ni treba začeti iz nič na vsakem primeru podobnega razreda težav. Spodaj je primer različnih časovnih zapletenosti, ki bi jih človek lahko dobil med reševanjem določene težave. To pomeni tudi, da lahko za en problem obstaja več rešitev, vendar moramo izbrati najbolj optimalno z izračunom časovne zapletenosti algoritmov. V intervjujih boste morali rešiti težavo, poleg tega pa boste morali optimizirati to, tj. Zmanjšati čas delovanja algoritma. Na primer, morda ste napisali kodo z dvema zankama "za" (iteracija), vendar je mogoče, da je delo mogoče doseči samo z eno samo zanko "za" (iteracija), vendar vam ta rešitev ni bila všeč vendar morate ugotoviti več!

Vir slik: https://goo.gl/

Prednosti algoritma

  1. Gre za postopno predstavitev rešitve vsakega danega problema, ki omogoča enostavno razumevanje.
  2. Uporablja določen postopek.
  3. Neodvisen je od katerega koli programskega jezika, zato ga je enostavno razumeti za vsakogar, tudi brez programskega znanja.
  4. Vsak korak ima svoje logično zaporedje, zato je enostavno odpravljanje napak.
  5. Z uporabo algoritma je težava razčlenjena na manjše koščke ali korake, zato jo programer lažje pretvori v dejanski program

Zahtevane veščine

Za načrtovanje robustnega in najboljšega algoritma zapletenosti časa je treba imeti dobro logično razmišljanje in biti dober pri matematiki ter poznati vsaj en objektno usmerjen programski jezik. Potrebno je tudi poznavanje strukture podatkov.

  1. Računalniki - Spoznajte matrike, povezane sezname, binarna drevesa, hash tabele, grafe, sklade, čakalne vrste, množice in druge temeljne strukture podatkov.
  2. Matematika - Spoznajte teorijo množic, stroje s končnimi stanji, pravilne izraze, množenje matrice, bitne operacije, reševanje linearnih enačb in druge pomembne koncepte, kot so permutacije, kombinacije, princip golobničk.
  3. Big-O & Runtime - Naučite se, kaj je Big-O in kako analizirati čas delovanja algoritmov.

Zakaj bi morali uporabljati in zakaj potrebujemo algoritem?

Morali bi uporabiti algoritem, saj nam olajša delo in nam nudi najbolj optimalno rešitev. Če pred reševanjem katerega koli zapletenega problema ne uporabimo algoritma, obstaja velika verjetnost, da bomo šli brez rešitve v smislu rešitve. Z algoritmom prihranimo svoj čas pri reševanju težav in zagotovimo, da je algoritem rešitve, kot že rečeno, neodvisen od katerega koli programskega jezika, zato lahko algoritem oblikuje vsakdo, a da bi lahko ustvaril res dober algoritem, bi moral bodi dober pri logiki in matematiki. Služi kot prototip rešitve.

Predstavljajte si na primer, da imamo pred seboj dve Rubikovi kocki. Eden od njih lahko uporabljate algoritme (na primer kolikokrat ali v katero smer obrnete obraz), drugi pa morate najti svojo pot. Kateri način bo hitrejši? Zagotovo bo prva.

Vzemimo zanimiv primer:

Recimo, da imamo paleto elementov in bi jih radi razvrstili po naraščajočem vrstnem redu. Zdaj obstaja drugačen algoritmični pristop do tega. Osredotočili se bomo na časovno zapletenost dveh od njih: vrsta vstavitve in združevanje

Vstavljanje vrst: Vstavljanje vrst je preprosto razvrščanje.
(Časovna zapletenost je O (N 2).)

Razvrsti združevanje: V razvrstitvi združevanja elemente razvrstimo po metodi Divide and conquer.
Časovna zahtevnost je O (N log N).

To bi lahko bil učinek, s katerim bi se srečali, če ne sledite in ne opravite analize.

Obseg algoritma

Z učenjem in obvladovanjem algoritma bi spoznali umetnost reševanja problemov. Z dobro prakso in nenehnim učenjem bi morali biti sposobni reševati zapletene težave. Je osnova za oblikovanje dela programske opreme ali kode, saj je čas delovanja kode eden najpomembnejših dejavnikov pri določanju izvedbe določene naloge. Svetovni tehnični velikani, kot sta Google in Facebook, presojajo vaše sposobnosti reševanja problemov in v intervjujih je večina vprašanj povezanih z načrtovanjem algoritmov in reševanjem problemov. Od vas se bo pozval, da oblikujete algoritem in ga optimizirate do najboljše možne zapletenosti.

Nekaj ​​točk:

  • Tako boste izboljšali svoje sposobnosti reševanja težav, zaradi katerih boste lahko bolje tekmovali na razgovorih ali spletnih izpitih
  • Zmanjšali si boste čas pri reševanju katere koli težave.
  • Skoraj vsi tehnološki velikani najamejo kandidate na podlagi njihovih boljših spretnosti reševanja problemov
  • Iz programskega jezika lahko največ izkoristite tako, da se naučite konstruirati in oblikovati algoritem

Kdo je pravo občinstvo za učenje tehnologij Algoritma?

Z vidika računalništva naj se algoritmi naučijo vsi, ki delajo malo ali več programov. Če napišete kodo, ki ne reši vaše težave ali če reši težavo, vendar porablja vire neučinkovito (na primer traja dolgo časa ali porabi preveč računalniškega pomnilnika), potem vaša koda ni najboljša . Vendar bi podjetja želela, da se njihova programska oprema ali izdelki odzovejo ali izvedejo v najkrajšem možnem času.

Vsak, ki nekaj razvija, bi se moral naučiti, kako narediti analizo algoritma, da bi zagotovil optimalno delovanje končnega izdelka.

Kako vam bo algoritem pomagal pri karierni rasti?

Oblikovanje in analiza algoritma ni vloga (specifična), ampak je del vaše naloge in ta del ima ključno vlogo pri razvoju kode. Če oblikujete dober algoritem, boste napisali dobre kode z optimalno rešitvijo in sčasoma se bo vaš končni izdelek, ki ga kupcem dostavite, odlikoval. Če torej oblikujete in / ali razvijate programsko opremo, sta znanje in izkušnje s podatkovnimi strukturami in algoritmi bistvenega pomena. Recimo, da delate na izdelku za razvoj programske opreme, odziv nanj je treba temeljito preizkusiti (seveda želite preveriti čas delovanja, preden kodo predal ekipi za testiranje programske opreme) in to ni nekaj, kar bi lahko predhodno ugibajte skoraj natančno, vendar morate za izračun časovne zapletenosti uporabiti analizo algoritma.

Zaključek

Tako kot smo videli uvodni opis algoritmov in njegovih različnih vidikov in videli smo, da lahko obstajajo različni pristopi k reševanju določene težave, zapletenost Big-O in Time pa sta parametra, ki nam pomagata izbrati najbolj optimalno rešitev. Z raziskovanjem lepega števila algoritmov boste v analizi algoritma v bistvu postali močni in lahko boste z lahkoto oblikovali in izvajali analizo po algoritmu.

Priporočeni članki

To je vodnik za kaj so algoritmi. Tu smo obravnavali delovanje algoritmov s primeri in njegove različne vidike. Če želite izvedeti več, lahko preberete tudi druge naše predlagane članke -

  1. Kaj je Tableau Server?
  2. Vodnik po veliki analitiki podatkov
  3. Kaj je SQL Developer?
  4. Kaj je Informatica