Vad är en algoritm? - Arbeta med algoritmer med exempel

Innehållsförteckning:

Anonim

Vad är en algoritm?

Det är en sekvens av regler / instruktioner som beskrivs innan man gör en metod för att lösa något specifikt problem, en garanti för att lösa problemet. Ta till exempel ett exempel på en järnvägspart.
En algoritm ska:

  • Var väldefinierad och välordnad - Instruktionerna i en algoritm ska vara förståeliga och definierade väl.
  • Har otvetydiga operationer, dvs var och en av stegen i en algoritm ska vara tillräckligt enkla att det kanske inte kräver ytterligare förenkling
  • Har en effektiv beräkningsbar operation.

Bildkälla : d262ilb51hltx0.cloudfront.net/

Förstå algoritm

Bildkälla: goo.gl/images/u76bFe

Det finns en sensor som avkänner ankomsten av ett tåg, eftersom en utgång kan vara två resultat

  • Tåget anländer
  • Tåget kommer inte

Resultatet av det första utfallet överförs till en åtgärd där det rekommenderas att stänga grindarna medan resultatet av det andra utfallet åter sätts på testet genom att skicka det till det första uttalandet. Dessutom sätts resultatet av åtgärden som var resultatet av det första villkoret för att kontrollera om tåget helt har gått av. Om svaret är ja, öppnas grindarna, medan om det är negativt, förblir grindarna stängda. Vi kommer att diskutera mer detta och arbeta med följande ämnen (undergrupperna / byggstenarna och arbeta med en algoritm)

Hur gör algoritmen arbetet enkelt?

Som vi vet är detta en plan för att lösa ett problem. Tja, om vi inte har en plan, skulle vår metod för att lösa ett komplex problem eventuellt misslyckas i det första försöket och även om det löser problemet, är chansen mycket mindre att det kommer att vara en optimal lösning på det problemet.

Om vi ​​å andra sidan skapar algoritmer innan vi löser några problem, låt oss säga att vi skapar få algoritmer och sorterar dem baserat på den optimala lösningen de tillhandahåller, skulle det garantera att lösa det givna problemet. Detta är anledningen till att överallt, innan du löser något problem, först en algoritm skapas.

Topp algoritmutvecklingsföretag

Att bygga en bra produkt kräver en riktigt bra design även om vi inte kan jämföra en algoritm för två olika problem, vad vi kan göra är att lista upp namnen på företag som har levererat några utmärkta produkter till denna värld under hela 2000-talet:

  • DeepMind
  • Baidu
  • Nvidia
  • CloudWalk
  • SenseTime
  • Google
  • Facebook
  • Darktrace
  • Cambrian
  • IBM
  • OpenAI
  • ByteDance
  • CrowdStrike
  • Zebra Medical Vision
  • Babylon
  • Intel
  • Flatiron Health
  • Bekräfta
  • Uppkomling
  • Element AI
  • CloudMinds
  • DataRobot
  • Anki
  • Zymergen
  • UBTECH

Källa: algorithmxlab.com/

Undergrupperna / byggstenarna och arbetet med en algoritm

Under alla dessa år har det bevisats att en algoritm kan utformas från bara tre byggstenar:

  • Sekvens
  • Urval
  • Iteration


Bildkälla : https://goo.gl/

En sekvens är en serie instruktioner som måste följas för att lösa ett problem och instruktionerna ska utföras i ordning.

exempel

1. Tillsats av två siffror

Steg 1: Starta
Steg 2: Få två siffror som inmatning och lagra i en variabel som a och b
Steg 3: Lägg till numret a & b och lagra i variabel c
Steg 4: Skriv ut c
Steg 5: Stopp.

Ett urval är ett program som gör det möjligt för oss att välja output från olika åtgärder. Som vi tidigare sett i exempel på järnvägsporten, hade vi en villkorad ruta där den kontrollerade om tåget anländer.

2. Hitta det största bland två nummer

Steg 1: Starta
Steg 2: Få två siffror som inmatning och lagra i en variabel som a och b
Steg 3: Om a är större än b då
Steg 4: Skriv ut a är stort
Steg 5: annars
Steg 6: Skriv ut b är stort
S tep 7: Stopp

