Wat is een algoritme? - Werken van algoritmen met voorbeelden

Inhoudsopgave:

Anonim

Wat is een algoritme?

Het is een reeks regels / instructies die worden beschreven voordat een aanpak wordt gevonden om een ​​specifiek probleem op te lossen, een garantie om het probleem op te lossen. Neem bijvoorbeeld een voorbeeld van een spoorwegpoort.
Een algoritme moet:

  • Wees goed gedefinieerd en goed geordend - De instructies in een algoritme moeten begrijpelijk en goed gedefinieerd zijn.
  • Voer eenduidige bewerkingen uit, dat wil zeggen dat elke stap van een algoritme eenvoudig genoeg moet zijn om geen verdere vereenvoudiging te vereisen
  • Heb een effectief berekenbare operatie.

Afbeeldingsbron: d262ilb51hltx0.cloudfront.net/

Algoritme begrijpen

Afbeeldingsbron : goo.gl/images/u76bFe

Er is een sensor die de aankomst van een trein detecteert, waarvan de output 2 resultaten kan zijn

  • Er komt een trein aan
  • De trein komt niet aan

Het resultaat van de eerste uitkomst wordt doorgegeven aan een actie waarbij het adviseert om de poorten te sluiten, terwijl het resultaat van de tweede uitkomst opnieuw wordt getest door het naar de oorspronkelijke verklaring te sturen. Bovendien wordt de output van de actie die het resultaat was van de eerste voorwaarde getest om te controleren of de trein volledig is vertrokken. Als het antwoord ja is, worden poorten geopend, terwijl als het negatief is, de poorten gesloten blijven. We zullen dit meer bespreken en werken aan de volgende onderwerpen (de subsets / bouwstenen en de werking van een algoritme)

Hoe maakt Algorithm werk gemakkelijk?

Zoals we weten, is dit een plan om een ​​probleem op te lossen. Nou, als we geen plan hebben, zou onze aanpak om een ​​complex probleem op te lossen mogelijk in de eerste poging mislukken en zelfs als het het probleem oplost, is de kans heel klein dat het een optimale oplossing voor dat probleem zal zijn.

Aan de andere kant, als we algoritme maken voordat we een probleem oplossen, laten we zeggen dat we weinig algoritmen maken en deze uitzoeken op basis van de optimale oplossing die ze bieden, zou het garanderen dat het gegeven probleem wordt opgelost. Dit is de reden waarom overal, voordat een probleem wordt opgelost, eerst een algoritme wordt gemaakt.

Top Algorithm Development Companies

Het bouwen van een geweldig product vereist een echt goed ontwerp, hoewel we een algoritme voor twee verschillende problemen niet kunnen vergelijken, wat we wel kunnen doen, is een lijst maken met de namen van bedrijven die in de 21e eeuw een aantal uitstekende producten aan deze wereld hebben geleverd:

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

Bron: algorithmxlab.com/

De subsets / bouwstenen en werking van een algoritme

Al die jaren is bewezen dat een algoritme kan worden ontworpen uit slechts drie bouwstenen:

  • Volgorde
  • Selectie
  • herhaling


Afbeeldingsbron : https://goo.gl/

Een reeks is een reeks instructies die moeten worden gevolgd om een ​​probleem op te lossen en de instructies moeten in volgorde worden uitgevoerd.

Voorbeelden

1. Toevoeging van twee nummers

Stap 1: Start
Stap 2: Verkrijg twee getallen als invoer en sla deze op in een variabele als a en b
Stap 3: voeg het nummer a & b toe en sla op in variabele c
Stap 4: Afdrukken c
Stap 5: Stop.

Een selectie is een programma waarmee we de output van verschillende acties kunnen kiezen. Zoals we eerder in het voorbeeld van de spoorwegpoort hebben gezien, hadden we een voorwaardelijke doos waarin werd gecontroleerd of de trein aankomt.

2. Vind de grootste van de 2 nummers

Stap 1: Start
Stap 2: Verkrijg twee getallen als invoer en sla deze op in een variabele als a en b
Stap 3: Als a groter is dan b dan
Stap 4: Afdrukken is groot
Stap 5: anders
Stap 6: Afdrukken b is groot
S tep 7: Stop

Herhaling of iteratie of lus zijn de kleinere programma's die meerdere keren worden uitgevoerd totdat aan de voorwaarde is voldaan.

3. Als we de faculteit van een getal willen berekenen

