Hva er en algoritme?
Det er en sekvens av regler / instruksjoner som er skissert før du tar en tilnærming for å løse et spesifikt problem, en garanti for å løse problemet. Ta for eksempel et eksempel på et jernbaneport.
En algoritme skal:
- Vær veldefinert og velordnet - Instruksjonene som gis i en algoritme skal være forståelige og definerte godt.
- Har utvetydige operasjoner, dvs. at hvert av trinnene i en algoritme skal være enkle nok til at det kanskje ikke krever ytterligere forenkling
- Ha en effektiv beregningsbar operasjon.
Bildekilde : d262ilb51hltx0.cloudfront.net/
Forstå algoritme
Bildekilde: goo.gl/images/u76bFe
Det er en sensor som registrerer ankomsten av et tog, da en utgang som kan være 2 resultater
- Toget ankommer
- Toget kommer ikke
Resultatet av det første utfallet blir sendt til en handling der den råder til å lukke portene mens resultatet av det andre utfallet igjen settes på prøve ved å sende det til den første uttalelsen. Videre blir resultatet av handlingen som var resultatet av den første tilstanden satt på prøve for å sjekke om toget har gått helt av. Hvis svaret er ja, åpnes porter, mens hvis det er negativt, forblir portene stengt. Vi vil diskutere mer om dette og jobbe med følgende emner (undergruppene / byggesteinene og arbeidet med en algoritme)
Hvordan gjør algoritme arbeidet enkelt?
Som vi vet, er dette en plan for å løse et problem. Vel, hvis vi ikke har en plan, vil tilnærmingen vår for å løse et komplekst problem muligens mislykkes i første forsøk, og selv om det løser problemet, er sjansen veldig mindre for at det vil være en optimal løsning på det problemet.
Selv om vi derimot oppretter algoritme før vi løser noe problem, la oss si at vi lager få algoritmer og sorterer dem ut basert på den optimale løsningen de gir, vil det garantere å løse det gitte problemet. Dette er grunnen til at overalt, før du løser noe problem, først en algoritme opprettes.
Topp algoritmeutviklingsselskaper
Å bygge et flott produkt krever en veldig god design, selv om vi ikke kan sammenligne en algoritme for to forskjellige problemer. Det vi kan gjøre er å liste opp navnene på selskaper som har levert noen gode produkter til denne verden gjennom det 21. århundre:
- DeepMind
- Baidu
- Nvidia
- CloudWalk
- SenseTime
- Darktrace
- Cambrian
- IBM
- OpenAI
- ByteDance
- CrowdStrike
- Zebra Medical Vision
- Babylon
- Intel
- Flatiron Health
- Bekrefte
- oppkomling
- Element AI
- CloudMinds
- DataRobot
- Anki
- Zymergen
- UBTECH
Kilde: algorithmxlab.com/
Undergruppene / byggesteinene og arbeidet med en algoritme
I alle disse årene har det blitt bevist at en algoritme kan utformes fra bare tre byggesteiner:
- Sekvens
- utvalg
- køyring
Bildekilde : https://goo.gl/
En sekvens er en serie instruksjoner som må følges for å løse et problem, og instruksjonene skal utføres i rekkefølge.
eksempler
1. Tilsetning av to tall
Trinn 1: Start
Trinn 2: Få to tall som input og lagre i en variabel som a og b
Trinn 3: Legg til tallet a & b og lagre i variabel c
Trinn 4: Skriv ut c
Trinn 5: Stopp.
Et utvalg er et program som lar oss velge output fra forskjellige handlinger. Som vi har sett tidligere i jernbaneeksemplet, hadde vi en betinget rute der den sjekket om toget kommer.
2. Finn det største blant to nummer
Trinn 1: Start
Trinn 2: Få to tall som input og lagre i en variabel som a og b
Trinn 3: Hvis a er større enn b da
Trinn 4: Skriv ut a er stort
Trinn 5: annet
Trinn 6: Skriv ut b er stort
S tep 7: Stopp
Gjentakelse eller iterasjon eller loop er de mindre programmene som utføres flere ganger til betingelsen er oppfylt.
3. Hvis vi ønsker å beregne faktoren til et tall
Trinn 1 : Start
Trinn 2 : Angi variablene n, factorial og i
Trinn 3 : Initialiser variablene dvs. factorialß1 og iß1
Trinn 4: Les verdiene til n
Trinn 5: Gjenta trinnene til n iterasjoner
factorial <- factorial * i
i <- i + 1
Trinn 6: Vis fakultet
Trinn 7: Stopp
Hva kan du gjøre med en algoritme?
Det er en funksjon eller serie av funksjoner som løser et problem. Vi kan bruke en algoritme for å løse det enkleste problemet, så vel som noen av de tøffeste problemene i verden. Vi bestemmer at det er en optimal med hjelp av "tidskompleksitet". Enkelt sagt er tidskompleksitet en måte å beskrive kjøretiden til en gitt algoritme. Det er minimum kjøretid (kalt lite 'O'), gjennomsnittlig kjøretid og worst case kjøretid O (N) (også kjent som stor 'O'). Dataforskere og programvareingeniører liker å tenke på algoritmer fordi de er interessert i å evaluere og bygge samlinger av beste fremgangsmåter, slik at de ikke trenger å starte helt fra bunnen av på hver forekomst av en lignende klasse problemer. Nedenfor er et eksempel på forskjellige tidskompleksiteter som man kan få når man løser et spesifikt problem. Det betyr også at det kan være flere løsninger på et enkelt problem, men vi må velge det mest optimale ved å beregne tidskompleksitetene til algoritmene. I intervjuer vil du bli bedt om å løse et problem, og videre blir du bedt om å optimalisere det, dvs. for å redusere kjøretiden for algoritmen din. For eksempel kan du ha skrevet kode med 2 "for" -løkker (iterasjon), men det kan være mulig at jobben kan oppnås bare ved å bruke en enkelt "for" -sløyfe (iterasjon), men du har ikke holdt på med denne løsningen ennå, og du må finne ut mer!
Bildekilde: https://goo.gl/
Fordeler med algoritme
- Det er en trinnvis fremstilling av en løsning på et gitt problem, som gjør det enkelt å forstå.
- Den bruker en bestemt prosedyre.
- Det er uavhengig av hvilket som helst programmeringsspråk, så det er lett å forstå for alle selv uten programmeringskunnskap.
- Hvert trinn har sin egen logiske sekvens, og derfor er det enkelt å feilsøke.
- Ved å bruke algoritmen blir problemet delt opp i mindre biter eller trinn, og det er derfor enklere for en programmerer å konvertere det til et faktisk program
Nødvendige ferdigheter
For å utforme en robust og best tidskompleksitetsalgoritme, må man være god logisk tenking, og skal være god på matematikk og bør kjenne minst ett objektorientert programmeringsspråk. Kunnskap om datastruktur er også nødvendig.
- Datamaskiner - Lær om matriser, koblede lister, binære trær, hasjbord, grafer, stabler, køer, dynger og andre grunnleggende datastrukturer.
- Matematikk - Lær om settteori, endelige tilstandsmaskiner, regelmessige uttrykk, matrisemultiplikasjon, bitvise operasjoner, løse lineære ligninger og andre viktige begreper som permutasjoner, kombinasjoner, duehullprinsipp.
- Big-O & Runtime - Lær hva Big-O er og hvordan du analyserer kjøretidene for algoritmer.
Hvorfor skal vi bruke og hvorfor vi trenger en algoritme?
Man bør bruke algoritmen da den letter jobben vår, og den gir oss den mest optimale løsningen. Hvis vi ikke bruker en algoritme før vi løser noe komplekst problem, er det store sjanser for at vi går retningsløs når det gjelder en løsning. Med algoritmen sparer vi tiden vår i problemløsing og vi sikrer at optimaliteten til løsningsalgoritmen, som sagt tidligere, er uavhengig av hvilket som helst programmeringsspråk, så hvem som helst kan designe en algoritme, men for å designe en virkelig god algoritme bør man være god på logikk og matematikk. Det fungerer som en prototype av en løsning.
Tenk deg for eksempel at vi har to Rubiks kubber foran oss. En av dem har du lov til å bruke algoritmer (som hvor mange ganger eller hvilken retning du skal snu et ansikt), og den andre må du finne din egen måte. Hvilken vei vil være raskere? Helt klart, det kommer til å bli den første.
La oss ta et interessant eksempel:
La oss si at vi har en rekke elementer, og vi vil sortere dem i stigende rekkefølge. Nå er det en annen algoritmisk tilnærming til det. Vi vil fokusere på tidskompleksiteten til 2 av dem: Insertion sort og Merge sort
Innleggssortering: Innføringssortering er en enkel sortering.
(Tidskompleksitet er O (N 2).)
Merge sort: I merge sort, sorterer vi elementene ved å bruke Divide and conquer-metoden.
Tidskompleksitet er O (N log N).
Dette kan være virkningen du vil få hvis du ikke følger en og ikke foretar en analyse av den.
Algoritme Omfang
Ved å lære og mestre algoritmen, vil du kjenne kunsten å "Problem Solving". Med god praksis og kontinuerlig læring skal du kunne løse komplekse problemer. Det er grunnlaget for å designe et stykke programvare eller kode, da kjøretid for kode er en av de viktigste faktorene for å bestemme utførelsen av en bestemt oppgave. Tekniske giganter i verden som Google og Facebook bedømmer dine problemløsningsevner, og i intervjuer er de fleste spørsmålene relatert til algoritmedesign og problemløsing. Du blir bedt om å designe en algoritme og optimalisere den til best mulig kompleksitetstid.
Få poeng:
- Dette vil forbedre dine problemer med å løse problemer som vil føre til at du kan konkurrere bedre på intervjuer eller online eksamener
- Du vil redusere tiden din med å løse eventuelle problemer.
- Nesten alle teknologigigantene ansetter kandidater basert på deres bedre problemløsningsevner
- Man kan få mest mulig ut av et programmeringsspråk ved å lære å konstruere og designe en algoritme
Hvem er det rette publikummet for å lære seg algoritmteknologier?
Fra et informatikk-perspektiv, bør alle som gjør lite eller mer programmering lære seg algoritmer. Hvis du skriver kode som ikke løser problemet ditt, eller hvis det løser problemet, men bruker ressurser ineffektivt (for eksempel tar det lang tid å kjøre, eller det bruker for mye datamaskinminne), er koden ikke den optimale . Men selskapene vil at programvaren eller produktene deres skal svare eller kjøres på lavest mulig tid.
Alle som utvikler noe, bør lære seg å gjøre en analyse over en algoritme for å sikre optimal funksjon av sluttproduktet.
Hvordan algoritmen vil hjelpe deg i karrierevekst?
Design og analyse av en algoritme er ikke en rolle (spesifikk), men den kommer som en del av jobben din, og denne delen spiller en viktig rolle i kodeutviklingen. Hvis du designer en god algoritme, vil du skrive gode koder med en optimal løsning og til slutt sluttproduktet ditt som blir levert til kundene utmerker seg. Så hvis du designer og / eller utvikler programvare, er kunnskap om og erfaring med datastrukturer og algoritmer viktig. La oss si at du jobber med et programvareutviklingsprodukt, responsen på det bør testes grundig (selvfølgelig vil du sjekke løpetid for prosessen før du overleverer koden til programvaretestingsteamet), og dette er ikke noe du kan gjett nesten nøyaktig på forhånd, men du må bruke analysen av en algoritme for å beregne tidskompleksiteten.
Konklusjon
Så som vi har sett en innledende beskrivelse av algoritmer og dens forskjellige aspekter, og vi har sett at det kan være forskjellige tilnærminger for å løse et bestemt problem, og Big-O og Time-kompleksitet er parametrene som hjelper oss å velge den mest optimale løsningen. Ved å utforske en god del algoritmer vil du i grunn bli sterk i analysen av algoritme, og du bør kunne utforme og kjøre analyse over algoritme med letthet.
Anbefalte artikler
Dette har vært en guide til Hva er en algoritmer. Her diskuterte vi bruken av algoritmer med eksempler og dens forskjellige aspekter. Du kan også gå gjennom andre foreslåtte artikler for å lære mer -
- Hva er Tableau Server?
- Veiledning for Big data analytics
- Hva er SQL Developer?
- Hva er Informatica