Matematiikassa, tietojenkäsittelytieteessä ja muissa siihen liittyvissä oppeissa algoritmi määritellään joukoksi vakiintuneita ja yksiselitteisiä määräyksiä, jotka löytyvät metodologisesti ja rajoitetusti, mikä antaa mahdollisuuden suorittaa laskelmia, käsitellä tiettyjä tietoja, tarjota ratkaisuja ongelmiin ja suorittaa erilaisia toimintoja. Kun aloitat alkutilasta ja syötteestä vaadittuja menettelyjä noudattaen, lopputila saavutetaan ja saadaan tulos. Algoritmit ovat algoritmien tutkimuksen kohde, ja vaikka monet eivät ehkä usko sitä, niitä voidaan käyttää myös jokapäiväisessä elämässä.
Mikä on algoritmi
Sisällysluettelo
Laskennassa se määritellään yleensä peräkkäisinä peräkkäisinä käskyinä, joissa suoritetaan joitain prosesseja vastausten antamiseksi tiettyihin päätöksiin tai tarpeisiin. Samalla tavalla algoritmeja käytetään usein logiikassa ja matematiikassa, ja ne ovat perustana muun muassa käyttöohjeiden, havainnollisten esitteiden kehittämiselle. Yksi matematiikan erottuvimmista on geometristisille Euklidille omistettu, jotta saavutetaan kahden positiivisen kokonaisluvun suurin yhteinen jakaja ja tunnettu "Gaussin menetelmä" lineaaristen yhtälöiden järjestelmien määrittämiseksi.
Tietojenkäsittelytieteen osalta tämä laskelma voidaan kutsua ohjeiden sekvenssiksi, jota on noudatettava ongelman määrittämiseksi tietokoneen avulla.
Siksi algoritmi ymmärretään tieteenalana, joka keskittyy algoritmien analysointiin ja suunnitteluun. Ensimmäistä huomioon ottaen se pyrkii tutkimaan ominaisuuksia, kuten sen oikeellisuuden ja tehokkuuden suhteessa aikaan ja tilaan, ymmärtämään ongelmat, jotka voidaan ratkaista algoritmisesti. Toisen osalta se pyrkii tutkimaan jo vakiintuneita paradigmoja ja ehdottaa uusia esimerkkejä.
Algoritmi sijaitsee laskennan etenemisen keskellä ja on tärkeä sen eri alueilla. Tällä tavalla on mahdotonta, että yhtä menestyvät palvelut kuin Facebook ja Google käsittelevät heidän hallussaan olevan informaation suuruutta ilman algoritmien tai erikoistuneiden tietorakenteiden yhteistyötä. Päivittäisessä elämässä käytetään kuitenkin myös algoritmeja, esimerkkinä tästä on lieden sytytys, koska se alkaa sillä hetkellä, kun ihminen menee keittiöön, tarkkailee sitä ja on loppuaan, kun se sytyttää sen..
Algoritmin ominaisuudet
Vaikka algoritmi tunnetaan järjestettyinä ja rajallisina joukkoina eri vaiheista, jotka johtavat ongelman ratkaisemiseen, sanotaan, että näiden vaikeuksien luonne vaihtelee kontekstin mukaan, jossa ne löytyvät, tällä tavalla on ongelmia kemiallinen, matemaattinen, filosofinen, mm. Siten voidaan sanoa, että sen luonne vaihtelee eikä sen suorittaminen tietokoneen kautta ole välttämätöntä. Kaikkien aiemmin selitettyjen lisäksi algoritmeilla on ominaisuuksia, jotka ovat perustavanlaatuisia määritettäessä nykyiset, ja ne mainitaan alla.
- Algoritmin sisältämien ohjeiden on oltava tarkkoja, jotta vältetään kaikenlaisille sekaannuksille jääminen. Tämä tarkoittaa, että vastaavia ohjeita on noudatettava asianmukaisesti, tai päinvastoin, graafinen esitys virrasta, johon ilmoittaudut, ei helpota ratkaisua. oikea.
- Sen on oltava täydellisessä määritelmässä ja yritettävä noudattaa sitä mahdollisimman monta kertaa niin monta kertaa kuin on tarpeen, jotta saadaan sama tulos ja jos päinvastoin tapahtuu, algoritmi ei ole luotettava eikä se toimi oppaana päätöksenteossa.
- Ne tunnetaan äärellisyydestä, ne yleensä päättyvät jossain vaiheessa ja myöhemmin ne antavat tuloksen jokaisen vaiheen lopussa. Jos algoritmi ulottuu loputtomiin ja palaa johonkin lähtöpisteeseen, jota ei voida koskaan ratkaista, on olemassa paradoksi tai tunnettu toistojen "silmukka".
- Lopuksi sanotaan, että algoritmien luettavuus on avainelementti, koska jos sen argumentti on käsittämätön, vastaavia ohjeita ei voitu noudattaa, ja lisäksi siihen liittyy jokaisen tekstin suora, selkeä ja lakoninen sanamuoto.
Algoritmin osat
Jokaisella algoritmisella operaatiolla on kolme eri osaa, jotka ovat järjestelmän perusrakenteen alaisia, ja nämä ovat:
- Input: kutsutaan myös otsakkeeksi tai alkupisteeksi, se on alkuperäinen käsky, joka edustaa algoritmin syntyä ja joka motivoi sen lukemista.
- Prosessi: kutsutaan myös julistukseksi, se on algoritmin tarjoama tarkka kehitystyö ja se on pohjimmiltaan sen avainten runko ohjeiden muotoilussa.
- Lähtö: tässä viimeisessä vaiheessa ovat algoritmin määrittelemät erityiset ohjeet, esimerkiksi sen komennot tai resoluutiot.
Esimerkkejä algoritmeista
Yleisiä esimerkkejä matemaattisista laskelmista ovat 2 + 3 = 5 summaamista varten ja 15-9 = 6 vähennystä varten. Toinen tapa visualisoida yksinkertaisia algoritmeja on keittiöreseptit, koska ne kuvaavat tiettyä ja järjestettyä prosessia, esimerkiksi "ensin sinun tulee laittaa puoli vesipannu vettä lämmittämään, sitten sinun pitäisi lisätä ripaus suolaa ja lopuksi pippuri jaetaan siementen ja hermojen uuttamiseksi. " Tässä mallissa esitetään alku, prosessi ja loppu, jotka periaatteessa määrittelevät algoritmit.
Algoritmityypit
Eri tyyppisten algoritmien nykyisten kaikkialla maailmassa, painotetaan jotka on luokiteltu mukaan järjestelmän merkkejä ja muut niiden toimintojen mukaan. Algoritmi on pohjimmiltaan tunnetuin ratkaisu minkä tahansa ongelman ratkaisemiseen, ja sen strategioiden ja toimintojen mukaan näitä on erilaisia, joista dynaaminen, käänteinen, raaka voima, opportunistinen merkintä erottuu., satunnainen jne. Edellä mainittujen algoritmien lisäksi näitä on tuhansia, jotka soveltuvat ongelmien ratkaisemiseen millä tahansa alueella.
Kylttijärjestelmän mukaan
Laadulliset ja määrälliset ovat tässä luokassa.
- Laadullisille algoritmeille on tunnusomaista, että niissä on sanallisia elementtejä, esimerkkinä niistä ovat ohjeet tai tunnustetut "askel askeleelta", jotka annetaan suullisesti, kuten reseptit kulinaarisille taiteille tai menettelytavat manuaalisen työn suorittamiseksi.
- Kvantitatiiviset algoritmit ovat täysin päinvastaisia kuin kvalitatiiviset, johtuen tiettyjen numeeristen elementtien olemassaolosta ja matematiikan käytöstä laskelmien suorittamiseen, esimerkiksi kun neliöjuuri löytyy tai yhtälöt ratkaistaan.
Tässä luokituksessa on myös laskennallisia ja ei-laskennallisia algoritmeja. Laskennalliset suoritetaan tietokoneen avulla, ja niille on tunnusomaista, että ne ovat niin monimutkaisia, että kone vaaditaan suoritettavaksi, ja lisäksi ne ovat kvantitatiivisia algoritmeja, jotka voidaan optimoida. Laskennattomilla ei ole velvollisuutta suorittaa koneella tai tietokoneella; selkeä esimerkki tästä on television ohjelmointi.
Toimintansa mukaan
Seuraavat ovat tässä luokituksessa.
1. Merkintäalgoritmi
Sille on ominaista automaation käyttäminen hintojen asettamiseen huolellisella tavalla, keskittymällä käyttäjien käyttäytymisen kaltaisiin tekijöihin, ja se tunnetaan myös kykynä määrittää komponenttien devalvaatioiden hinnat automaattisesti käyttäjien voittojen kasvattamiseksi. myyjät. Se on ollut hyvin tärkeä rooli yhteisten käytäntöjen lentoyhtiön teollisuuden 1990-luvun alusta.
Merkintäalgoritmi erottuu siitä, että se on yksi yleisimmistä käytännöistä erittäin kilpailukykyisillä teollisuudenaloilla, viitaten matkatoimistoihin tai kyseisiin verkkoyrityksiin. Tällainen algoritmi voi olla erittäin monimutkainen tai suhteellisen yksinkertainen, koska monissa tapauksissa havaitaan, että ne on optimoitu tai itseopetettu tiettyjen testien jatkuvuuden kanssa. Kaiken tämän lisäksi tunnisteiden tekemisen algoritmit voivat myös tulla epäsuosittu asiakaskunnan keskuudessa, kun yksilöt yleensä arvostavat sekä vakautta että oikeudenmukaisuutta.
2. Todennäköiset algoritmit
Ne ovat tapoja, joilla tulokset saadaan, riippuu todennäköisyydestä, joita kutsutaan yleisesti satunnaisalgoritmeiksi.
Joissakin sovelluksissa tämän tyyppisen toiminnan käsittely on yleistä, kuten esimerkiksi silloin, kun jonkin olemassa olevan tai suunnitellun järjestelmän käyttäytymistä simuloidaan ajan myötä, jolloin seurauksena saadaan satunnainen ratkaisu. Muissa olosuhteissa ratkaistava ongelma on yleensä deterministinen, mutta on mahdollista muuttaa se satunnaiseksi ongelman ratkaisemiseksi soveltamalla todennäköisyysalgoritmia. Satunnaisen positiivinen on, että sen soveltaminen ei vaadi erittäin hienostuneita matemaattisia tutkimuksia.
Lisäksi tässä ryhmässä on kolme päätyyppiä, jotka tunnetaan numeerisina, Monte Carlo ja Las Vegas.
- Numeeriset algoritmit voivat antaa arvioidun tuloksen ongelmasta ja niitä käytetään yleensä tekniikassa.
- Monte Carlo -algoritmit voivat antaa oikean tai väärän ratkaisun ja niillä on tietty virhemarginaali ja viimeiseksi.
- Las Vegasin algoritmit eroavat toisistaan jättämättä koskaan väärää vastausta, itse asiassa he löytävät oikean ratkaisun tai yksinkertaisesti ilmoittavat mahdollisesta epäonnistumisesta.
Dynaamisella ohjelmoinnilla tarkoitetaan menetelmää, jossa algoritmi laskee tulokset. Joskus tiettyjen ongelmien kohteiden ratkaisut riippuvat muiden pienempien ongelmien tuloksista. Joten näiden ratkaisemiseksi on samat arvot laskettava uudelleen pienimpien osiongelmien ratkaisemiseksi, mutta tämä voi aiheuttaa syklien tuhlauksen. Tämän korjaamiseksi voidaan käyttää dynaamista ohjelmointia ja tällöin muistetaan jokaisen osaongelman ratkaisu käyttää samaa arvoa toistamisen sijaan useita kertoja.
3. Heuristiset algoritmit
Ne erotetaan etsimällä ratkaisuja, ja silti ne eivät takaa, että löydetään parhaat vastaukset, joten niitä voidaan pitää likimääräisinä algoritmeina. Niitä voidaan käyttää, kun ratkaisun löytäminen normaalilla reitillä katsotaan mahdottomaksi. Heuristiikka tarjoaa käyttötarkoitukset, jotka selitetään alla. Vuonna suunnittelussa, niitä käytetään aikataulun toimintaa lyhyessä ajassa, suunnittelussa niitä käytetään hahmotella sähkö- tai digitaalisten järjestelmien ja simuloinnin niitä käytetään vahvistamaan tiettyjä menettelyjä.
4. Takaisinkelausalgoritmit
Ne tunnetaan rekursiivisina strategioina, jotka ratkaisevat ongelmia, kuten pulmia, sokkeloita tai vastaavia kappaleita, joissa etsitään syvällisesti mahdollisen ratkaisun löytämiseksi. Sen nimi viittaa siihen, että tuloksen löytämiseksi tehdyissä tiedusteluissa se palaa aina edelliseen kohtaan voidakseen testata vaihtoehtoja. Ne yleensä peruutetaan, jotta voidaan havaita niiden vaikutus talouteen, markkinoihin, hintamerkintöihin, tiettyihin toimintoihin ja jopa itse yhteiskuntaan.
5. Voracious algoritmi
Sitä kutsutaan tuhoajaksi tai makealle ja sitä voidaan soveltaa optimointiongelmiin. Tämän algoritmin kussakin vaiheessa tehdään looginen ja optimaalinen valinta parhaiden globaalien ratkaisujen saamiseksi. On kuitenkin otettava huomioon, että kun tuomio on tehty, mitään ei voida tehdä sen korjaamiseksi tai muuttamiseksi tulevaisuudessa. Tällä toiminnolla on tämä nimi, koska jokaisessa vaiheessa valitaan paras "niellä" pystyvä murto-osa huolimatta siitä, mitä myöhemmin tapahtuu.
Algoritmin ominaisuudet
Useat kirjoittajat ovat yrittäneet määritellä algoritmit muodollisesti matemaattisia malleja käytettäessä. Nämä näytteet liittyvät kuitenkin läheisesti erityiseen tietotyyppiin, joka sisältää numeroita, symboleja ja joitain kuvaajia, samalla kun ne toimivat suurella määrällä tiedonjakoa. Yleensä kunkin määritelmän yhteinen osallistuminen esitetään yhteenvetona seuraavilla kolmella ominaisuudella:
Ongelma
Ongelmanratkaisu tietokoneen avulla voi koostua prosessista, jossa ongelma kuvataan, ja ohjelman, joka kykenee ratkaisemaan sen, annetaan kehittää. Tämä prosessi edellyttää ongelman analysointia, algoritmin suunnittelua ja muuntamista ohjelmaksi sekä sen suorituskykyä ja validointia. Kaksi ensimmäistä vaihetta ovat monimutkaisimpia tässä prosessissa, mutta kun olet tutkinut ongelman ja saanut algoritmin, joka voi ratkaista sen, tehtäväsi perustuu ensisijaisesti sen kääntämiseen halutulle ohjelmointikielelle.
Analyysi yleisestä ratkaisusta
Kun ongelma on määritelty, on aika analysoida seuraavaa:
- Tiedot lippuja että ne tarjoavat meille.
- Halutut tulokset.
- Työalue, lausunnot tai muut tarvittavat elementit.
Algoritmien analyysi tunnetaan tärkeimpänä osana laajempaa laskennallisen monimutkaisuuden teoriaa, koska se tarjoaa teoreettiset laskelmat resursseille, joita mikä tahansa algoritmi tarvitsee tietyn laskennallisen ongelman ratkaisemiseksi. Teoreettista tutkimusta suoritettaessa on yleistä laskea sen komplikaatiot asymptoottisessa mielessä riittävän suuren syöttökoon saamiseksi. Asymptoottista ylärajaa yhdessä teeta- ja omega-merkintöjen kanssa käytetään tähän tarkoitukseen, ja on huomattava, että ei-asymptoottinen mitta voidaan tietokoneistaa.
Tarkat tehokkuustoimenpiteet ovat todella hyödyllisiä niille, jotka tosiasiallisesti käyttävät algoritmeja, koska niillä on enemmän tarkkuutta, mikä antaa heille mahdollisuuden määrittää suorituksen kesto. Joillekin ihmisille, kuten videopelien tekijöille, piilotettu vakio voi tarkoittaa suurta eroa menestyksen ja epäonnistumisen välillä. Aika-arviot voivat riippua siitä, kuinka tietty vaihe määritellään, ja analyysin järkevyyden varmistamiseksi on taattava, että aikaa rajoittaa huomattavasti vakio.
Algoritmin laatiminen
Operaation kehittämisen toteuttamiseksi on tärkeää, että suoritetaan joukko toimenpiteitä ongelman ratkaisun noudattamiseksi. Aluksi on tehtävä ennakkoanalyysi vaikeudesta, ja tämä tehdään tutkimuksella, joka osoittaa ongelman todellisen toiminnan kauan ennen minkään algoritmin suorittamista. Siksi vaatimusten määrittely arvioidaan, tässä vaiheessa sinulla on oltava selkeä käsitys siitä, mitkä ongelmat on ratkaistava, olipa kyseessä kahden luvun summa, numeroluettelon järjestys jne.
Myöhemmin vastaava moduulien tunnistus suoritetaan, koska algoritmien oikea toteutus riippuu siitä mahdollisten ratkaisujen tarjoamiseksi yllä yksilöityihin vaatimuksiin.
Lopuksi laskenta toteutetaan tietokoneella ymmärrettävällä ohjelmointikielellä, jotta se pystyy ymmärtämään mallintamansa ohjeet ja siten toteuttamaan ne saavuttaen odotetun tuloksen. Tässä viimeisessä menettelyssä voidaan jo puhua ohjelmasta, joka koostuu sarjasta käskyjä, jotka tilataan peräkkäin ja jotka pystyvät ratkaisemaan vakiintuneet vaatimukset.
On tärkeää mainita, että peräkkäisessä ajassa algoritmit suorittavat tehtävänsä diskretisoidussa ajassa ja pyrkivät määrittelemään laskentatilojen sekvenssit jokaisessa päteväksi katsotussa syötteessä. Abstraktissa tilassa nämä operaatiot ovat itsenäisiä elementtejä, ja katsotaan, että niissä alkujärjestysrakenteet voivat muuttua invarianteiksi isomorfismin alla. Rajoitetussa tutkimuksessa siirtymät tilasta toiseen vahvistetaan täysin pysyvällä ja rajallisella selityksellä, jossa yhden ja seuraavan tilan välillä otetaan huomioon vain rajallinen määrä termejä nykyisessä tilassa.
Ei pidä myöskään unohtaa, että algoritmit ilmaistaan yleensä ”näennäiskoodikoodin” ohjelmointikielillä, tavallisella kielellä ja jopa hyvin tunnetuilla vuokaavioilla. Samoin on tärkeää mainita, että algoritmeilla on perustava rooli laskennassa johtuen datan esittämisestä bittisekvensseinä. Toisesta näkökulmasta ohjelma määritellään algoritmiksi, joka ilmaisee tietokoneelle ne erityiset vaiheet, joita sen on noudatettava tiettyjen toimintojen suorittamiseksi riittävästi. Toisaalta pseudokoodin kirjoittamisen oppiminen helpottaa ohjelmointia, ja se selitetään myöhemmin.
Ohjelmointikielet tunnetaan muodollisina tai keinotekoisina kielinä, koska niillä on kielioppisäännöt, jotka ovat hyvin määriteltyjä, sillä on kyky tarjota ohjelmoijalle kyky tekstualisoida joukko ohjeita tai asetussekvenssejä algoritmeina tarkoitukseen Tietokoneen fyysisen ja loogisen käyttäytymisen hallinnan ylläpitämiseksi tällä tavoin voidaan saavuttaa erityyppiset tiedot. Tämä ohjelmointikielellä kirjoitettu määräysmäärä on nimetty ohjelmaksi.
Ohjelmointikielet koostuvat yleensä joukosta symboleja sekä kieliopillisia ja semanttisia sääntöjä, jotka määrittelevät kielen nykyiset rakenteet ja niiden merkityksen. Toisesta näkökulmasta tietokonekielet sisältävät myös ohjelmointikielet, selkeä esimerkki tästä on HTML, joka täyttää tietyt ohjeet erilaisten asiakirjojen sisällön suorittamiseksi. Ohjelmointikieli voi mahdollistaa niiden tietojen tarkan määrittelyn, joita tietyn ohjelmiston on käytettävä vaihtelevissa olosuhteissa.
Toisaalta pseudokoodi on algoritminen kuvauskieli, joka käyttää todellisen ohjelmointikielen perustavanlaatuisia käytäntöjä, mutta joka on suunniteltu ihmisen lukemiseen koneen lukemisen sijaan, säilyttäen itsenäisyyden kaikentyyppisistä ohjelmista. ohjelmointikieli. Pseudokoodi ohittaa yksityiskohdat, joita ei pidetä välttämättöminä algoritmin ymmärtämiselle ihmisiltä, kuten järjestelmän koodit, muuttuja-ilmoitukset ja jopa jotkut aliohjelmat. Tällä tavoin ohjelmointikieli pyrkii täydentämään itseään tarkoilla kuvauksilla luonnollisella kielellä tai kompakteilla matemaattisilla merkinnöillä.