I matematik, datavetenskap och andra relaterade doktriner definieras algoritmen som en uppsättning etablerade och entydiga föreskrifter, som finns metodiskt och på ett begränsat sätt, som gör det möjligt att utföra beräkningar, bearbeta viss information, tillhandahålla lösningar på problem och utföra olika aktiviteter. När du har startat från ett initialt tillstånd och en inmatning, enligt de förfaranden som krävs, uppnås det slutliga tillståndet och ett resultat erhålls. Algoritmer är föremål för utredning av algoritmer och även om många kanske inte tror det, kan de också användas i alla aspekter av vardagen.
Vad är en algoritm
Innehållsförteckning
Vid beräkning definieras det vanligtvis som en följd av sekventiella instruktioner, där vissa processer utförs för att svara på vissa beslut eller behov. På samma sätt används algoritmer ofta inom logik och matematik, och utgör också grunden för utarbetandet av användarmanualer, bland annat illustrativa broschyrer. En av de mest framstående i matematik är den som tillskrivs geometristen Euklid, för att nå den största gemensamma delaren av två heltal som är positiva och den välkända "Gaussiska metoden" för att bestämma system för linjära ekvationer.
I förhållande till datavetenskap kan denna beräkning kallas för att följa riktlinjer för att fastställa ett problem genom användning av en dator.
Därför förstås algoritmer som en disciplin som fokuserar på analys och design av algoritmer. Med tanke på det första försöker det undersöka egenskaper som dess korrekthet och effektivitet med avseende på tid och rum, för att förstå de problem som kan lösas algoritmiskt. När det gäller den andra försöker den studera de redan etablerade paradigmerna och föreslår nya exempel.
Algoritmen är beläget i centrum av utvecklingen av datorer och är viktig i de olika områdena i det. På detta sätt skulle det vara omöjligt för tjänster så framgångsrik som Facebook och Google för att hantera omfattningen av information de har utan samarbete med algoritmer eller specialiserade uppgifter strukturer. Men i det dagliga livet används också algoritmer, ett exempel på detta är tändningen av kaminen, eftersom den börjar i det ögonblick då personen går till köket, observerar den och har sitt slut när den fortsätter att tända den..
Egenskaper för en algoritm
Även om algoritmen är känd som den ordnade och ändliga uppsättningen av olika steg som leder till lösning av ett problem, sägs det att beskaffenheten hos dessa svårigheter varierar beroende på det sammanhang i vilket de finns, så det finns problem kemiska, matematiska, filosofiska, bland andra. Således kan man säga att dess natur är varierad och dess exekvering via datorn inte är nödvändig. Utöver allt som förklarats tidigare har algoritmer egenskaper som är grundläggande för att avgöra vad de är idag och kommer att nämnas nedan.
- Riktlinjerna i en algoritm måste vara specifika för att undvika att lämna utrymme för någon form av förvirring, detta innebär att motsvarande instruktioner måste följas på lämpligt sätt, eller tvärtom, den grafiska representationen av det flöde som du registrerar dig kommer inte att underlätta lösningen. korrekt.
- Det måste vara i perfekt definition, försöka så mycket som möjligt att följa det så många gånger som nödvändigt, för att uppnå samma resultat och om det motsatta händer kommer algoritmen inte att vara tillförlitlig och kommer inte att fungera som en vägledning när man fattar ett beslut.
- De är kända för att vara ändliga, de slutar vanligtvis vid någon tidpunkt och senare ger de ett resultat i slutet av varje steg. Om algoritmen sträcker sig på obestämd tid och återgår till någon initial punkt som aldrig kan lösas, finns det en paradox eller den välkända "loop" av repetitioner.
- Slutligen sägs det att algoritmernas läsbarhet är nyckelelementet, för om dess argument är obegripligt kunde motsvarande instruktioner inte följas, dessutom innebär det en direkt, tydlig och lakonisk formulering av texten som finns i var och en.
Delar av en algoritm
Varje algoritmisk operation har tre olika delar som utsätts för systemets grundstruktur och dessa är:
- Ingång: kallas även rubrik eller startpunkt, det är den första instruktionen som representerar algoritmens ursprung och den som motiverar dess läsning.
- Process: även kallad deklaration, det är den exakta utvecklingen som erbjuds av algoritmen och det är i grunden stammen för dess nycklar för formuleringen av instruktioner.
- Output: i den här sista fasen bestäms de specifika instruktionerna av algoritmen, till exempel dess kommandon eller upplösningar.
Exempel på algoritmer
Vanliga exempel på matematiska beräkningar inkluderar 2 + 3 = 5 för addition och 15-9 = 6 för subtraktion. Ett annat sätt att visualisera enkla algoritmer är i köksrecept, eftersom de beskriver en specifik och ordnad process, till exempel ”först måste du placera en halv kruka vatten för att värma, sedan måste du lägga till en nypa salt och slutligen peppar delas upp för att extrahera frön och venerna. " I denna modell presenteras en början, en process och ett slut, vilket i princip är det som definierar algoritmerna.
Algoritmtyper
Bland de olika typerna av algoritmer som finns över hela världen läggs tonvikten på de som klassificeras enligt ett system av tecken och andra beroende på deras funktion. Algoritmen är i princip den mest kända lösningen för att lösa ett visst problem och enligt dess strategier och dess funktioner finns det olika typer av dessa, bland vilka den dynamiska, omvända, brutala kraften, opportunistiska, markeringen sticker ut., slumpmässiga etc. Förutom de ovan nämnda algoritmerna finns det tusentals av dessa som är lämpliga för att lösa svårigheter inom alla områden.
Enligt ditt skyltsystem
Kvalitativa och kvantitativa finns i denna kategori.
- Kvalitativa algoritmer kännetecknas av att de har verbala element, ett exempel på dessa är instruktionerna eller det igenkända "steg för steg" som ges muntligt, såsom recept för matlagning eller procedurer för manuellt arbete.
- Kvantitativa algoritmer är helt motsatsen till kvalitativa, på grund av förekomsten av vissa numeriska element och användningen av matematik för att utföra beräkningar, till exempel när kvadratroten hittas eller ekvationer löses.
Inom denna klassificering finns också beräknings- och icke-beräkningsalgoritmer. De beräkna utförs med hjälp av en dator och kännetecknas av att de är så komplexa att de kräver att en maskin utförs, förutom detta är de kvantitativa algoritmer som kan optimeras. Icke-beräkningsbara har inte skyldigheten att köras med hjälp av en maskin eller dator; ett tydligt exempel på detta är programmeringen av en TV.
Enligt dess funktion
Följande finns i denna klassificering.
1. Märkningsalgoritm
Detta kännetecknas av att använda automatisering för att sätta priser på ett flitigt sätt, med fokus på faktorer som användarnas beteende och är också känd som förmågan att automatiskt bestämma priser för devalvering av komponenter för att öka användarnas vinster. säljare. Det har spelat en mycket viktig roll i de gemensamma metoder för flygindustrin sedan början av 1990-talet.
Markeringsalgoritmen kännetecknas av att den är en av de vanligaste metoderna i mycket konkurrenskraftiga branscher, med hänvisning till resebyråer eller de online-anläggningarna. Denna typ av algoritm kan bli extremt komplex eller relativt enkel, eftersom det i många fall noteras att de är optimerade eller självlärda med kontinuiteten i vissa tester. Utöver allt detta kan taggningsalgoritmer också bli opopulära hos kundkretsen eftersom individer tenderar att värdesätta både stabilitet och rättvisa.
2. Probabilistiska algoritmer
Det är de på vilka sätt resultaten uppnås beror på sannolikheterna, dessa är allmänt kända som slumpmässiga algoritmer.
I vissa applikationer är hanteringen av denna typ av operation vanligt, till exempel när beteendet hos något befintligt eller utformat system simuleras över tiden, i vilket en tillfredsställande lösning erhålls som en konsekvens. Under andra omständigheter är problemet som ska lösas vanligtvis deterministiskt, men det finns möjligheten att omvandla det till ett tillfälligt problem för att lösa det genom att använda sannolikhetsalgoritmen. Det positiva med det slumpmässiga är att dess tillämpning inte kräver mycket sofistikerade matematiska studier.
Dessutom finns det inom denna grupp tre huvudtyper som kallas numeriska, Monte Carlo och Las Vegas.
- Numeriska algoritmer kan ge ett ungefärligt resultat av problemet och används vanligtvis inom teknik.
- Monte Carlo-algoritmer kan ge rätt eller fel lösning och ha en viss felmarginal och slutligen.
- Las Vegas algoritmer kännetecknas av att de aldrig lämnar ett felaktigt svar, i själva verket hittar de rätt lösning eller bara informerar dig om det eventuella misslyckandet.
Dynamisk programmering avser metoden där algoritmen beräknar resultaten. Ibland beror lösningarna på vissa element som har problemen på resultatet av andra mindre problem. Så för att lösa dessa måste samma värden räknas om för att lösa de minsta delproblemen, men detta kan skapa slöseri med cykler. För att åtgärda detta kan dynamisk programmering användas och i det här fallet minns lösningen för varje delproblem att använda samma värde istället för att upprepa det flera gånger.
3. Heuristiska algoritmer
De kännetecknas av att hitta lösningar och ändå garanterar de inte att de bästa svaren kommer att hittas, av den anledningen kan de betraktas som ungefärliga algoritmer. Dessa kan användas när det är omöjligt att hitta en lösning på en normal väg. Heuristik tillhandahåller användningen som kommer att förklaras nedan. Vid planering används de för att schemalägga aktiviteter på kort tid, i design används de för att avgränsa elektriska eller digitala system och i simulering används de för att verifiera vissa procedurer.
4. Backtracking-algoritmer
De är kända som rekursiva strategier som löser problem som pussel, labyrinter eller liknande bitar, där en djupgående sökning görs för att hitta en möjlig lösning. Dess namn hänvisar till det faktum att det i förfrågningarna för att hitta ett resultat alltid går tillbaka till föregående punkt för att kunna testa alternativ. Dessa återkallas vanligtvis för att observera deras inverkan på ekonomin, på marknaderna, på prismarkering, på vissa verksamheter och till och med på samhället i sig.
5. Häftig algoritm
Det är känt som förstöraren eller den söta tanden och det är tillämpligt i optimeringsproblem, i varje steg i denna algoritm görs ett logiskt och optimalt val för att få de bästa av de globala lösningarna. Det måste dock tas med i beräkningen att när en dom har fattats kan absolut ingenting göras för att korrigera eller ändra den i framtiden. Denna operation har detta namn eftersom i varje steg väljs den bästa fraktionen som kan "svälja" utan att oroa sig för vad som händer senare.
Egenskaper hos en algoritm
Olika författare har försökt definiera algoritmer på ett formellt sätt medan de använder matematiska modeller. Dessa exemplar är emellertid nära besläktade med en märklig typ av information som inkluderar siffror, symboler och några grafer, medan de arbetar med en stor mängd datafördelning. I allmänhet sammanfattas det gemensamma deltagandet av var och en av definitionerna i följande tre egenskaper:
Problemförklaring
Lösningen av problem med hjälp av en dator kan bestå av den process där ett problem beskrivs och ett program som kan lösa det får utvecklas. Denna process kräver analys av problemet, utformningen av en algoritm och dess omvandling till ett program, samt dess prestanda och validering. De två första stegen är de mest komplexa i denna process, men när du väl har granskat problemet och fått en algoritm som kan lösa det, är din uppgift främst baserad på att översätta det till önskat programmeringsspråk.
Analys av den allmänna lösningen
När problemet väl är definierat är det dags att analysera följande:
- Den informationen av biljetterna som de tillhandahåller oss.
- De önskade resultaten.
- Arbetsområdet, uttalanden eller andra nödvändiga element.
Analysen av algoritmer är känd som den viktigaste delen av den bredare beräkningskomplexitetsteorin, eftersom den ger teoretiska beräkningar för de resurser som en algoritm kräver för att lösa ett givet beräkningsproblem. När man utför en teoretisk undersökning är det vanligt att beräkna dess komplikationer i asymptotisk mening för att få en tillräckligt stor ingångsstorlek. Den asymptotiska övre gränsen tillsammans med teta- och omega-notationer används för detta ändamål och det bör noteras att det icke-asymptotiska måttet kan datoriseras.
Exakta effektivitetsåtgärder är verkligen användbara för dem som faktiskt använder algoritmerna, eftersom de har mer precision och detta gör att de kan bestämma tiden det tar att köra. För vissa individer som skapare av videospel kan den dolda konstanten betyda en stor skillnad mellan framgång och misslyckande. Tidsutvärderingar kan bero på hur ett visst steg definieras och för att analysen ska bli meningsfull måste det garanteras att tiden är markant begränsad av en konstant.
Utarbetande av algoritmen
För att genomföra utvecklingen av en operation är det viktigt att en serie procedurer genomförs för att följa lösningen på ett problem. Till att börja med måste en tidigare analys av svårigheten utföras och detta görs genom en studie som visar den verkliga funktionen av problemet långt innan någon algoritm genomförs. Därför utvärderas definitionen av krav, i detta steg måste du ha en tydlig uppfattning om vilka problem som ska lösas, vare sig det är summan av två siffror, ordningen av en nummerlista etc.
Senare utförs respektive identifiering av moduler, eftersom korrekt implementering av algoritmer beror på det för att tillhandahålla möjliga lösningar på kraven som identifierats ovan.
Slutligen implementeras beräkningen på ett programmeringsspråk som är förståeligt för en dator så att den kan förstå instruktionerna som den modellerar och därmed kan genomföra dem och uppnå det förväntade resultatet. I den här sista proceduren är det redan möjligt att tala om ett program som består av en serie instruktioner som beställs efter varandra och lyckas lösa fastställda krav.
Det är viktigt att nämna att algoritmerna i sekventiell tid utför sin funktion under en diskretiserad tid och försöker definiera sekvenser för beräkningstillstånd i varje ingång som anses giltig. I det abstrakta tillståndet är dessa operationer oberoende element och det anses att i dessa kan ordningsstrukturerna bli invarianta under isomorfism. Vid begränsad utforskning är övergångar från en stat till en annan helt etablerade av en permanent och ändlig förklaring, där mellan det ena och det andra tillståndet endast det begränsade antalet termer i det aktuella tillståndet beaktas.
Det bör inte heller förbises att algoritmer vanligtvis uttrycks genom “pseudokod” programmeringsspråk, det vanliga språket och till och med de välkända flödesdiagrammen. Likaså är det viktigt att nämna att algoritmer spelar en grundläggande roll vid beräkning på grund av deras framställning av data som sekvenser av bitar. Från en annan vinkel definieras ett program som algoritmen som uttrycker de specifika steg som det måste följa för att uppfylla vissa aktiviteter för datorn. Å andra sidan gör det lättare att lära sig att skriva pseudokod och kommer därför att förklaras senare.
Programmeringsspråk är kända som ett formellt eller artificiellt språk eftersom de har grammatikregler som är väldefinierade, det har förmågan att ge programmeraren möjlighet att textualisera en serie instruktioner eller sekvenser av regler i form av algoritmer med syftet för att upprätthålla kontroll över datorns fysiska och logiska beteende, på detta sätt kan de olika typerna av information nås. Denna uppsättning föreskrifter skrivna med hjälp av ett programmeringsspråk betecknas som ett program.
Programmeringsspråk består vanligtvis av en uppsättning symboler och grammatiska och semantiska regler som definierar språkets nuvarande strukturer och deras betydelse. Ur ett annat perspektiv inkluderar datorspråk också programmeringsspråk, ett tydligt exempel på detta är HTML, som är den som uppfyller vissa instruktioner för att utföra innehållet i olika dokument. Programmeringsspråket kan tillåta en exakt specifikation av de data som måste hanteras av specifik programvara under olika omständigheter.
Å andra sidan är pseudokod det algoritmiska beskrivningsspråket som använder de elementära konventionerna i ett riktigt programmeringsspråk, men som är utformat för mänsklig läsning istället för att läsa igenom en maskin och bibehålla oberoende från någon annan typ av programmeringsspråk. Pseudokoden ignorerar detaljer som inte anses nödvändiga för mänsklig förståelse av algoritmen, såsom systemkoder, variabla deklarationer och till och med vissa underrutiner. På detta sätt försöker programmeringsspråket komplettera sig med exakta beskrivningar på naturligt språk eller med kompakta matematiska notationer.