Hvad er en algoritme?
Det er en række af regler / instruktioner, der er skitseret, før der tages en tilgang til at løse et specifikt problem, en garanti for at løse problemet. Tag for eksempel et eksempel på et jernbaneport.
En algoritme skal:
- Vær veldefineret og velordnet - Instruktionerne i en algoritme skal være forståelige og definerede godt.
- Har entydige operationer, dvs. hvert af trinene i en algoritme skal være enkle nok til, at det muligvis ikke kræver yderligere forenkling
- Har en effektiv computbar operation.
Billedkilde: d262ilb51hltx0.cloudfront.net/
Forståelse af algoritme
Billedkilde : goo.gl/images/u76bFe
Der er en sensor, der registrerer ankomsten af et tog, da en udgang der kunne være 2 resultater
- Toget ankommer
- Toget ankommer ikke
Resultatet af det første resultat sendes til en handling, hvor det tilrådes at lukke portene, mens resultatet af det andet resultat igen sættes på prøve ved at sende det til den oprindelige erklæring. Desuden sættes udgangspunktet for handling, der var resultatet af den første betingelse, på en test for at kontrollere, om toget er helt afvist. Hvis svaret er ja, åbnes porte, mens hvis det er negativt, forbliver porte lukkede. Vi vil diskutere mere om dette og arbejde med følgende emner (undergrupper / byggesten og arbejde med en algoritme)
Hvordan gør algoritme arbejde let?
Som vi ved, er dette en plan til løsning af et problem. Hvis vi ikke har en plan, ville vores tilgang til at løse et komplekst problem muligvis mislykkes i det første forsøg, og selvom det løser problemet, er chancerne meget mindre for, at det vil være en optimal løsning på dette problem.
På den anden side, hvis vi opretter algoritme, før vi løser noget problem, lad os sige, at vi opretter få algoritmer og sorterer dem baseret på den optimale løsning, de leverer, ville det garantere at løse det givne problem. Dette er grunden til, at overalt, før der løses noget problem, først oprettes en algoritme.
Top algoritmeudviklingsselskaber
At opbygge et fantastisk produkt kræver et rigtig godt design, selvom vi ikke kan sammenligne en algoritme til to forskellige problemer, hvad vi kan gøre er at liste navnene på virksomheder, der har leveret nogle fremragende produkter til denne verden gennem det 21. århundrede:
- DeepMind
- Baidu
- Nvidia
- CloudWalk
- SenseTime
- Darktrace
- Kambrium
- IBM
- OpenAI
- ByteDance
- CrowdStrike
- Zebra Medical Vision
- Babylon
- Intel
- Flatiron Health
- Bekræfte
- Upstart
- Element AI
- CloudMinds
- DataRobot
- Anki
- Zymergen
- UBTECH
Kilde: algorithmxlab.com/
Undergrupperne / byggestenene og arbejdet med en algoritme
I alle disse år er det bevist, at en algoritme kan designes ud fra kun tre byggesten:
- sekvens
- Udvælgelse
- gentagelse
Billedkilde : https://goo.gl/
En sekvens er en række instruktioner, der skal følges for at løse et problem, og instruktionerne skal udføres i rækkefølge.
eksempler
1. Tilføjelse af to tal
Trin 1: Start
Trin 2: Få to numre som input og gem i en variabel som a og b
Trin 3: Tilføj tallet a & b og gem i variabel c
Trin 4: Udskriv c
Trin 5: Stop.
Et valg er et program, der giver os mulighed for at vælge output fra forskellige handlinger. Som vi har set tidligere i eksempelet på jernbaneporten, havde vi en betinget kasse, hvor det kontrolleres, om toget ankommer.
2. Find det største blandt 2 nummer
Trin 1: Start
Trin 2: Få to numre som input og gem i en variabel som a og b
Trin 3: Hvis a er større end b, så
Trin 4: Udskriv a er stort
Trin 5: ellers
Trin 6: Udskriv b er stort
S tep 7: Stop
Gentagelse eller iteration eller loop er de mindre programmer, der udføres flere gange, indtil betingelsen er opfyldt.
3. Hvis vi gerne vil beregne talets faktorial
Trin 1 : Start
Trin 2 : Angiv variablerne n, factorial og i
Trin 3 : Initialiser variablerne, dvs. factorialß1 og iß1
Trin 4: Læs værdier for n
Trin 5: Gentag trinnene, indtil n iterationer
factorial <- factorial * i
i <- i + 1
Trin 6: Vis factorial
Trin 7: Stop
Hvad kan du gøre med en algoritme?
Det er en funktion eller en række funktioner, der løser et problem. Vi kan bruge en algoritme til at løse det enkleste problem såvel som nogle af de hårdeste problemer i verden. Vi beslutter, at det er det optimale ved hjælp af ”tidskompleksitet”. Kort sagt er tidskompleksitet en måde at beskrive kørselstiden for en given algoritme. Der er minimum køretid (kaldet lille 'O'), gennemsnitlig køretid og worst case køretid O (N) (også kendt som stor 'O'). Computer videnskabsmænd og software ingeniører kan lide at tænke på algoritmer, fordi de er interesseret i at evaluere og bygge samlinger af bedste praksis, så de ikke behøver at starte fra bunden i hvert tilfælde af en lignende klasse af problemer. Nedenfor er et eksempel på forskellige tidskompleksiteter, som man kan få, mens man løser et specifikt problem. Det betyder også, at der kan være flere løsninger på et enkelt problem, men vi er nødt til at vælge det mest optimale ved at beregne algoritmernes tidskompleksiteter. I interviews bliver du bedt om at løse et problem, og du bliver desuden bedt om at optimere det, dvs. for at reducere din algoritmes driftstid. For eksempel har du muligvis skrevet kode med 2 “for” -sløjfer (iteration), men det kan være muligt, at jobbet kan opnås bare ved at bruge en enkelt “for” -sløjfe (iteration), men du har ikke været op til denne løsning endnu, og du er nødt til at finde ud af mere!
Billedkilde: https://goo.gl/
Fordele ved algoritme
- Det er en trinvis repræsentation af en løsning på ethvert givet problem, hvilket gør det let at forstå.
- Den bruger en bestemt procedure.
- Det er uafhængigt af ethvert programmeringssprog, så det er let at forstå for enhver, selv uden programmeringsviden.
- Hvert trin har sin egen logiske sekvens, derfor er det let at fejlsøge.
- Ved at bruge algoritmen er problemet opdelt i mindre stykker eller trin, og det er derfor lettere for en programmør at konvertere det til et faktisk program
Nødvendige færdigheder
For at designe en robust og bedste tidskompleksitetsalgoritme skal man være god logisk tænkning og skal være god til matematik og skal kende mindst et objektorienteret programmeringssprog. Kendskab til datastruktur er også nødvendig.
- Computere - Lær om arrays, sammenkoblede lister, binære træer, hash-tabeller, grafer, stabler, køer, dynger og andre grundlæggende datastrukturer.
- Matematik - Lær om sætteori, finite-state-maskiner, regelmæssige udtryk, matrixmultiplikation, bitvise operationer, løsning af lineære ligninger og andre vigtige begreber som permutationer, kombinationer, duenhulprincippet.
- Big-O & Runtime - Lær hvad Big-O er, og hvordan man analyserer algoritmernes kørtider.
Hvorfor skal vi bruge, og hvorfor har vi brug for en algoritme?
Man skal bruge algoritmen, da det letter vores job, og det giver os den mest optimale løsning. Hvis vi ikke anvender en algoritme, før vi løser noget komplekst problem, er der store chancer for, at vi går retningsløs med hensyn til en løsning. Med algoritmen sparer vi vores tid på problemløsning, og vi sikrer, at løsningsalgoritmen, som sagt tidligere, er optimal uafhængigt af ethvert programmeringssprog, så enhver kan designe en algoritme, men for at designe en rigtig god algoritme skal man være god til logik og matematik. Det fungerer som en prototype af en løsning.
Forestil dig for eksempel, at vi har to Rubiks terninger foran os. En af dem har du lov til at bruge algoritmer (som hvor mange gange eller hvilken retning du skal vende et ansigt), og den anden har du for at finde din egen måde. Hvilken måde vil være hurtigere? Bestemt, det vil være den første.
Lad os tage et interessant eksempel:
Lad os sige, at vi har en række elementer, og vi vil gerne sortere dem i stigende rækkefølge. Nu er der en anden algoritmisk tilgang til det. Vi vil fokusere på tidskompleksiteten for 2 af dem: Indsættelsessortering og Flettsortering
Indsættelsessortering: indsættelsessortering er en simpel sortering.
(Tidskompleksitet er O (N 2).)
Flet sortering: I fletningssortering sorterer vi elementerne ved hjælp af Divide and conquer-metoden.
Tidskompleksitet er O (N log N).
Dette kan være den påvirkning, du vil få, hvis du ikke følger en og ikke foretager en analyse af den.
Algoritme Omfang
Ved at lære og mestre algoritme vil du kende kunsten at "Problem Solving". Med god praksis og kontinuerlig læring skal du være i stand til at løse komplekse problemer. Det er grundlaget for at designe et stykke software eller kode, da køretidets køretid er en af de vigtigste faktorer i bestemmelsen af udførelsen af en bestemt opgave. Tekniske giganter i verden som Google og Facebook bedømmer dine problemer med at løse problemer og i interviews er de fleste af spørgsmålene relateret til algoritmedesign og problemløsning. Du bliver bedt om at designe en algoritme og optimere den til den bedst mulige kompleksitetstid.
Få point:
- Dette forbedrer dine evner til at løse problemer, hvilket vil føre til, at du konkurrerer bedre ved interviews eller online-eksamener
- Du reducerer din tid på at løse ethvert problem.
- Næsten alle tech-giganter ansætter kandidater baseret på deres bedre problemløsningsevner
- Man kan få mest muligt ud af et programmeringssprog ved at lære at konstruere og designe en algoritme
Hvem er det rigtige publikum til at lære algoritmeteknologier?
Fra et datalogisk perspektiv skal enhver, der laver lidt eller mere programmering, lære algoritmer. Hvis du skriver kode, der ikke løser dit problem, eller hvis det løser problemet, men bruger ressourcer ineffektivt (for eksempel tager det lang tid at køre, eller det bruger for meget af computerhukommelsen), er din kode ikke den optimale . Men virksomhederne ønsker, at deres software eller produkter skal svare eller udføre på det lavest mulige tidspunkt.
Enhver, der udvikler noget, skal lære at gøre en analyse over en algoritme for at sikre, at slutproduktet fungerer optimalt.
Hvordan algoritmen vil hjælpe dig i karrierevækst?
Design og analyse af en algoritme er ikke en rolle (specifik), men den kommer som en del af dit job, og denne del spiller en vigtig rolle i kodeudviklingen. Hvis du designer en god algoritme, skriver du gode koder med en optimal løsning og til sidst dit slutprodukt, der leveres til kunderne, udmærker sig. Så hvis du designer og / eller udvikler software, er viden om og erfaring med datastrukturer og algoritmer vigtig. Lad os sige, at du arbejder med et softwareudviklingsprodukt, svaret på det skal testes grundigt (selvfølgelig vil du gerne kontrollere processens driftstid, inden du overleverer koden til softwaretestteam), og dette er ikke noget, du kunne gæt næsten nøjagtigt på forhånd, men du skal bruge analysen af en algoritme til at beregne tidskompleksiteten.
Konklusion
Så som vi har set en indledende beskrivelse af algoritmer og dens forskellige aspekter, og vi har set, at der kunne være forskellige tilgange til at løse et bestemt problem, og Big-O og Time-kompleksitet er de parametre, der hjælper os med at vælge den mest optimale løsning. Ved at udforske et stort antal algoritmer vil du grundlæggende blive stærk i analysen af algoritme, og du skal være i stand til let at designe og køre analyse over algoritmen.
Anbefalede artikler
Dette har været en guide til Hvad er en algoritme. Her diskuterede vi arbejdet med algoritmer med eksempler og dets forskellige aspekter. Du kan også gennemgå vores andre foreslåede artikler for at lære mere -
- Hvad er Tableau Server?
- Vejledning til Big data analyse
- Hvad er SQL Developer?
- Hvad er Informatica