Stap 1 : Start
Stap 2 : Declareer de variabelen n, faculteit en i
Stap 3 : Initialiseer de variabelen ie factorialß1 en iß1
Stap 4: Lees waarden van n
Stap 5: Herhaal de stappen tot herhalingen
faculteit <- faculteit * i
i <- i + 1
Stap 6: Weergave faculteit
Stap 7: Stop

Wat kunt u doen met een algoritme?

Het is een functie of een reeks functies die een probleem oplossen. We kunnen een algoritme gebruiken om het eenvoudigste probleem en enkele van de moeilijkste problemen ter wereld op te lossen. We besluiten dat het optimaal is met behulp van "tijdcomplexiteit". Simpel gezegd, tijdcomplexiteit is een manier om de looptijd van een bepaald algoritme te beschrijven. Er is een minimale runtime (kleine 'O' genoemd), gemiddelde runtime en worst case run time O (N) (ook bekend als grote 'O'). Computerwetenschappers en software-ingenieurs denken graag aan algoritmen omdat ze geïnteresseerd zijn in het evalueren en bouwen van collecties van best practices, zodat ze niet helemaal opnieuw hoeven te beginnen bij elke instantie van een vergelijkbare klasse problemen. Hieronder ziet u een voorbeeld van verschillende tijdcomplexiteiten die u kunt krijgen bij het oplossen van een specifiek probleem. Dat betekent ook dat er meerdere oplossingen voor een enkel probleem kunnen zijn, maar we moeten de meest optimale kiezen door de tijdcomplexiteit van de algoritmen te berekenen. In interviews wordt u gevraagd om een ​​probleem op te lossen en verder wordt u gevraagd om het te optimaliseren, dwz om de looptijd van uw algoritme te verminderen. U hebt bijvoorbeeld code geschreven met 2 "for" -lussen (iteratie), maar het is mogelijk dat de taak kan worden bereikt door slechts één "for" -lus (iteratie) te gebruiken, maar u hebt deze oplossing nog niet bereikt en toch moet je meer weten!

Afbeeldingsbron: https://goo.gl/

Voordelen van algoritme

  1. Het is een stapsgewijze weergave van een oplossing voor een bepaald probleem, waardoor het gemakkelijk te begrijpen is.
  2. Het gebruikt een duidelijke procedure.
  3. Het is onafhankelijk van elke programmeertaal, dus het is gemakkelijk te begrijpen voor iedereen, zelfs zonder programmeerkennis.
  4. Elke stap heeft zijn eigen logische volgorde en is daarom gemakkelijk te debuggen.
  5. Door het algoritme te gebruiken, wordt het probleem opgedeeld in kleinere stukken of stappen, daarom is het voor een programmeur gemakkelijker om het in een echt programma om te zetten

Benodigde vaardigheden

Om een ​​robuust en beste tijdcomplexiteitsalgoritme te ontwerpen, moet men goed logisch denken en goed zijn in wiskunde en ten minste één objectgeoriënteerde programmeertaal kennen. Kennis van datastructuur is ook nodig.

  1. Computers - Meer informatie over arrays, gekoppelde lijsten, binaire bomen, hashtabellen, grafieken, stapels, wachtrijen, heaps en andere fundamentele gegevensstructuren.
  2. Wiskunde - Leer meer over verzamelingenleer, eindige toestandsmachines, reguliere expressies, matrixvermenigvuldiging, bitgewijze bewerkingen, het oplossen van lineaire vergelijkingen en andere belangrijke concepten zoals permutaties, combinaties, postvakprincipe.
  3. Big-O & Runtime - Leer wat Big-O is en hoe u de looptijden van algoritmen kunt analyseren.

Waarom zouden we gebruiken en waarom hebben we een algoritme nodig?

Men moet het algoritme gebruiken omdat het ons werk vergemakkelijkt en het ons de meest optimale oplossing biedt. Als we geen algoritme toepassen voordat we een complex probleem oplossen, zijn er grote kansen dat we richtingloos gaan in termen van een oplossing. Met het algoritme besparen we onze tijd bij het oplossen van problemen en zorgen we ervoor dat de optimaliteit van het oplossingsalgoritme, zoals eerder gezegd, onafhankelijk is van elke programmeertaal, dus iedereen kan een algoritme ontwerpen, maar om een ​​echt goed algoritme te ontwerpen, moet goed zijn in logica en wiskunde. Het dient als een prototype van een oplossing.

Stel je bijvoorbeeld voor dat we twee Rubik's Cubes voor ons hebben. Een daarvan mag je algoritmen gebruiken (zoals hoe vaak of in welke richting je een gezicht moet draaien), en de andere moet je eigen weg vinden. Welke manier zal sneller zijn? Het zal zeker de eerste zijn.