Upprepning eller iteration eller loop är de mindre programmen som körs flera gånger tills villkoret är uppfyllt.

3. Om vi ​​vill beräkna faktorn för ett nummer

Steg 1 : Starta
Steg 2 : Förklara variablerna n, factorial och i
Steg 3 : Initiera variablerna, dvs. factorialß1 och iß1
Steg 4: Läs värden på n
Steg 5: Upprepa stegen tills n iterationer
factorial <- factorial * i
i <- i + 1
Steg 6: Visa factorial
Steg 7: Stopp

Vad kan du göra med en algoritm?

Det är en funktion eller serie av funktioner som löser ett problem. Vi kan använda en algoritm för att lösa det enklaste problemet såväl som några av de tuffaste problemen i världen. Vi beslutar att den är optimal med hjälp av "tidskomplexitet". Enkelt uttryckt är tidskomplexitet ett sätt att beskriva körtiden för en given algoritm. Det finns lägsta körtid (kallas liten 'O'), genomsnittlig körningstid och värsta fall körtid O (N) (även känd som stor 'O'). Datorforskare och programvaruingenjörer tycker om algoritmer eftersom de är intresserade av att utvärdera och bygga samlingar av bästa praxis så att de inte behöver börja från början på varje instans av en liknande klass av problem. Nedan följer ett exempel på olika tidskomplexiteter som man kan få när man löser ett specifikt problem. Det betyder också att det kan finnas flera lösningar på ett enda problem, men vi måste välja den mest optimala genom att beräkna tidskomplexiteten för algoritmerna. I intervjuer blir du ombedd att lösa ett problem och dessutom blir du ombedd att optimera det, dvs för att minska din algoritms löptid. Till exempel kanske du har skrivit kod med 2 "för" -slingor (iteration), men det kan vara möjligt att jobbet kan uppnås bara genom att använda en enda "för" -slinga (iteration), men du har inte hållit på med den här lösningen ännu och du måste ta reda på mer!

Bildkälla: https://goo.gl/

Fördelar med algoritm

  1. Det är en stegvis presentation av en lösning på ett givet problem, vilket gör det lätt att förstå.
  2. Den använder en bestämd procedur.
  3. Det är oberoende av något programmeringsspråk, så det är lätt att förstå för alla även utan programmeringskunskap.
  4. Varje steg har sin egen logiska sekvens, därför är det lätt att felsöka.
  5. Genom att använda algoritmen delas problemet upp i mindre delar eller steg, varför det är lättare för en programmerare att konvertera det till ett faktiskt program

Erforderliga färdigheter

För att utforma en robust och bästa tidskomplexitetsalgoritm måste man ha ett bra logiskt tänkande, och borde vara bra på matematik och bör känna till minst ett objektorienterat programmeringsspråk. Kunskap om datastruktur behövs också.

  1. Datorer - Lär dig om matriser, länkade listor, binära träd, haschbord, grafer, staplar, köer, högar och andra grundläggande datastrukturer.
  2. Matematik - Lär dig mer om setteori, finite-state-maskiner, reguljära uttryck, matrismultiplikation, bitvisa operationer, lösa linjära ekvationer och andra viktiga begrepp som permutationer, kombinationer, duvahålprincip.
  3. Big-O & Runtime - Lär dig vad Big-O är och hur man analyserar algoritmernas löptider.

Varför ska vi använda och varför vi behöver en algoritm?

Man bör använda algoritmen eftersom det underlättar vårt jobb och det ger oss den mest optimala lösningen. Om vi ​​inte tillämpar en algoritm innan vi löser några komplexa problem, finns det stora chanser att vi går riktningslös i termer av en lösning. Med algoritmen sparar vi vår tid på problemlösning och vi ser till att lösningsalgoritmens optimalitet, som sagt tidigare, är oberoende av alla programmeringsspråk, så vem som helst kan designa en algoritm men för att utforma en riktigt bra algoritm bör man vara bra på logik och matematik. Det fungerar som en prototyp av en lösning.

