Mikä on algoritmi? - Algoritmien käyttäminen esimerkkien kanssa

Sisällysluettelo:

Anonim

Mikä on algoritmi?

Se on sarja sääntöjä / ohjeita, jotka hahmotellaan ennen lähestymistapaa tietyn ongelman ratkaisemiseksi, takuita ongelman ratkaisemiseksi. Otetaan esimerkiksi esimerkki rautatieportin kohdasta.
Algoritmin tulisi:

  • Ole hyvin määritelty ja hyvin tilattu - Algoritmissa annettujen ohjeiden tulee olla ymmärrettäviä ja hyvin määriteltyjä.
  • Suorita yksiselitteiset toiminnot, ts. Jokaisen algoritmin vaiheen tulisi olla riittävän yksinkertainen, ettei se välttämättä vaadi lisä yksinkertaistamista
  • Onko tehokkaasti laskettava toiminta.

Kuvalähde : d262ilb51hltx0.cloudfront.net/

Algoritmin ymmärtäminen

Kuvalähde: goo.gl/images/u76bFe

On anturi, joka tunnistaa junan saapumisen, jonka lähtö voi olla 2 tulosta

  • Juna on saapumassa
  • Juna ei saavu

Ensimmäisen tuloksen tulos siirretään toimintaan, jossa se neuvoo sulkemaan portit, kun taas toisen tuloksen tulos testataan jälleen lähettämällä se alkuperäiseen lausuntoon. Lisäksi toiminnon tulos, joka oli ensimmäisen ehdon seurauksena, asetetaan testiin, jolla varmistetaan, onko juna kokonaan poistunut. Jos vastaus on kyllä, portit avataan, ja jos vastaus on kielteinen, portit pysyvät kiinni. Keskustelemme lisää tästä ja työskentelemme seuraavien aiheiden kanssa (alaryhmät / rakennuspalikat ja algoritmin toiminta)

Kuinka algoritmi tekee työstä helppoa?

Kuten tiedämme, tämä on suunnitelma ongelman ratkaisemiseksi. No, jos meillä ei ole suunnitelmaa, lähestymistapamme monimutkaisen ongelman ratkaisemiseksi epäonnistuu mahdollisesti ensimmäisellä yrityksellä, ja vaikka se ratkaisee ongelman, todennäköisyys on hyvin pieni, että se on optimaalinen ratkaisu tähän ongelmaan.

Toisaalta, jos luomme algoritmeja ennen minkään ongelman ratkaisemista, sanotaan, että luomme muutamia algoritmeja ja lajittelemme ne niiden tarjoaman optimaalisen ratkaisun perusteella, se takaa tietyn ongelman ratkaisemisen. Tästä syystä ensin luodaan algoritmi ennen minkään ongelman ratkaisemista.

Parhaat algoritmien kehitysyritykset

Upea tuotteen rakentaminen vaatii todella hyvää suunnittelua, vaikka emme voi verrata algoritmia kahdelle erilaiselle ongelmalle, mitä voimme tehdä, on luetella niiden yritysten nimet, jotka ovat toimittaneet erinomaisia ​​tuotteita tähän maailmaan 2000-luvun aikana:

  • DeepMind
  • Baidu
  • nvidia
  • CloudWalk
  • SenseTime
  • Google
  • Facebook
  • Darktrace
  • kambrikausi
  • IBM
  • OpenAI
  • ByteDance
  • CrowdStrike
  • Seepra lääketieteellinen visio
  • Babylon
  • Intel
  • Flatiron terveys
  • Lujita
  • Nousukas
  • Elementti AI
  • CloudMinds
  • DataRobot
  • Anki
  • Zymergen
  • ubtech

Lähde: algorithmxlab.com/

Osajoukot / rakennuspalikat ja algoritmin toiminta

Kaikkien näiden vuosien aikana on osoitettu, että algoritmi voidaan suunnitella vain kolmesta rakennuspalikasta:

  • järjestys
  • Valinta
  • iteraatio


Kuvalähde : https://goo.gl/

