Švietimas

Kas yra algoritmas? »Jo apibrėžimas ir reikšmė

Turinys:

Anonim

Matematikos, informatikos ir kitose susijusiose doktrinose algoritmas apibrėžiamas kaip nusistovėjusių ir nedviprasmiškų nurodymų rinkinys, randamas metodiškai ir ribotai, leidžiantis atlikti skaičiavimus, apdoroti tam tikrą informaciją, pateikti problemų sprendimus ir vykdyti įvairias veiklas.. Pradėjus nuo pradinės būsenos ir įrašo, laikantis reikiamų procedūrų, pasiekiama galutinė būsena ir gaunamas rezultatas. Algoritmai yra algoritmo tyrimo objektas, jie tiki ar ne, jie taip pat gali būti naudojami visais kasdienio gyvenimo aspektais.

Kas yra algoritmas

Turinys

Skaičiuojant tai paprastai apibrėžiama kaip nuoseklių nurodymų seka, kai tam tikri procesai atliekami siekiant reaguoti į tam tikrus sprendimus ar poreikius. Lygiai taip pat algoritmai dažnai naudojami logikoje ir matematikoje, be to, jie yra pagrindas rengiant vartotojo vadovus, iliustracinius brošiūras, be kita ko. Vienas iš labiausiai matematikoje išskiriamų yra tas, kuris priskiriamas geometristams Euklidams, kad būtų pasiektas didžiausias dviejų teigiamų sveikųjų skaičių bendras daliklis ir gerai žinomas „Gauso metodas“ tiesinių lygčių sistemoms nustatyti.

Kalbant apie informatiką, šis skaičiavimas gali būti žinomas kaip gairių seka, kurios reikia laikytis nustatant problemą naudojant kompiuterį.

Todėl algoritmika suprantama kaip disciplina, orientuota į algoritmų analizę ir dizainą. Atsižvelgdamas į pirmąjį, jis siekia ištirti tokias savybes kaip jos teisingumas ir efektyvumas laiko ir erdvės atžvilgiu, suprasti problemas, kurias galima išspręsti algoritmiškai. Kalbant apie antrąją, ji siekia ištirti jau nustatytas paradigmas ir siūlo naujus pavyzdžius.

Algoritmas yra skaičiavimo pažangos centre ir yra svarbus skirtingose ​​jo srityse. Tokiu būdu tokioms sėkmingoms paslaugoms kaip „Facebook“ ir „Google“ būtų neįmanoma tvarkyti turimos informacijos apimties be algoritmų ar specializuotų duomenų struktūrų bendradarbiavimo. Tačiau kasdieniame gyvenime taip pat naudojami algoritmai, kurių pavyzdys yra viryklės uždegimas, nes jis prasideda tuo metu, kai žmogus eina į virtuvę, ją stebi ir baigiasi, kai ji pradeda ją uždegti..

Algoritmo charakteristikos

Nors algoritmas yra žinomas kaip sutvarkytas ir baigtinis įvairių žingsnių rinkinys, leidžiantis išspręsti problemą, sakoma, kad šių sunkumų pobūdis skiriasi atsižvelgiant į kontekstą, kuriame jie yra, tokiu būdu yra problemų chemijos, matematikos, filosofijos ir kt. Taigi galima sakyti, kad jo pobūdis yra įvairus ir jo nereikia atlikti kompiuteriu. Be visko, kas paaiškinta anksčiau, algoritmai turi savybių, kurios yra elementarios norint nustatyti, kokie jie yra šiandien, ir bus paminėti toliau.

  • Algoritme pateikiamos gairės turi būti konkrečios, kad būtų išvengta bet kokio pobūdžio painiavos. Tai reiškia, kad reikia tinkamai laikytis atitinkamų instrukcijų, arba, priešingai, grafinis srauto, kuriame registruojatės, vaizdavimas nepalengvins sprendimo. teisinga.
  • Norint gauti tą patį rezultatą ir tuo atveju, jei atsitiktų priešingai, jis turi būti tiksliai apibrėžtas, stengiantis kuo daugiau jo laikytis tiek kartų, kiek reikia, kad algoritmas nebūtų patikimas ir nebus naudojamas kaip orientyras priimant sprendimą.
  • Jie žinomi dėl ribotumo ypatumo, jie paprastai baigiasi tam tikru momentu, o vėliau kiekvieno žingsnio pabaigoje išmeta rezultatą. Jei algoritmas tęsiasi neribotą laiką, grįždamas į kažkokį pradinį tašką, kurio niekada nepavyksta išspręsti, yra paradoksas arba gerai žinoma pakartojimų „kilpa“.
  • Galiausiai sakoma, kad pagrindinis elementas yra algoritmų įskaitomumas, nes jei jo argumentas yra nesuprantamas, atitinkamų instrukcijų nebuvo galima laikytis, be to, tai reiškia tiesioginį, aiškų ir lakonišką kiekviename esančio teksto formulavimą.