Föreställ dig till exempel att vi har två Rubiks kuber framför oss. En av dem får du använda algoritmer (som hur många gånger eller vilken riktning du ska vända ett ansikte), och den andra måste du hitta ditt eget sätt. Vilket sätt blir snabbare? Visst kommer det att bli den första.

Låt oss ta ett intressant exempel:

Låt oss säga att vi har en rad element och vi vill sortera dem i stigande ordning. Nu finns det en annan algoritmisk strategi för det. Vi kommer att fokusera på tidskomplexiteten hos 2 av dem: Insertion sort och Merge sort

Insertion sort: Insertion sort är en enkel sortering.
(Tidskomplexitet är O (N 2).)

Sortera sortering: I sorteringssortering sorterar vi elementen med Divide and conquer-metoden.
Tidskomplexitet är O (N log N).

Det kan vara den inverkan du skulle få om du inte följer en och inte gör en analys av den.

Algoritmens omfattning

Genom att lära dig och behärska algoritmen skulle du känna till konsten att "Problem Solving". Med god praxis och kontinuerligt lärande bör du kunna lösa komplexa problem. Det är grunden för att utforma en viss mjukvara eller kod eftersom kodtid är en av de viktigaste faktorerna för att bestämma utförandet av en viss uppgift. Tekniska jättar i världen som Google och Facebook bedömer dina problemlösningsfärdigheter och i intervjuer är de flesta frågorna relaterade till algoritmdesign och problemlösning. Du blir ombedd att designa en algoritm och optimera den till bästa möjliga komplexitetstid.

Få poäng:

  • Detta kommer att förbättra dina problemlösningsförmågor som kommer att leda till att du tävlar bättre i intervjuer eller online-tentor
  • Du kommer att minska din tid på att lösa alla problem.
  • Nästan alla tekniska jättar anställer kandidater baserat på deras bättre problemlösningsförmåga
  • Man kan få ut det mesta av ett programmeringsspråk genom att lära sig att konstruera och designa en algoritm

Vem är rätt publik för att lära sig algoritmteknologier?

Ur ett datavetenskapligt perspektiv bör alla som gör lite eller mer programmering lära sig algoritmer. Om du skriver kod som inte löser ditt problem, eller om det löser problemet men använder resurser ineffektivt (till exempel tar det lång tid att köra eller den använder för mycket datorminne), är din kod inte den optimala . Men företagen vill att deras programvara eller produkter ska svara eller köra på lägsta möjliga tid.

Den som utvecklar något bör lära sig att göra en analys över en algoritm för att säkerställa att slutprodukten fungerar optimalt.

Hur algoritmen hjälper dig i karriärtillväxt?

Design och analys av en algoritm är inte en roll (specifik) men den kommer som en del av ditt jobb och denna del spelar en viktig roll i kodutvecklingen. Om du utformar en bra algoritm kommer du att skriva bra koder med en optimal lösning och så småningom din slutprodukt som levereras till kunderna excel. Så om du designer och / eller utvecklar programvara, är kunskap om och erfarenhet av datastrukturer och algoritmer väsentlig. Låt oss säga att du arbetar med en mjukvaruutvecklingsprodukt, svaret på den bör testas noggrant (naturligtvis skulle du vilja kontrollera processens driftstid innan du överlämnar koden till mjukvarutestteam) och det är inte något du kan gissa nästan noggrant i förväg men du måste använda analysen av en algoritm för att beräkna tidskomplexiteten.

Slutsats

Så som vi har sett en inledande beskrivning av algoritmer och dess olika aspekter, och vi har sett att det kan finnas olika tillvägagångssätt för att lösa ett särskilt problem och Big-O och Time-komplexitet är de parametrar som hjälper oss att välja den mest optimala lösningen. Genom att utforska ett stort antal algoritmer kommer du i grund och botten att bli stark i analysen av algoritm och du bör kunna utforma och köra analys över algoritm med lätthet.

Rekommenderade artiklar

Detta har varit en guide till Vad är en algoritm. Här diskuterade vi hur algoritmer fungerade med exempel och dess olika aspekter. Du kan också gå igenom våra andra föreslagna artiklar för att lära dig mer -

  1. Vad är Tableau Server?
  2. Guide till Big Data Analytics
  3. Vad är SQL Developer?
  4. Vad är Informatica