Jakso on sarja ohjeita, joita on noudatettava ongelman ratkaisemiseksi, ja ohjeet tulisi suorittaa järjestyksessä.

esimerkit

1. Kaksi numeroa lisätään

Vaihe 1: Aloita
Vaihe 2: Hanki kaksi numeroa syötteenä ja tallenna muuttujaan a ja b
Vaihe 3: Lisää luku a & b ja tallenna muuttujaan c
Vaihe 4: Tulosta c
Vaihe 5: lopeta.

Valinta on ohjelma, jonka avulla voimme valita tulosteen eri toiminnoista. Kuten olemme aiemmin nähneet rautateiden portti-esimerkissä, meillä oli ehdollinen laatikko, jossa tarkistettiin, saapuuko juna.

2. Löydä suurin kahden numeron joukosta

Vaihe 1: Aloita
Vaihe 2: Hanki kaksi numeroa syötteenä ja tallenna muuttujaan a ja b
Vaihe 3: Jos a on suurempi kuin b sitten
Vaihe 4: Tulosta a on iso
Vaihe 5: muuten
Vaihe 6: Tulosta b on iso
7. syyskuu: Lopeta

Toisto tai toisto tai silmukka ovat pienempiä ohjelmia, jotka suoritetaan useita kertoja, kunnes ehto täyttyy.

3. Jos haluaisimme laskea luvun tekijän

Vaihe 1 : Aloita
Vaihe 2 : Ilmoita muuttujat n, tekijä ja i
Vaihe 3 : Alusta muuttujat eli factorialß1 ja iß1
Vaihe 4: Lue arvot n
Vaihe 5: Toista vaiheet, kunnes n toistoa
factorial <- factorial * i
i <- i + 1
Vaihe 6: Näytä tekijä
Vaihe 7: lopeta

Mitä voit tehdä algoritmilla?

Se on toiminto tai toimintasarja, joka ratkaisee ongelman. Pystymme algoritmin avulla ratkaisemaan yksinkertaisimman ongelman sekä joitain vaikeimmista ongelmista maailmassa. Päätämme, että se on optimaalinen vaihtoehto ajan monimutkaisuuden avulla. Yksinkertaisesti sanottuna ajan monimutkaisuus on tapa kuvata minkä tahansa tietyn algoritmin ajonaika. On minimiajoaika (kutsutaan pieneksi 'O'), keskimääräinen ajoaika ja pahimmassa tapauksessa ajoaika O (N) (tunnetaan myös nimellä iso 'O'). Tietokonetieteilijät ja ohjelmistosuunnittelijat haluavat ajatella algoritmeja, koska he ovat kiinnostuneita arvioimaan ja rakentamaan parhaiden käytäntöjen kokoelmia, jotta heidän ei tarvitse aloittaa tyhjästä jokaisesta samanlaisen ongelmaluokan kohdasta. Alla on esimerkki erilaisista aikakomplekseista, joita voi saada tietyn ongelman ratkaisemisen yhteydessä. Tämä tarkoittaa myös, että samaan ongelmaan voi olla useita ratkaisuja, mutta meidän on valittava optimaalisin ratkaisu laskemalla algoritmien aikakompleksit. Haastatteluissa sinua pyydetään ratkaisemaan jokin ongelma ja lisäksi sinua kehotetaan optimoimaan se, ts. Vähentämään algoritmin ajoaikaa. Olet esimerkiksi saattanut kirjoittaa koodin 2 "for" -silmukalla (iteraatio), mutta voi olla mahdollista, että työ voidaan saavuttaa vain käyttämällä yhtä "for" -silmukkaa (iteraatio), mutta et ole vielä toiminut tämän ratkaisun parissa. vielä ja sinun täytyy selvittää lisää!

Kuvalähde: https://goo.gl/