Algoritmo dalys

Kiekviena algoritminė operacija turi tris skirtingas dalis, kurioms taikoma pagrindinė sistemos struktūra, ir jos yra:

  • Įvestis: dar vadinama antrašte arba pradiniu tašku. Tai yra pradinė instrukcija, atspindinti algoritmo genezę ir motyvuojančią jį skaityti.
  • Procesas: dar vadinamas deklaracija. Tai yra tikslus algoritmo parengimas ir iš esmės yra jo raktų kamienas formuluojant instrukcijas.
  • Išvestis: šiame paskutiniame etape yra konkrečios algoritmo nustatytos instrukcijos, pavyzdžiui, jo komandos ar skiriamosios gebos.

Algoritmų pavyzdžiai

Dažni matematikos skaičiavimų pavyzdžiai yra 2 + 3 = 5 sudedant ir 15-9 = 6 atimant. Kitas paprastų algoritmų vizualizavimo būdas yra virtuvės receptai, nes juose aprašomas konkretus ir tvarkingas procesas, pavyzdžiui, „pirmiausia turite pastatyti pusę puodo vandens, kad pakaitintumėte, tada įpilkite truputį druskos ir galiausiai pipirai bus padalinti, kad išgautų sėklas ir nervus “. Šis modelis pateikia pradžią, procesą ir pabaigą, kurie iš esmės apibrėžia algoritmus.

Algoritmo tipai

Tarp įvairių algoritmų tipų, egzistuojančių visame pasaulyje, akcentuojami tie, kurie klasifikuojami pagal ženklų sistemą, o kiti pagal jų funkciją. Algoritmas iš esmės yra geriausiai žinomas sprendimas išspręsti bet kokią problemą ir pagal jo strategijas bei funkcijas yra įvairių tipų, tarp kurių išsiskiria dinaminė, atvirkštinė, grubi jėga, oportunistinė, žymėjimas., atsitiktiniai ir kt. Be aukščiau paminėtų algoritmų, yra tūkstančiai jų, tinkančių spręsti sunkumus bet kurioje srityje.

Pagal jūsų ženklų sistemą

Kokybiniai ir kiekybiniai yra šioje kategorijoje.

  • Kokybiniams algoritmams būdingi žodiniai elementai, jų pavyzdžiai yra instrukcijos arba pripažintos „žingsnis po žingsnio“, kurios suteikiamos žodžiu, pavyzdžiui, kulinarijos meno receptai ar rankinio darbo atlikimo procedūros.
  • Kiekybiniai algoritmai yra visiškai priešingi kokybiniams dėl tam tikrų skaitinių elementų buvimo ir matematikos panaudojimo skaičiavimams atlikti, pavyzdžiui, kai randama kvadratinė šaknis arba išsprendžiamos lygtys.

Šioje klasifikacijoje taip pat yra skaičiavimo ir neskaičiavimo algoritmų. Skaičiavimai atliekami kompiuteriu ir pasižymi tuo, kad yra tokie sudėtingi, jog reikalauja atlikti mašiną, be to, tai yra kiekybiniai algoritmai, kuriuos galima optimizuoti. Neskaičiuojamos neprivalo būti įvykdytos mašina ar kompiuteriu; aiškus to pavyzdys yra televizoriaus programavimas.

Pagal savo funkciją

Šioje klasifikacijoje yra:

1. Žymėjimo algoritmas