Laten we een interessant voorbeeld nemen:

Laten we zeggen dat we een reeks elementen hebben die we graag in oplopende volgorde willen sorteren. Nu is daar een andere algoritmische benadering voor. We zullen ons concentreren op de tijdcomplexiteit van 2 van hen: Sortering invoegen en Sorteren samenvoegen

Invoegsortering: Invoegsortering is een eenvoudige sortering.
(Tijdcomplexiteit is O (N 2).)

Sorteer samenvoegen: Bij samenvoegen sorteren we de elementen met de methode Verdeel en Verover.
Tijdcomplexiteit is O (N log N).

Dit kan de impact zijn die u zou ondervinden als u geen en geen analyse uitvoert.

Algoritme Scope

Door algoritme te leren en te beheersen, zou je de kunst van het probleemoplossen kennen. Met goede praktijken en continu leren, zou u complexe problemen moeten kunnen oplossen. Het is de basis voor het ontwerpen van een stuk software of code, omdat de looptijd van de code een van de belangrijkste factoren is bij het bepalen van de uitvoering van een bepaalde taak. Technische reuzen van over de hele wereld zoals Google en Facebook beoordelen uw probleemoplossende vaardigheden en in interviews hebben de meeste vragen betrekking op het ontwerpen van algoritmen en het oplossen van problemen. U wordt gevraagd om een ​​algoritme te ontwerpen en te optimaliseren voor de best mogelijke complexiteitstijd.

Enkele punten:

  • Dit verbetert je probleemoplossende vaardigheden waardoor je beter kunt concurreren op interviews of online examens
  • U zult uw tijd verkorten bij het oplossen van elk probleem.
  • Bijna alle technische reuzen huren kandidaten in op basis van hun betere probleemoplossende vaardigheden
  • Men kan het meeste uit een programmeertaal halen door te leren hoe een algoritme te construeren en ontwerpen

Wie is de juiste doelgroep om Algorithm-technologieën te leren?

Vanuit een informatica-perspectief moet iedereen die weinig of meer programmeert algoritmen leren. Als u code schrijft die uw probleem niet oplost, of als het het probleem oplost, maar bronnen inefficiënt gebruikt (het duurt bijvoorbeeld lang om uit te voeren of het gebruikt teveel computergeheugen), dan is uw code niet de optimale . Maar de bedrijven willen dat hun software of producten in de kortst mogelijke tijd reageren of worden uitgevoerd.

Iedereen die iets ontwikkelt, moet leren hoe een analyse over een algoritme moet worden uitgevoerd om een ​​optimale werking van het eindproduct te garanderen.

Hoe het algoritme u zal helpen bij de groei van uw carrière?

Ontwerp en analyse van een algoritme is geen rol (specifiek) maar het komt als onderdeel van uw taak en dit onderdeel speelt een cruciale rol in de ontwikkeling van code. Als u een goed algoritme ontwerpt, schrijft u goede codes met een optimale oplossing en blinkt uiteindelijk uw eindproduct dat aan de klanten wordt geleverd uit. Dus als u software ontwerpt en / of ontwikkelt, is kennis van en ervaring met gegevensstructuren en algoritmen essentieel. Stel dat u aan een softwareontwikkelingsproduct werkt, de reactie ervan moet grondig worden getest (u wilt natuurlijk de looptijd van het proces controleren voordat u de code aan het softwaretestteam overhandigt) en dit is niet iets dat u zou kunnen raad bijna vooraf nauwkeurig, maar je moet de analyse van een algoritme gebruiken om de tijdcomplexiteit te berekenen.

Conclusie

Dus zoals we een inleidende beschrijving van algoritmen en de verschillende aspecten ervan hebben gezien, en we hebben gezien dat er verschillende benaderingen kunnen zijn om een ​​bepaald probleem op te lossen en Big-O en Time-complexiteit zijn de parameters die ons helpen om de meest optimale oplossing te kiezen. Door een groot aantal algoritmen te verkennen, wordt u fundamenteel sterk in de analyse van algoritmen en moet u in staat zijn om analyses eenvoudig over algoritmen te ontwerpen en uit te voeren.

Aanbevolen artikelen

Dit is een gids geweest voor Wat is een algoritme. Hier hebben we de werking van algoritmen met voorbeelden en de verschillende aspecten ervan besproken. U kunt ook onze andere voorgestelde artikelen doornemen voor meer informatie -

  1. Wat is Tableau Server?
  2. Gids voor Big data-analyse
  3. Wat is SQL Developer?
  4. Wat is Informatica