Mis on algoritm?
See on reeglite ja juhiste jada, mis on välja toodud enne konkreetse probleemi lahendamiseks lähenemist, garantiid probleemi lahendamiseks. Näiteks võtke näide raudtee väravapunktist.
Algoritm peaks:
- Olge täpselt määratletud ja hästi järjestatud - algoritmis pakutavad juhised peaksid olema arusaadavad ja hästi määratletud.
- Tehke üheselt mõistetavaid toiminguid, st algoritmi kõik sammud peaksid olema piisavalt lihtsad, et see ei vajaks edasist lihtsustamist
- Tehke tõhusalt arvutatav toiming.
Pildi allikas: d262ilb51hltx0.cloudfront.net/
Algoritmi mõistmine
Pildi allikas : goo.gl/images/u76bFe
On olemas andur, mis tajub rongi saabumist, kuna selle väljundiks võib olla 2 tulemust
- Rong saabub
- Rong ei saabu
Esimese tulemuse tulemus suunatakse toimingule, kus ta soovitab väravad sulgeda, teise tulemuse tulemus pannakse uuesti proovile, saates selle algsele avaldusele. Lisaks pannakse esimese tingimuse tulemusel saadud toiming proovile, et kontrollida, kas rong on täielikult lahkunud. Kui vastus on jaatav, avatakse väravad, negatiivse vastuse korral aga väravad suletakse. Arutleme seda lähemalt ja töötame järgmiste teemadega (alamhulgad / ehitusplokid ja algoritmi kasutamine)
Kuidas teeb algoritm töö lihtsaks?
Nagu me teame, on see probleemi lahendamise plaan. Noh, kui meil pole plaani, kukub meie lähenemisviis keeruka probleemi lahendamiseks esimesel katsel ebaõnnestuda ja isegi kui see probleemi lahendab, on tõenäosus, et see on selle probleemi jaoks optimaalne lahendus.
Teisest küljest, kui loome algoritmi enne mis tahes probleemi lahendamist, ütleme, et loome vähe algoritme ja sorteerime need nende pakutava optimaalse lahenduse põhjal, tagaks see antud probleemi lahendamise. See on põhjus, miks igal pool enne mis tahes probleemi lahendamist luuakse algoritm.
Parimad algoritmide väljatöötamise ettevõtted
Suurepärase toote valmistamiseks on vaja tõeliselt head disaini, ehkki me ei saa võrrelda kahe erineva probleemi algoritmi, aga saame loetleda nende ettevõtete nimed, kes on 21. sajandil siia maailma suurepäraseid tooteid tarninud:
- DeepMind
- Baidu
- Nvidia
- CloudWalk
- SenseTime
- Darktrace
- Kambrium
- IBM
- OpenAI
- ByteDance
- CrowdStrike
- Sebra meditsiiniline nägemine
- Babülon
- Intel
- Flatironi tervis
- Kinnitage
- Upstart
- Elemendi AI
- CloudMinds
- DataRobot
- Anki
- Zymergen
- UBTECH
Allikas: algorithmxlab.com/
Alamkomplektid / ehitusplokid ja algoritmi töö
Kõik need aastad on tõestatud, et algoritmi saab kujundada vaid kolmest ehitusplokist:
- Järjestus
- Valik
- Iteratsioon
Pildi allikas : https://goo.gl/
Jada on käskude seeria, mida tuleb probleemi lahendamiseks järgida ja juhised tuleks täita järjekorras.
Näited
1. Kahe numbri lisamine
1. samm: alustage
2. samm: hankige sisendina kaks numbrit ja salvestage muutujasse a ja b
3. samm: lisage arv a & b ja salvestage muutujasse c
4. samm: printige c
5. samm: lõpetage.
Valik on programm, mis võimaldab meil valida väljundi erinevate toimingute hulgast. Nagu me varem raudteevärava näites nägime, oli meil tingimuslik kast, kus kontrolliti, kas rong saabub.
2. Leidke kahe numbri hulgast suurim
1. samm: alustage
2. samm: hankige sisendina kaks numbrit ja salvestage muutujasse a ja b
3. samm: kui a on suurem kui b, siis
4. samm: printige a on suur
5. samm: muu
6. samm: print b on suur
S tep 7: lõpetage
Kordus või iteratsioon või silmus on väiksemad programmid, mida täidetakse mitu korda, kuni tingimus on täidetud.
3. Kui me tahaksime arvutada arvu faktoreid
1. samm : alustage
2. samm : kuulutage muutujad n, faktoriaal ja i
3. samm : lähtestage muutujad, st factorialß1 ja iß1
4. samm: lugege n väärtused
5. samm: korrake samme, kuni n kordamist
faktoriaal <- faktoriaal * i
i <- i + 1
6. samm. Faktorite kuvamine
7. samm: lõpetage
Mida saab algoritmiga teha?
See on funktsioon või funktsioonide seeria, mis lahendab probleemi. Saame kasutada algoritmi nii kõige lihtsamate probleemide kui ka maailma raskeimate probleemide lahendamiseks. Otsustame, et see on aja keerukuse abil optimaalne. Lihtsamalt öeldes on aja keerukus mis tahes algoritmi käitusaja kirjeldamise viis. Seal on minimaalne käitamisaeg (nimetatakse väikeseks “O”), keskmine käitamisaeg ja halvimal juhul tööaeg O (N) (tuntud ka kui suur “O”). Arvutiteadlastele ja tarkvarainseneridele meeldib mõelda algoritmide peale, sest nad on huvitatud parimate tavade kogumike hindamisest ja ülesehitamisest, nii et nad ei peaks alustama nullist iga sarnase probleemiklassi puhul. Allpool on toodud näide erinevatest aja keerukusest, mida võib konkreetse probleemi lahendamisel saada. See tähendab ka, et ühele probleemile võib olla mitu lahendust, kuid peame valima kõige optimaalsema, arvutades algoritmide ajalised keerukused. Intervjuudes palutakse teil mõni probleem lahendada ja lisaks palutakse teil seda optimeerida, st vähendada algoritmi tööaega. Näiteks võisite kirjutada koodi kahe "jaoks" ahelaga (iteratsioon), kuid võib olla võimalik, et töö on saavutatav lihtsalt ühe "for" ahela (iteratsiooni) abil, kuid te pole selle lahendusega veel hakkama saanud veel ja peate rohkem välja mõtlema!
Pildi allikas: https://goo.gl/
Algoritmi eelised
- See on iga probleemi lahenduse järkjärguline esitus, mis muudab selle hõlpsa mõistmise.
- See kasutab kindlat protseduuri.
- See on sõltumatu programmeerimiskeelest, nii et see on kõigile arusaadav ka ilma programmeerimisteadmisteta.
- Igal sammul on oma loogiline jada, seetõttu on seda lihtne siluda.
- Algoritmi kasutades jaotatakse probleem väiksemateks tükkideks või sammudeks, seetõttu on programmeerijal lihtsam seda teisendada tegelikuks programmiks
Vajalikud oskused
Tugeva ja parima aja keerukuse algoritmi kujundamiseks peab olema hea loogiline mõtlemine, hea matemaatika ja vähemalt üks objektorienteeritud programmeerimiskeel. Vaja on ka teadmisi andmestruktuuri kohta.
- Arvutid - saate teada massiivide, lingitud loendite, binaarsete puude, räsitabelite, graafikute, virnade, järjekordade, hunnikute ja muude põhiliste andmestruktuuride kohta.
- Matemaatika - saate teada kogumiteooria, piiratud olekute masinate, regulaaravaldiste, maatriksi korrutamise, bitituimsete toimingute, lineaarvõrrandite lahendamise ja muude oluliste mõistete, näiteks permutatsioonide, kombinatsioonide, tuvide augu põhimõtte kohta.
- Big-O ja Runtime - saate teada, mis on Big-O ja kuidas analüüsida algoritmide tööaegu.
Miks peaksime kasutama ja miks vajame algoritmi?
Tuleks kasutada algoritmi, kuna see lihtsustab meie tööd ja pakub meile kõige optimaalsemat lahendust. Kui me ei rakenda algoritmi enne mõne keeruka probleemi lahendamist, on suur tõenäosus, et läheme lahenduse suunas suunatuks. Algoritmiga hoiame kokku oma aega probleemide lahendamisel ja tagame, et nagu juba öeldud, on lahenduse algoritmi optimaalsus ükskõik millisest programmeerimiskeelest sõltumatu, nii et igaüks saab algoritmi kujundada, kuid tõeliselt hea algoritmi kujundamiseks tuleks olema hea loogika ja matemaatika alal. See on lahenduse prototüüp.
Kujutage näiteks ette, et meie ees on kaks Rubiku kuuti. Ühel neist on teil lubatud kasutada algoritme (nt mitu korda või millises suunas nägu pöörata) ja teises peate leidma oma tee. Kumb saab kiiremini? Kindlasti saab see olema esimene.
Võtame huvitava näite:
Oletame, et meil on hulgaliselt elemente ja me tahaksime neid sortida kasvavas järjekorras. Nüüd on sellele erinev algoritmiline lähenemine. Keskendume nende kahe aja keerukusele: sisestussorteerimine ja liitmis sortimine
Sisestuse sortimine: sisestamise sortimine on lihtne sortimine.
(Aja keerukus on O (N 2).)
Ühenda sort: liitmise sortimisel sorteerime elemendid jagamise ja vallutamise meetodil.
Aja keerukus on O (N log N).
See võib olla mõju, mida kogeksite, kui te ei järgi seda ega tee selle kohta analüüsi.
Algoritmi ulatus
Algoritmi õppides ja valides tunneksite „probleemide lahendamise“ kunsti. Hea tava ja pideva õppimise abil peaksite suutma lahendada keerulisi probleeme. See on mõne tarkvara või koodi kujundamise alus, kuna koodi käitamisaeg on konkreetse ülesande täitmise määramisel üks olulisemaid tegureid. Maailma tehnikahiiglased, nagu Google ja Facebook, hindavad teie probleemilahendamise oskusi ning intervjuudes on enamik küsimusi seotud algoritmi kujundamise ja probleemide lahendamisega. Teil palutakse koostada algoritm ja optimeerida see võimalikult keerukaks ajaks.
Mõned punktid:
- See parandab teie probleemilahendusoskusi, mis aitab teil intervjuude või veebieksamite korral paremini konkureerida
- Vähendate oma aega probleemide lahendamisel.
- Peaaegu kõik tehnikahiiglased palkavad kandidaate oma paremate probleemilahendusoskuste põhjal
- Programmeerimiskeelest saab maksimaalselt kasu saada, kui õppida algoritmi konstrueerima ja kujundama
Kes on õige publik algoritmi tehnoloogiate õppimiseks?
Arvutiteaduse vaatenurgast peaksid kõik, kes vähe või rohkem programmeerivad, õppima algoritme. Kui kirjutate koodi, mis ei lahenda teie probleemi, või kui see lahendab probleemi, kuid kasutab ressursse ebaefektiivselt (näiteks selle käivitamine võtab palju aega või see kasutab liiga palju arvutimälu), pole teie kood optimaalne . Kuid ettevõtted tahaksid, et nende tarkvara või tooted reageeriksid või käivitaksid võimalikult lühikese aja jooksul.
Kõik, kes midagi arendavad, peaksid õppima, kuidas teha algoritmi abil analüüsi, et tagada lõpptoote optimaalne toimimine.
Kuidas aitab see algoritm teid karjääri kasvamisel?
Algoritmi kujundamine ja analüüs ei ole roll (konkreetne), kuid see on osa teie tööst ja sellel osal on oluline roll koodide väljatöötamisel. Kui kujundate hea algoritmi, kirjutate optimaalse lahendusega head koodid ja lõppkokkuvõttes paistab silma teie lõpptoode, mis klientidele tarnitakse. Nii et kui projekteerite ja / või arendate tarkvara, on teadmised ja kogemused andmestruktuuride ja algoritmidega hädavajalikud. Oletame, et töötate tarkvaraarenduse toote kallal, selle reaktsiooni tuleks põhjalikult testida (muidugi soovite enne tarkvara testimismeeskonnale koodi üleandmist kontrollida protsessi käitusaega) ja see pole midagi, mida võiksite arvake peaaegu täpselt ette, kuid aja keerukuse arvutamiseks peate kasutama algoritmi analüüsi.
Järeldus
Nagu nägime algoritmide ja nende erinevate aspektide sissejuhatavat kirjeldust ning nägime, et konkreetse probleemi lahendamiseks võiks olla erinevaid lähenemisviise ning Big-O ja aja keerukus on parameetrid, mis aitavad meil valida optimaalseima lahenduse. Uurides arvukalt algoritme, muutute põhimõtteliselt tugevaks algoritmi analüüsimisel ning peaksite saama algoritmi hõlpsalt kavandada ja analüüsi teostada.
Soovitatavad artiklid
See on olnud teemaks Mis on algoritmid. Siin arutasime algoritmide töötamist näidete ja selle erinevate aspektidega. Lisateavet leiate ka meie muudest soovitatud artiklitest -
- Mis on Tableau Server?
- Suurte andmete analüüsi juhend
- Mis on SQL arendaja?
- Mis on informaatika