Tam būdingas automatikos naudojimas siekiant kruopščiai nustatyti kainas, daugiausia dėmesio skiriant tokiems veiksniams kaip vartotojo elgsena, taip pat žinomas kaip galimybė automatiškai nustatyti komponentų nuvertėjimo kainas, siekiant padidinti vartotojų pelną. pardavėjai. Jis suvaidino labai svarbų vaidmenį bendrą praktiką iš oro pramonėje nuo 1990 m.

Žymėjimo algoritmas išsiskiria tuo, kad yra viena iš labiausiai paplitusių praktikų labai konkurencingose ​​pramonės šakose, nurodant kelionių agentūras ar tas internetines įstaigas. Šis algoritmas gali būti itin sudėtingas arba palyginti paprastas, nes daugeliu atvejų pastebima, kad jie yra optimizuoti arba mokomi savarankiškai, atliekant tam tikrų testų tęstinumą. Be viso to, žymėjimo algoritmai taip pat gali tapti nepopuliarūs klientams, nes asmenys linkę vertinti ir stabilumą, ir sąžiningumą.

2. Tikimybiniai algoritmai

Jie yra tie, kuriais rezultatų gavimo būdas priklauso nuo tikimybių, tai paprastai vadinama atsitiktiniais algoritmais.

Kai kuriose programose šio tipo operacijos yra įprastos, pavyzdžiui, kai laikui bėgant imituojamas bet kurios esamos ar sukurtos sistemos elgesys, kurio pasekmė yra atsitiktinis sprendimas. Kitomis aplinkybėmis problema, kurią būtina išspręsti, dažniausiai yra deterministinė, tačiau yra galimybė ją paversti atsitiktine, kad būtų galima ją išspręsti taikant tikimybės algoritmą. Teigiama apie atsitiktinius yra tai, kad jų taikymui nereikia labai sudėtingų matematinių tyrimų.

Be to, šioje grupėje yra trys pagrindiniai tipai, kurie yra žinomi kaip skaitiniai, Monte Karlas ir Las Vegasas.

  • Skaitmeniniai algoritmai gali suteikti apytikslį problemos rezultatą ir paprastai taikomi inžinerijoje.
  • Monte Karlo algoritmai gali suteikti teisingą ar neteisingą sprendimą ir turėti tam tikrą klaidų ribą.
  • Las Vegaso algoritmai išsiskiria tuo, kad niekada nepalieka neteisingo atsakymo, iš tikrųjų jie randa teisingą sprendimą arba tiesiog informuoja jus apie galimą gedimą.

Dinaminis programavimas reiškia metodą, kuriuo algoritmas apskaičiuoja rezultatus. Kartais tam tikrų problemų turinčių elementų sprendimai priklauso nuo kitų mažesnių problemų rezultatų. Taigi, norint išspręsti šias problemas, reikia perskaičiuoti tas pačias vertes, kad būtų išspręsti mažiausi subproblemos, tačiau tai gali iššaukti ciklų švaistymą. Norėdami tai išspręsti, galima naudoti dinaminį programavimą ir tokiu atveju prisiminti kiekvieno papunkčio sprendimą, naudoti tą pačią reikšmę, užuot kartojus kelis kartus.

3. Euristiniai algoritmai

Jie išsiskiria ieškodami sprendimų ir net negarantuoja, kad bus rasti geriausi atsakymai, todėl juos galima laikyti apytiksliais algoritmais. Jie gali būti naudojami, kai rasti sprendimą įprastu keliu laikoma neįmanoma. Euristikoje pateikiami naudojimo būdai, kurie bus paaiškinti toliau. Be planavimo, jie naudojami planuoti veiklą per trumpą laiką, dizainas jie naudojami apibrėžti elektros ar skaitmenines sistemas ir modeliavimo jie naudojami patikrinti tam tikras procedūras.

4. Atsekimo algoritmai

