I matematikk, informatikk og andre relaterte doktriner er algoritmen definert som et sett med etablerte og utvetydige forskrifter, funnet metodisk og på en begrenset måte, som gjør det mulig å utføre beregninger, behandle viss informasjon, gi løsninger på problemer og utføre ulike aktiviteter. Når du starter fra en innledende tilstand og en oppføring, etter de nødvendige prosedyrene, oppnås den endelige tilstanden og et resultat oppnås. Algoritmer er gjenstand for forespørsel om algoritmikk, og selv om mange kanskje ikke tror det, kan de også brukes i alle aspekter av hverdagen.
Hva er en algoritme
Innholdsfortegnelse
I databehandling defineres det vanligvis som en rekke sekvensielle instruksjoner, der noen prosesser utføres for å gi svar på bestemte beslutninger eller behov. På samme måte brukes algoritmer ofte i logikk og matematikk, i tillegg til å være grunnlaget for utvikling av brukerhåndbøker, illustrative pamfletter, blant andre. En av de mest fremtredende i matematikk er den som tilskrives geometristen Euklides, for å oppnå den største fellesdeleren av to heltall som er positive, og den velkjente "Gaussiske metoden" for å bestemme systemer for lineære ligninger.
I forhold til informatikk kan denne beregningen være kjent som sekvensen av retningslinjer for å bestemme et problem ved bruk av en datamaskin.
Derfor forstås algoritmer som en disiplin som fokuserer på analyse og utforming av algoritmer. Med tanke på den første søker den å undersøke egenskaper som dens korrekthet og effektivitet med hensyn til tid og rom, for å forstå problemene som kan løses algoritmisk. Når det gjelder det andre, søker det å studere allerede etablerte paradigmer og foreslår nye eksempler.
Algoritmen er plassert i sentrum av fremdriften i databehandling og er viktig i de forskjellige områdene av den. På denne måten ville det være umulig for tjenester som er så vellykkede som Facebook og Google å håndtere omfanget av informasjonen de har uten samarbeid mellom algoritmer eller spesialiserte datastrukturer. Imidlertid blir det også brukt algoritmer i dagliglivet, et eksempel på dette er tenningen på ovnen, siden den begynner i det øyeblikket personen går til kjøkkenet, observerer den og har sin slutt når den fortsetter å tenne den..
Kjennetegn ved en algoritme
Selv om algoritmen er kjent som det ordnede og endelige settet med forskjellige trinn som fører til løsning av et problem, sies det at arten av disse vanskelighetene varierer i henhold til konteksten de blir funnet i, på denne måten er det problemer kjemisk, matematisk, filosofisk, blant andre. Dermed kan det sies at dens natur er variert, og at den ikke er utført av datamaskinen. Utover alt som er forklart tidligere, har algoritmer egenskaper som er grunnleggende for å bestemme hva de er i dag, og vil bli nevnt nedenfor.
- Retningslinjene i en algoritme må være spesifikke for å unngå å gi rom for enhver form for forvirring, dette betyr at de tilsvarende instruksjonene må følges på riktig måte, eller tvert imot, den grafiske representasjonen av strømmen du registrerer deg i vil ikke lette løsningen. riktig.
- Det må være i perfekt definisjon, og prøve så mye som mulig å følge den så mange ganger som nødvendig, for å oppnå det samme resultatet, og i tilfelle det motsatte skjer, vil algoritmen ikke være pålitelig og vil ikke tjene som en guide når du tar en beslutning.
- De er kjent for å være endelige, de slutter vanligvis på et tidspunkt og senere gir de et resultat på slutten av hvert trinn. Hvis algoritmen strekker seg på ubestemt tid, og går tilbake til et startpunkt som aldri kan løses, er det tilstedeværelsen av et paradoks eller den velkjente "sløyfen" av repetisjoner.
- Til slutt sies det at lesbarheten til algoritmene er nøkkelelementet, for hvis argumentet er uforståelig, kunne ikke de tilsvarende instruksjonene følges, i tillegg innebærer det en direkte, klar og lakonisk formulering av teksten som finnes i hver enkelt.
Deler av en algoritme
Hver algoritmisk operasjon har tre forskjellige deler som er underlagt den grunnleggende strukturen i et system, og disse er:
- Inngang: også kalt topptekst eller utgangspunkt, det er den første instruksjonen som representerer algoritmens tilblivelse og den som motiverer lesingen.
- Prosess: også kalt erklæring, det er den nøyaktige utdypingen som tilbys av algoritmen, og det er i utgangspunktet stammen til nøklene for formuleringen av instruksjoner.
- Output: i denne siste fasen er de spesifikke instruksjonene bestemt av algoritmen, for eksempel dens kommandoer eller oppløsninger.
Eksempler på algoritmer
Vanlige eksempler på matematikkberegninger inkluderer 2 + 3 = 5 for tillegg og 15-9 = 6 for subtraksjon. En annen måte å visualisere enkle algoritmer er i kjøkkenoppskrifter, siden de beskriver en spesifikk og ryddig prosess, for eksempel, "først må du plassere en halv gryte med vann for å varme opp, så må du legge til en klype salt og til slutt pepper blir delt for å trekke ut frøene og venene. " I denne modellen presenteres en begynnelse, en prosess og en slutt, som i utgangspunktet er det som definerer algoritmene.
Algoritmetyper
Blant de forskjellige typene algoritmer som finnes over hele verden, er det lagt vekt på de som er klassifisert i henhold til et skiltesystem og andre i henhold til deres funksjon. Algoritmen er i utgangspunktet den mest kjente løsningen for å løse et bestemt problem, og i henhold til strategiene og dens funksjoner er det forskjellige typer av disse, blant annet dynamiske, omvendte, brute force, opportunistiske, markering, tilfeldig osv. I tillegg til algoritmene nevnt ovenfor, er det tusenvis av disse som er egnet for å løse vanskeligheter i ethvert område.
I følge skiltesystemet ditt
Kvalitativ og kvantitativ er lokalisert i denne kategorien.
- Kvalitative algoritmer er preget av å ha verbale elementer, et eksempel på disse er instruksjonene eller den anerkjente "trinn for trinn" som blir gitt muntlig, slik som oppskrifter for matlaging eller prosedyrer for å utføre manuelt arbeid.
- Kvantitative algoritmer er helt motsatt av kvalitative, på grunn av tilstedeværelsen av visse numeriske elementer og bruken av matematikk for å utføre beregninger, for eksempel når kvadratroten blir funnet eller ligninger er løst.
Innenfor denne klassifiseringen er det også beregnings- og ikke-beregningsalgoritmer. De beregningsmessige utføres ved hjelp av en datamaskin og kjennetegnes ved å være så kompliserte til det punktet at det kreves at en maskin utføres, i tillegg til dette er de kvantitative algoritmer som kan optimaliseres. Ikke-beregningsmessige har ikke forpliktelse til å bli utført ved hjelp av en maskin eller datamaskin; et tydelig eksempel på dette er programmeringen av en TV.
I henhold til funksjonen
Følgende er lokalisert i denne klassifiseringen.
1. Merkealgoritme
Dette kjennetegnes ved å bruke automatisering til å sette priser på en flittig måte, med fokus på faktorer som brukeratferd, og er også kjent som muligheten til automatisk å bestemme priser for devaluering av komponenter, for å øke fortjenesten til brukerne. selgere. Det har spilt en svært viktig rolle i felles praksis av flyselskapet industri siden tidlig på 1990-tallet.
Merkealgoritmen utmerker seg ved å være en av de vanligste metodene i konkurransedyktige næringer, med henvisning til reisebyråer eller de nettbaserte etablissementene. Denne typen algoritmer kan være ekstremt kompliserte eller relativt enkle, siden det i mange tilfeller blir lagt merke til at de er optimalisert eller selvlært med kontinuiteten i visse tester. Utover alt dette, kan taggingsalgoritmer også bli upopulære blant klientell, ettersom enkeltpersoner har en tendens til å verdsette både stabilitet og rettferdighet.
2. Probabilistiske algoritmer
Det er de som måten resultatene oppnås på, avhenger av sannsynlighetene, disse er ofte kjent som tilfeldige algoritmer.
I noen applikasjoner er håndtering av denne typen operasjoner vanlig, for eksempel når oppførselen til ethvert eksisterende eller utviklet system simuleres over tid, hvor en tilfeldig løsning oppnås som en konsekvens. Under andre omstendigheter er problemet som må løses vanligvis deterministisk, men det er muligheten for å transformere det til et tilfeldig, for å løse det ved å bruke sannsynlighetsalgoritmen. Det positive ved det tilfeldige er at applikasjonen ikke krever svært sofistikerte matematiske studier.
I tillegg er det innen denne gruppen tre hovedtyper som er kjent som numeriske, Monte Carlo og Las Vegas.
- Numeriske algoritmer kan gi et omtrentlig resultat av problemet og brukes vanligvis innen ingeniørfag.
- Monte Carlo-algoritmer kan gi riktig eller feil løsning og ha en viss feilmargin og til slutt.
- Las Vegas-algoritmer utmerker seg ved å aldri legge igjen feil svar, de finner faktisk den riktige løsningen eller bare informerer deg om mulig feil.
Dynamisk programmering refererer til metoden der algoritmen beregner resultatene. Noen ganger avhenger løsningene av visse elementer som har problemene, av resultatene av andre mindre problemer. Så, for å løse disse, må de samme verdiene beregnes på nytt for å løse de minste delproblemene, men dette kan skape bortkastede sykluser. For å fikse dette kan dynamisk programmering brukes, og i dette tilfellet huskes løsningen på hvert delproblem, å bruke den samme verdien i stedet for å gjenta den flere ganger.
3. Heuristiske algoritmer
De utmerker seg ved å finne løsninger, og til og med garanterer de ikke at det beste av svarene blir funnet. Av denne grunn kan de betraktes som tilnærmet algoritmer. Disse kan brukes når det er umulig å finne en løsning gjennom en normal rute. Heuristikk gir bruken som vil bli forklart nedenfor. I planleggingen brukes de til å planlegge aktiviteter på kort tid, i design brukes de til å avgrense elektriske eller digitale systemer, og i simulering brukes de til å verifisere visse prosedyrer.
4. Backtracking-algoritmer
De er kjent som rekursive strategier som løser problemer som gåter, labyrinter eller lignende brikker, der det utføres et dypt søk for å finne en mulig løsning. Navnet refererer til det faktum at i henvendelsene som er gjort for å finne et resultat, går det alltid tilbake til forrige punkt for å kunne teste alternativer. Disse blir vanligvis tilbakekalt for å observere deres innvirkning på økonomien, på markedene, på prismerking, på visse operasjoner og til og med på samfunnet selv.
5. Grådig algoritme
Det er kjent som ødelegger eller søt tann og kan brukes i optimaliseringsproblemer. I hvert trinn i denne algoritmen blir det tatt et logisk og optimalt valg for å ende opp med de beste av de globale løsningene. Det må imidlertid tas i betraktning at når en dom er nådd, kan absolutt ingenting gjøres for å korrigere eller endre den i fremtiden. Denne operasjonen har dette navnet fordi i hvert trinn velges den beste fraksjonen som er i stand til å "svelge" uten å bekymre seg for hva som skjer senere.
Egenskaper til en algoritme
Ulike forfattere har prøvd å definere algoritmer på en formell måte mens de bruker matematiske modeller. Imidlertid er disse prøvene nært beslektet med en spesiell type informasjon som inkluderer tall, symboler og noen grafer, mens de opererer på en enorm mengde datadistribusjon. Generelt er den felles deltakelsen til hver av definisjonene oppsummert i følgende tre egenskaper:
Problemstilling
Problemløsing ved hjelp av en datamaskin kan bestå av en prosess der et problem er beskrevet og et program som er i stand til å løse det, kan utvikles. Denne prosessen krever analyse av problemet, utformingen av en algoritme og transformasjonen til et program, samt ytelse og validering. De to første trinnene er de mest komplekse i denne prosessen, men når du har undersøkt problemet og fått en algoritme som kan løse det, er oppgaven din primært basert på å oversette det til ønsket programmeringsspråk.
Analyse av den generelle løsningen
Når problemet er definert, er det på tide å analysere følgende:
- Den informasjon av billettene som de gir oss.
- De ønskede resultatene.
- Arbeidsdomenet, uttalelser eller andre nødvendige elementer.
Analysen av algoritmer er kjent som den viktigste delen av den bredere beregningskompleksitetsteorien, da den gir teoretiske beregninger for ressursene som en hvilken som helst algoritme krever for å løse et gitt beregningsproblem. Når du utfører en teoretisk undersøkelse, er det vanlig å beregne komplikasjonene i asymptotisk forstand for å oppnå en stor nok inngangsstørrelse. Den asymptotiske øvre grensen sammen med theta- og omega-notasjoner brukes til dette formålet, og det bør bemerkes at det ikke-asymptotiske tiltaket kan datamatiseres.
Nøyaktige målinger av effektivitet er veldig nyttige for de som faktisk bruker algoritmene, ettersom de har mer presisjon, og dette lar dem bestemme tiden det vil ta å utføre. For noen individer som videospillskapere kan den skjulte konstanten bety en stor forskjell mellom suksess og fiasko. Tidsevalueringer kan avhenge av hvordan et bestemt trinn defineres, og for at analysen skal gi mening, må det garanteres at tiden er markert begrenset av en konstant.
Utdyping av algoritmen
For å gjennomføre utviklingen av en operasjon er det viktig at det utføres en rekke prosedyrer for å overholde løsningen på et problem. For å begynne må en tidligere analyse av vanskeligheten utføres, og dette gjøres gjennom en studie som demonstrerer den virkelige driften av problemet lenge før noen algoritme blir utført. Derfor blir definisjonen av krav evaluert. I dette trinnet må du ha en klar ide om hva problemene du skal løse, det være seg summen av to tall, rekkefølgen på en liste med tall osv.
Senere blir den respektive identifikasjonen av moduler utført, siden riktig ytelse av algoritmer er avhengig av det for å gi mulige løsninger på kravene som ble identifisert ovenfor.
Til slutt implementeres beregningen på et programmeringsspråk som er forståelig av en datamaskin, slik at den er i stand til å forstå instruksjonene den modellerer og dermed være i stand til å gjennomføre dem og nå det forventede resultatet. I denne siste prosedyren kan man allerede snakke om et program som er sammensatt av en serie instruksjoner som bestilles etter hverandre og klarer å løse etablerte krav.
Det er viktig å nevne at i sekvensiell tid utfører algoritmene sin funksjon i en diskretisert tid og søker å definere sekvensene av beregningstilstander i hver inngang som anses som gyldig. I den abstrakte tilstanden er disse operasjonene uavhengige elementer, og det anses at i dem kan ordenstrukturene bli invariante under isomorfisme. I avgrenset utforskning blir overgangene fra en stat til en annen fullstendig etablert av en permanent og endelig forklaring, der bare det begrensede antall vilkår for den nåværende tilstanden blir tatt i betraktning mellom en stat og den neste.
Det skal heller ikke overses at algoritmer vanligvis uttrykkes gjennom programmeringsspråk "pseudokoder" det vanlige språket og til og med de kjente flytskjemaene. På samme måte er det viktig å nevne at algoritmer spiller en grunnleggende rolle i databehandling på grunn av deres fremstilling av data som sekvenser av biter. Fra en annen vinkel defineres et program som algoritmen som uttrykker de spesifikke trinnene som det må følge for å utføre bestemte aktiviteter for datamaskinen. På den annen side gjør det seg enklere å lære å skrive pseudokode og vil derfor bli forklart senere.
Programmeringsspråk er kjent som et formelt eller kunstig språk fordi de har grammatikkregler som er godt definert, det har evnen til å gi programmereren muligheten til å tekstualisere en serie instruksjoner eller sekvenser av regler i form av algoritmer med det formål for å opprettholde en kontroll med tanke på datamaskinens fysiske og logiske oppførsel, på denne måten kan de forskjellige typer informasjon nås. Dette settet med forskrifter skrevet gjennom et programmeringsspråk kalles et program.
Programmeringsspråk består vanligvis av et sett med symboler og grammatiske og semantiske regler som definerer språkets nåværende strukturer og deres betydning. Fra et annet perspektiv inkluderer dataspråk også programmeringsspråk, et tydelig eksempel på dette er HTML, som er det som oppfyller visse instruksjoner for å utføre innholdet i forskjellige dokumenter. Programmeringsspråket kan tillate presis spesifisering av dataene som må drives av spesifikk programvare under en variert skala av omstendigheter.
På den annen side er pseudokode det algoritmiske beskrivelsesspråket som bruker de grunnleggende konvensjonene til et ekte programmeringsspråk, men som er designet for menneskelig lesing i stedet for å lese gjennom en maskin, og opprettholde uavhengighet fra andre typer programmeringsspråk. Pseudokoden ignorerer detaljer som ikke anses som essensielle for menneskelig forståelse av algoritmen, for eksempel systemkoder, variable erklæringer og til og med noen underrutiner. På denne måten søker programmeringsspråket å bli supplert med presise beskrivelser på naturlig språk eller med kompakte matematiske notasjoner.