Algoritmin edut

  1. Se on askel askeleelta ratkaisu mihin tahansa tiettyyn ongelmaan, mikä on helppo ymmärtää.
  2. Se käyttää tiettyä menettelyä.
  3. Se on riippumaton ohjelmointikielestä, joten se on helppo ymmärtää kenellekään ilman ohjelmointitietoa.
  4. Jokaisella vaiheella on oma looginen sekvenssi, joten siitä on helppo debugoida.
  5. Algoritmia käyttämällä ongelma hajoaa pienemmiksi paloiksi tai vaiheiksi, joten ohjelmoijan on helpompi muuntaa se todellinen ohjelma

Vaadittavat taidot

Jotta voitaisiin suunnitella kestävä ja paras aikakompleksisuusalgoritmi, on oltava hyvä looginen ajattelu, sen on oltava hyvä matematiikassa ja tunnettava ainakin yksi olio-ohjelmointikieli. Tietorakenteen tuntemusta tarvitaan myös.

  1. Tietokoneet - Tutustu taulukkoihin, linkitettyihin luetteloihin, binaaripuihin, hajataulukoihin, kaavioihin, pinoihin, jonoihin, kasoihin ja muihin perustietorakenteisiin.
  2. Matematiikka - Opi joukkoteoriasta, äärellisten tilakoneiden, säännöllisten lausekkeiden, matriisin kertolaskujen, bittioperaatioiden, lineaaristen yhtälöiden ratkaisemisen ja muiden tärkeiden käsitteiden, kuten permutaatioiden, yhdistelmien, nivelreikien periaatteen kanssa.
  3. Big-O & Runtime - Opi, mitä Big-O on ja kuinka analysoida algoritmien ajoaikoja.

Miksi meidän pitäisi käyttää ja miksi tarvitsemme algoritmia?

Algoritmia tulisi käyttää, koska se helpottaa työtämme ja tarjoaa meille optimaalisen ratkaisun. Jos emme käytä algoritmia ennen minkään monimutkaisen ongelman ratkaisemista, on olemassa suuri todennäköisyys, että siirrymme suunnattomaan ratkaisuun. Säästämme algoritmin avulla aikaa ongelmanratkaisussa ja varmistamme, että ratkaisualgoritmin optimaalisuus, kuten aiemmin sanottiin, on riippumaton mistä tahansa ohjelmointikielestä, joten kuka tahansa voi suunnitella algoritmin, mutta todella hyvän algoritmin suunnitteluun pitäisi Ole hyvä logiikassa ja matematiikassa. Se toimii ratkaisun prototyyppinä.

Kuvittele esimerkiksi, että meillä on edessämme kaksi Rubikin kuutiota. Yksi niistä saa käyttää algoritmeja (kuten kuinka monta kertaa tai mihin suuntaan kasvot käännetään), ja toinen sinun on löydettävä oma tapa. Mikä tapa on nopeampi? Varmasti se tulee olemaan ensimmäinen.

Otetaanpa mielenkiintoinen esimerkki:

Oletetaan, että meillä on joukko elementtejä ja haluamme lajitella ne nousevaan järjestykseen. Nyt siihen on olemassa toinen algoritminen lähestymistapa. Keskitymme 2: n ajan monimutkaisuuteen: lisäyslajittelu ja yhdistäminen

Lisäyslajittelu: Lisäyslajittelu on yksinkertainen lajittelu.
(Ajan monimutkaisuus on O (N 2).)

Yhdistä lajittelu: Yhdistetyssä lajittelussa lajittelemme elementit Divide and Conquer -menetelmällä.
Ajan monimutkaisuus on O (N log N).

Tämä voi olla vaikutus, joka kohdataan, jos et seuraa ja et analysoi sitä.

Algoritmin laajuus

Opiskelemalla ja hallitsemalla algoritmia, tunnet ongelmanratkaisun taiteen. Hyvien käytäntöjen ja jatkuvan oppimisen avulla sinun tulee pystyä ratkaisemaan monimutkaisia ​​ongelmia. Se on perustana jonkin ohjelmiston tai koodin suunnittelulle, koska koodin ajoaika on yksi tärkeimmistä tekijöistä määritettäessä tietyn tehtävän suorittamista. Maailman tekniikan jättiläiset, kuten Google ja Facebook, arvioivat ongelmanratkaisutaitosi ja haastatteluissa suurin osa kysymyksistä liittyy algoritmien suunnitteluun ja ongelmanratkaisuun. Sinua pyydetään suunnittelemaan algoritmi ja optimoimaan se parhaaseen mahdolliseen monimutkaisuusaikaan.