Jie yra žinomi kaip rekursinės strategijos, sprendžiančios tokias problemas kaip galvosūkiai, labirintai ar panašūs kūriniai, kurių metu giliai ieškoma ieškant galimo sprendimo. Jo pavadinimas nurodo tai, kad atliekant tyrimus siekiant rasti rezultatą, jis visada grįžta į ankstesnį punktą, kad galėtų išbandyti alternatyvas. Paprastai jie atšaukiami, siekiant stebėti jų poveikį ekonomikai, rinkoms, kainų ženklinimui, tam tikroms operacijoms ir net pačiai visuomenei.

5. Gobšus algoritmas

Jis yra žinomas kaip naikintuvas arba smaližius ir yra pritaikomas optimizavimo problemoms spręsti. Kiekviename šio algoritmo žingsnyje yra logiškas ir optimalus pasirinkimas, kad galėtume pasirinkti geriausius pasaulinius sprendimus. Tačiau reikia atsižvelgti į tai, kad priėmus sprendimą ateityje nieko nebus galima padaryti, kad jį ištaisytume ar pakeistume. Ši operacija turi šį pavadinimą, nes kiekviename etape pasirenkama geriausia dalis, galinti „praryti“, nesijaudindama, kas nutiks vėliau.

Algoritmo savybės

Įvairūs autoriai, naudodami matematinius modelius, bandė formaliai apibrėžti algoritmus. Tačiau šie egzemplioriai yra glaudžiai susiję su savotiška informacijos rūšimi, apimančia skaičius, simbolius ir kai kuriuos grafikus, tuo pačiu veikiant didžiuliam duomenų paskirstymui. Apskritai kiekvieno apibrėžimo bendra dalis apibendrinta šiomis trimis savybėmis:

Problemos pareiškimas

Problemų sprendimas kompiuteriu gali susidaryti iš proceso, kuriame aprašoma problema ir leidžiama sukurti ją gebančią išspręsti programą. Šiam procesui reikia analizuoti problemą, suprojektuoti algoritmą ir paversti jį programa, taip pat atlikti ir patvirtinti. Pirmieji du žingsniai yra sudėtingiausi šiame procese, tačiau išnagrinėję problemą ir gavę algoritmą, galintį ją išspręsti, jūsų užduotis visų pirma grindžiama jos vertimu į norimą programavimo kalbą.

Bendrojo sprendimo analizė

Apibrėžus problemą, laikas analizuoti šiuos dalykus:

  • Informacija iš bilietų, kad jie teikia mums.
  • Norimi rezultatai.
  • Darbo sritis, pareiškimai ar kiti būtini elementai.

Algoritmų analizė yra žinoma kaip svarbiausia platesnės skaičiavimo sudėtingumo teorijos dalis, nes joje pateikiami teoriniai išteklių, kurių reikia bet kuriam algoritmui išspręsti pateiktai skaičiavimo problemai, skaičiavimai. Atliekant teorinį tyrimą, įprasta apskaičiuoti jo komplikacijas asimptotine prasme, norint gauti pakankamai didelį įvesties dydį. Šiuo tikslu naudojama asimptotinė viršutinė riba kartu su teta ir omega žymėjimais ir reikia pažymėti, kad nesimptominę priemonę galima kompiuterizuoti.

Tikslios efektyvumo priemonės yra tikrai naudingos tiems, kurie iš tikrųjų naudoja algoritmus, nes jie turi didesnį tikslumą ir tai leidžia jiems nustatyti laiką, kurio reikės vykdymui. Kai kuriems asmenims, pavyzdžiui, vaizdo žaidimų kūrėjams, paslėpta konstanta gali reikšti didelį skirtumą tarp sėkmės ir nesėkmės. Laiko vertinimai gali priklausyti nuo to, kaip apibrėžiamas tam tikras žingsnis, ir norint, kad analizė būtų prasminga, reikia garantuoti, kad laiką žymiai riboja konstanta.

Algoritmo parengimas

Norint sukurti operaciją, svarbu, kad būtų atlikta keletas procedūrų, kad būtų išspręsta pati problema. Pirmiausia reikia atlikti išankstinę sunkumų analizę ir tai padaryti atliekant tyrimą, kuris parodo tikrąjį problemos veikimą dar prieš pradedant atlikti bet kokį algoritmą. Todėl įvertinamas reikalavimų apibrėžimas, šiame etape turite aiškiai įsivaizduoti, kokias problemas spręsti, ar tai būtų dviejų skaičių suma, ar skaičių sąrašo eiliškumas ir t.