Muutamia pisteitä:

  • Tämä parantaa ongelmanratkaisutaitojasi, minkä ansiosta voit kilpailla paremmin haastatteluissa tai verkkokokeissa
  • Säästät vähemmän aikaa ongelmien ratkaisemisessa.
  • Lähes kaikki tekniikan jättiläiset palkkaavat ehdokkaita paremman ongelmanratkaisutaidon perusteella
  • Ohjelmointikielestä voi saada kaiken hyödyn oppimalla rakentamaan ja suunnittelemaan algoritmi

Kuka on oikea yleisö algoritmiteknologioiden oppimiseen?

Tietojenkäsittelytieteen kannalta kaikkien, jotka tekevät vähän tai enemmän ohjelmointia, tulisi oppia algoritmeja. Jos kirjoitat koodia, joka ei ratkaise ongelmaa, tai jos se ratkaisee ongelman, mutta käyttää resursseja tehottomasti (esimerkiksi suorittaminen vie paljon aikaa tai se käyttää liian paljon tietokoneen muistia), koodi ei ole optimaalinen. . Mutta yritykset haluaisivat, että heidän ohjelmistonsa tai tuotteensa reagoivat tai toteutuvat mahdollisimman vähän aikaa.

Jokaisen, joka kehittää jotain, tulisi oppia tekemään analyysi algoritmin avulla lopputuotteen optimaalisen toiminnan varmistamiseksi.

Kuinka algoritmi auttaa sinua uran kasvussa?

Algoritmin suunnittelu ja analysointi ei ole rooli (erityinen), mutta se tulee osa työtäsi ja tämä osa on tärkeä rooli koodin kehittämisessä. Jos suunnittelet hyvän algoritmin, kirjoitat hyvät koodit optimaalisella ratkaisulla ja lopulta asiakkaillesi toimitettava lopputuotteesi loistaa. Joten jos suunnittelet ja / tai kehität ohjelmistoja, tietorakenteiden ja algoritmien tuntemus ja kokeminen ovat välttämättömiä. Oletetaan, että työskentelet ohjelmistokehitystuotteen parissa, sen reaktio tulisi testata perusteellisesti (tietysti haluat tarkistaa prosessin ajoajan ennen koodin luovuttamista ohjelmistotestausryhmälle), eikä tämä ole jotain mitä voisit arvata melkein tarkasti etukäteen, mutta sinun on käytettävä algoritmin analyysiä laskeaksesi ajan monimutkaisuus.

johtopäätös

Joten kuten olemme nähneet algoritmien johdannon kuvauksen ja sen eri näkökohdat, ja olemme nähneet, että tietyn ongelman ratkaisemiseksi voisi olla erilaisia ​​lähestymistapoja, ja Big-O- ja Aika-monimutkaisuus ovat parametrejä, jotka auttavat meitä valitsemaan parhaimman ratkaisun. Tutkimalla hyvää määrää algoritmeja, sinusta tulee pohjimmiltaan vahva algoritmin analysoinnissa ja sinun pitäisi pystyä suunnittelemaan ja suorittamaan analyysi algoritmin yli helposti.

Suositellut artikkelit

Tämä on opas Mikä on algoritmeja. Tässä keskustelimme algoritmien työskentelystä esimerkkien ja sen eri näkökohtien kanssa. Voit myös käydä läpi muiden ehdotettujen artikkeleidemme saadaksesi lisätietoja -

  1. Mikä on Tableau Server?
  2. Opas isojen tietojen analytiikkaan
  3. Mikä on SQL-kehittäjä?
  4. Mikä on Informatica