Vėliau atliekamas atitinkamas modulių identifikavimas, nes nuo to priklauso teisingas algoritmų įgyvendinimas, siekiant pateikti galimus aukščiau nurodytų reikalavimų sprendimus.

Galiausiai skaičiavimas vykdomas programavimo kalba, kurią supranta kompiuteris, kad jis galėtų suprasti jo modeliuotas instrukcijas ir taip jas vykdyti, taip pasiekdamas laukiamą rezultatą. Pagal šią paskutinę procedūrą galima kalbėti apie programą, kuri susideda iš eilės nurodymų, kurie yra užsakomi vienas po kito ir sugeba išspręsti nustatytus reikalavimus.

Svarbu paminėti, kad per nuoseklų laiką algoritmai atlieka savo funkciją diskretizuotu laiku ir siekia apibrėžti skaičiavimo būsenų sekas kiekviename įvestyje, kuris laikomas galiojančiu. Abstrahuotoje būsenoje šios operacijos yra nepriklausomi elementai ir laikoma, kad jose pirminės tvarkos struktūros gali tapti nekintamos izomorfizmo sąlygomis. Atliekant ribotą tyrimą, perėjimus iš vienos būsenos į kitą visiškai nustato nuolatinis ir baigtinis paaiškinimas, kai tarp vienos būsenos ir kitos atsižvelgiama tik į ribotą dabartinės būsenos terminų skaičių.

Taip pat nereikėtų pamiršti, kad algoritmai dažnai išreiškiami per programavimo kalbas „pseudokodus“ įprasta kalba ir net gerai žinomas schemas. Taip pat svarbu paminėti, kad algoritmai vaidina pagrindinį vaidmenį skaičiuojant, nes jie vaizduoja duomenis kaip bitų sekas. Žvelgiant iš kito kampo, programa apibrėžiama kaip algoritmas, kuris kompiuteriui išreiškia tuos konkrečius veiksmus, kuriuos ji turi atlikti, kad galėtų tinkamai atlikti tam tikras veiklas. Kita vertus, išmokus rašyti pseudokodą, programavimas yra lengvesnis, todėl jis bus paaiškintas vėliau.

Programavimo kalbos yra žinomos kaip oficiali arba dirbtinė kalba, nes jose yra gerai apibrėžtos gramatikos taisyklės, ji gali suteikti programuotojui galimybę algoritmų pavidalu tekstualizuoti instrukcijų ar reglamentų sekų algoritmų pavidalu tam tikslui kad išlaikytumėte fizinio ir loginio kompiuterio elgesio kontrolę, tokiu būdu galima pasiekti įvairių tipų informaciją. Šis programavimo kalba parašytų priesakų rinkinys priskiriamas programai.

Programavimo kalbos paprastai susideda iš simbolių rinkinio ir gramatinių bei semantinių taisyklių, apibrėžiančių dabartines kalbos struktūras ir jų reikšmę. Žvelgiant iš kitos perspektyvos, kompiuterio kalbos taip pat apima programavimo kalbas, aiškus to pavyzdys yra HTML, kuris įvykdo tam tikras instrukcijas, kaip atlikti skirtingų dokumentų turinį. Programavimo kalba gali leisti tiksliai nurodyti tuos duomenis, kuriuos įvairiomis aplinkybėmis turi valdyti speciali programinė įranga.

Kita vertus, pseudokodas yra algoritminė aprašymo kalba, kurioje naudojami tikrosios programavimo kalbos elementarūs susitarimai, bet kuri skirta skaityti žmonėms, o ne skaityti per mašiną, išlaikant nepriklausomybę nuo bet kokio kito tipo programavimo kalba. Pseudokode nepaisoma detalių, kurios nėra laikomos esminėmis žmogaus supratimui apie algoritmą, pavyzdžiui, sistemos kodai, kintamųjų deklaracijos ir net kai kurie paprogramiai. Tokiu būdu programavimo kalba siekia save papildyti tiksliais natūralios kalbos aprašymais arba kompaktiškais matematiniais užrašais.