Sa matematika, agham sa computer at iba pang kaugnay na mga doktrina, ang algorithm ay tinukoy bilang isang hanay ng mga itinatag at hindi mapag-aalinlanganan na mga patakaran, na matatagpuan sa pamamaraan at sa isang limitadong paraan na nagbibigay-daan upang maisagawa ang mga pagkalkula, maproseso ang ilang mga impormasyon, magbigay ng mga solusyon sa mga problema at magsagawa ng iba't ibang mga aktibidad.. Kapag nagsimula ka mula sa isang paunang estado at isang pagpasok, pagsunod sa mga kinakailangang pamamaraan, naabot ang panghuling estado at nakuha ang isang resulta. Ang mga algorithm ay ang layunin ng pagtatanong ng mga algorithmic at bagaman marami ang maaaring hindi maniwala, maaari rin silang magamit sa lahat ng aspeto ng pang-araw-araw na buhay.
Ano ang isang algorithm
Talaan ng mga Nilalaman
Sa computing ito ay karaniwang tinukoy bilang isang sunud-sunod ng sunud-sunod na mga tagubilin, kung saan ang ilang mga proseso ay isinasagawa upang makapagbigay ng mga sagot sa ilang mga desisyon o pangangailangan. Sa parehong paraan, ang mga algorithm ay madalas na ginagamit sa lohika at matematika, pati na rin ang batayan para sa pagbuo ng mga manwal ng gumagamit, nakalalarawan na mga polyeto, bukod sa iba pa. Ang isa sa pinakatanyag sa matematika ay ang naiugnay sa geometrist Euclides, upang maabot ang pinakadakilang karaniwang tagapamahagi ng dalawang integer na positibo at ang kilalang "Gaussian na pamamaraan" upang matukoy ang mga sistema ng mga linear equation.
Kaugnay sa agham ng computer, ang pagkalkula na ito ay maaaring kilala bilang pagkakasunud-sunod ng mga alituntunin na susundan para sa pagpapasiya ng isang problema sa pamamagitan ng paggamit ng isang computer.
Samakatuwid, nauunawaan ang mga algorithm bilang isang disiplina na nakatuon sa pagtatasa at disenyo ng mga algorithm. Isinasaalang-alang ang una, hinahangad nitong suriin ang mga katangian tulad ng pagiging tama at pagiging epektibo nito patungkol sa oras at espasyo, upang maunawaan ang mga problemang maaaring malutas sa algorithm. Tulad ng para sa pangalawa, naghahangad itong pag-aralan ang mga tularan na naitatag at nagmumungkahi ng mga bagong halimbawa.
Ang algorithm ay matatagpuan sa gitna ng pag-unlad ng computing at mahalaga sa iba't ibang mga lugar nito. Sa ganitong paraan, imposible para sa mga serbisyong kasing tagumpay ng Facebook at Google na hawakan ang laki ng impormasyon na mayroon sila nang walang pakikipagtulungan ng mga algorithm o dalubhasang istruktura ng data. Gayunpaman, sa pang-araw-araw na mga algorithm ng buhay ay ginagamit din, isang halimbawa nito ay ang pag-aapoy ng kalan, dahil nagsisimula ito sa oras kung saan ang tao ay pumupunta sa kusina, inoobserbahan ito at may katapusan nito, kapag nagpatuloy ito sa pag-iilaw nito.
Mga katangian ng isang algorithm
Bagaman ang algorithm ay kilala bilang nakaayos at may hangganan na hanay ng iba't ibang mga hakbang na humantong sa paglutas ng isang problema, sinabi na ang likas na katangian ng mga paghihirap na ito ay magkakaiba ayon sa konteksto kung saan sila natagpuan, sa ganitong paraan, may mga problema kemikal, matematika, pilosopiko, bukod sa iba pa. Kaya, masasabing ang kalikasan nito ay iba-iba at ang pagpapatupad nito ng computer ay hindi kinakailangan. Higit pa sa naunang ipinaliwanag, ang mga algorithm ay may mga katangian na elementarya upang matukoy kung ano ang mga ito ngayon at mababanggit sa ibaba.
- Ang mga patnubay na nakapaloob sa isang algorithm ay dapat na tiyak upang maiwasan ang pag-iwan ng silid para sa anumang uri ng pagkalito, nangangahulugan ito na ang mga kaukulang tagubilin ay dapat sundin nang naaangkop o, sa kabaligtaran, ang graphic na representasyon ng daloy kung saan ka nagrerehistro ay hindi magpapadali sa solusyon. tama
- Dapat ito ay nasa perpektong kahulugan, sinusubukan hangga't maaari na sundin ito nang maraming beses kung kinakailangan, upang makuha ang parehong resulta at kung sakaling mangyari ang kabaligtaran, ang algorithm ay hindi maaasahan at hindi magsisilbing gabay sa paggawa ng desisyon.
- Kilala sila para sa pagiging partikular ng pagiging may hangganan, kadalasan ay nagtatapos sila sa ilang mga punto at kalaunan ay nagtatapon sila ng isang resulta sa pagtatapos ng bawat hakbang. Kung ang algorithm ay umaabot nang walang katiyakan, bumalik sa ilang paunang punto na hindi malulutas, mayroong pagkakaroon ng isang kabalintunaan o ang kilalang "loop" ng mga pag-uulit.
- Sa wakas, sinasabing ang pagiging madaling mabasa ng mga algorithm ay ang pangunahing elemento, sapagkat kung hindi maunawaan ang kanilang argumento, hindi masusunod ang mga kaukulang tagubilin, bilang karagdagan, nagsasama ito ng direkta, malinaw at laconic na pagsulat ng teksto na matatagpuan sa bawat isa.
Mga bahagi ng isang algorithm
Ang bawat pagpapatakbo ng algorithm ay may tatlong magkakaibang bahagi na napapailalim sa pangunahing istraktura ng isang system at ito ang:
- Input: tinatawag din na header o panimulang punto, ito ang paunang tagubilin na kumakatawan sa genesis ng algorithm at sa isa na nag-uudyok sa pagbabasa nito.
- Proseso: tinatawag ding deklarasyon, ito ang tumpak na pagpapaliwanag na inaalok ng algorithm at karaniwang ito ang puno ng mga susi nito para sa pagbubuo ng mga tagubilin.
- Output: sa huling yugto na ito ay ang mga tukoy na tagubilin na tinutukoy ng algorithm, halimbawa, mga utos o resolusyon nito.
Mga halimbawa ng mga algorithm
Ang mga karaniwang halimbawa ng mga kalkulasyon sa matematika ay may kasamang 2 + 3 = 5 para sa pagdaragdag at 15-9 = 6 para sa pagbabawas. Ang isa pang paraan ng pag-visualize ng mga simpleng algorithm ay sa mga recipe ng kusina, dahil inilalarawan nila ang isang tukoy at maayos na proseso, halimbawa, "una dapat kang maglagay ng kalahating palayok ng tubig upang maiinit, pagkatapos ay dapat kang magdagdag ng isang pakurot ng asin at sa wakas ang paminta ay hahatiin upang makuha ang mga binhi at mga ugat. " Sa modelong ito isang panimula, isang proseso at pagtatapos ay ipinakita, na karaniwang tumutukoy sa mga algorithm.
Mga uri ng algorithm
Kabilang sa iba't ibang uri ng mga algorithm na umiiral sa buong mundo, ang diin ay inilalagay sa mga nauri ayon sa isang sistema ng mga palatandaan at iba pa ayon sa kanilang pagpapaandar. Karaniwan ang algorithm ang pinakakilalang solusyon para sa paglutas ng anumang partikular na problema at ayon sa mga diskarte at mga pag-andar nito mayroong iba't ibang mga uri ng mga ito, bukod sa kung saan ang dinamiko, baligtarin, malupit na puwersa, oportunista, pagmamarka ay tumayo., random, atbp. Bilang karagdagan sa mga algorithm na nabanggit sa itaas, may libu-libo sa mga ito na angkop para sa paglutas ng mga paghihirap sa anumang lugar.
Ayon sa iyong sign system
Ang husay at dami ay matatagpuan sa kategoryang ito.
- Ang mga Qualitative algorithm ay nailalarawan sa pamamagitan ng pagkakaroon ng mga pandiwang elemento, isang halimbawa ng mga ito ay ang mga tagubilin o kinikilalang "sunud-sunod" na ipinagkaloob nang pasalita, tulad ng mga resipe para sa culinary arts o mga pamamaraan para sa pagsasagawa ng manu-manong gawain.
- Ang mga dami ng algorithm ay ang kumpletong kabaligtaran sa mga husay, dahil sa pagkakaroon ng ilang mga elemento ng numero at ang paggamit ng matematika upang magsagawa ng mga kalkulasyon, halimbawa, kapag natagpuan ang square root o nalulutas ang mga equation.
Sa loob ng pag-uuri na ito ay mga computational at non-computational algorithm din. Ang mga computational ay isinasagawa sa pamamagitan ng isang computer at nailalarawan sa pagiging kumplikado sa punto ng paghingi ng isang makina na isasagawa, bilang karagdagan sa mga ito, ang mga ito ay mga dami ng algorithm na maaaring ma-optimize. Ang mga hindi nakakalkula ay walang obligasyong ipatupad sa pamamagitan ng isang makina o computer; isang malinaw na halimbawa nito ay ang programa ng isang telebisyon.
Ayon sa pagpapaandar nito
Ang mga sumusunod ay matatagpuan sa pag-uuri na ito.
1. Pagmarka ng algorithm
Ito ay nailalarawan sa pamamagitan ng paggamit ng awtomatiko upang itakda ang mga presyo sa isang masigasig na paraan, na nakatuon sa mga kadahilanan tulad ng pag-uugali ng gumagamit at kilala rin bilang ang kakayahang awtomatikong matukoy ang mga presyo para sa pagpapahina ng mga sangkap, upang madagdagan ang kita ng mga gumagamit. mga nagtitinda. Ginampanan nito ang isang napakahalagang papel sa mga karaniwang kasanayan ng mga industriya ng airline mula pa noong unang bahagi ng 1990.
Ang marking algorithm ay nakikilala sa pamamagitan ng pagiging isa sa pinakakaraniwang mga kasanayan sa mga industriya na lubos na mapagkumpitensya, na tumutukoy sa mga ahensya sa paglalakbay o mga online na establisimiyento. Ang ganitong uri ng algorithm ay maaaring maging lubhang kumplikado o medyo simple, dahil sa maraming mga kaso napansin na ang mga ito ay na-optimize o itinuro sa sarili na may pagpapatuloy ng ilang mga pagsubok. Higit pa sa lahat ng iyon, ang pag-tag ng mga algorithm ay maaari ding maging popular sa kliyente dahil ang mga indibidwal ay may posibilidad na pahalagahan ang parehong katatagan at pagiging patas.
2. Mga probabilistic na algorithm
Ang mga ito ay kung saan ang paraan kung saan nakuha ang mga resulta ay nakasalalay sa mga posibilidad, ito ay karaniwang kilala bilang mga random algorithm.
Sa ilang mga aplikasyon ang paghawak ng ganitong uri ng pagpapatakbo ay karaniwan, tulad ng halimbawa, kapag ang pag-uugali ng anumang mayroon o naisip na sistema ay na-simulate sa paglipas ng panahon, kung saan ang isang fortuitous na solusyon ay nakuha bilang isang resulta. Sa ibang mga pangyayari, ang problemang malulutas ay kadalasang tumutukoy ngunit may posibilidad na ibahin ito sa isang fortuitous, upang malutas ito sa pamamagitan ng paglalapat ng probabilidad na algorithm. Ang positibong bagay tungkol sa mga random ay ang kanilang aplikasyon ay hindi nangangailangan ng napaka-sopistikadong mga pag-aaral sa matematika.
Bilang karagdagan, sa loob ng pangkat na ito mayroong tatlong pangunahing mga uri na kilala bilang bilang, Monte Carlo at Las Vegas.
- Ang mga numerong algorithm ay maaaring magbigay ng isang tinatayang resulta ng problema at sa pangkalahatan ay inilalapat sa engineering.
- Ang mga algorithm ng Monte Carlo ay maaaring magbigay ng tama o maling solusyon at magkaroon ng isang tiyak na margin ng error at panghuli.
- Ang mga algorithm ng Las Vegas ay nakikilala sa pamamagitan ng hindi pag-iiwan ng hindi tamang sagot, sa katunayan, nahahanap nila ang tamang solusyon o ipinapaalam lamang sa iyo ang posibleng pagkabigo.
Ang Dynamic na programa ay tumutukoy sa pamamaraan kung saan kinakalkula ng algorithm ang mga resulta. Minsan ang mga solusyon ng ilang mga elemento na may mga problema ay nakasalalay sa mga resulta ng iba pang mas maliit na mga problema. Kaya, upang malutas ang mga ito, ang parehong mga halaga ay dapat na muling kalkulahin upang malutas ang pinakamaliit na subproblems, gayunpaman, maaari itong lumikha ng isang pag-aaksaya ng mga cycle. Upang ayusin ito, maaaring magamit ang pabagu-bagong programa at sa kasong ito maaalala ang solusyon ng bawat subproblem, upang magamit ang parehong halagang ito sa halip na ulitin ito nang maraming beses.
3. Heuristic algorithm
Ang mga ito ay nakikilala sa pamamagitan ng paghahanap ng mga solusyon at kahit na hindi nila ginagarantiyahan na ang pinakamahusay sa mga sagot ay matatagpuan, sa kadahilanang ito, maaari silang maituring bilang isang tinatayang mga algorithm. Maaari itong magamit kapag ang paghahanap ng isang solusyon sa pamamagitan ng isang normal na ruta ay itinuturing na imposible. Ang heuristics ay nagbibigay ng mga gamit na ipapaliwanag sa ibaba. Sa pagpaplano, ginagamit ang mga ito upang mag-iskedyul ng mga aktibidad sa isang maikling panahon, sa disenyo ginagamit ang mga ito upang tukuyin ang mga elektrikal o digital na mga sistema at sa simulation ginagamit ang mga ito upang mapatunayan ang ilang mga pamamaraan.
4. Mga algorithm na backtracking
Kilala sila bilang mga recursive na diskarte na naglulutas ng mga problema tulad ng mga puzzle, maze o mga katulad na piraso, kung saan isinasagawa ang isang malalim na paghahanap upang makahanap ng isang posibleng solusyon. Ang pangalan nito ay tumutukoy sa katotohanan na sa mga katanungan na ginawa upang makahanap ng isang resulta, palaging bumalik ito sa nakaraang punto upang makapag-pagsubok ng mga kahalili. Karaniwan itong binabawi upang obserbahan ang kanilang epekto sa ekonomiya, sa mga merkado, sa pagmamarka ng presyo, sa ilang mga operasyon at maging sa lipunan mismo.
5. Matakaw na algorithm
Ito ay kilala bilang tagawasak o matamis na ngipin at nalalapat ito sa mga problema sa pag-optimize, sa bawat hakbang ng algorithm na ito isang lohikal at pinakamainam na pagpipilian ang ginawang end up sa pinakamahusay na mga pandaigdigang solusyon. Gayunpaman, dapat isaalang-alang na kapag naabot na ang isang paghuhusga, ganap na walang magagawa upang maitama o baguhin ito sa hinaharap. Ang operasyong ito ay may ganitong pangalan dahil sa bawat hakbang ang pinakamahusay na maliit na bahagi na may kakayahang "lunukin" ay napili nang hindi nababahala sa kung ano ang mangyayari sa paglaon.
Mga pag-aari ng isang algorithm
Sinubukan ng iba't ibang mga may-akda na tukuyin ang mga algorithm sa isang pormal na paraan habang gumagamit ng mga modelo ng matematika. Gayunpaman, ang mga ispesimen na ito ay malapit na nauugnay sa isang kakaibang uri ng impormasyon na may kasamang mga numero, simbolo, at ilang mga graphic, habang tumatakbo sa isang malaking halaga ng pamamahagi ng data. Sa pangkalahatan, ang karaniwang bahagi ng bawat isa sa mga kahulugan ay buod sa sumusunod na tatlong mga katangian:
Pahayag ng problema
Ang paglutas ng problema sa pamamagitan ng isang computer ay maaaring binubuo ng isang proseso kung saan ang isang problema ay inilarawan at ang isang program na may kakayahang lutasin ito ay pinapayagan na mapaunlad. Ang prosesong ito ay nangangailangan ng pagtatasa ng problema, ang disenyo ng isang algorithm at ang pagbabago nito sa isang programa, pati na rin ang pagpapatupad at pagpapatunay nito. Ang unang dalawang hakbang ay ang pinaka kumplikado sa prosesong ito, ngunit sa sandaling napagmasdan mo ang problema at makakuha ng isang algorithm na maaaring malutas ito, pangunahing nakabatay ang iyong gawain sa pagsasalin sa ito sa nais na wika ng pagprograma.
Pagsusuri ng pangkalahatang solusyon
Kapag natukoy na ang problema, oras na upang pag-aralan ang mga sumusunod:
- Ang impormasyon ng mga tiket na ibinibigay nila sa amin.
- Ang nais na mga resulta.
- Ang domain ng trabaho, mga pahayag o iba pang kinakailangang elemento.
Ang pagtatasa ng mga algorithm ay kilala bilang pinakamahalagang bahagi ng mas malawak na teorya ng pagiging kumplikado ng computational, dahil nagbibigay ito ng mga pagkalkula sa teoretikal para sa mga mapagkukunan na kinakailangan ng anumang algorithm upang malutas ang isang naibigay na problema sa computational. Kapag nagpapatupad ng isang teoretikal na pagsisiyasat, pangkaraniwan na kalkulahin ang mga komplikasyon nito sa isang asymptotic na kahulugan upang makakuha ng sapat na laki ng pag-input. Ang asymptotic itaas na nakatali kasama ang mga nota ng theta at omega ay ginagamit para sa layuning ito at dapat pansinin na ang di-asymptotic na panukala ay maaaring kompyuter.
Ang tumpak na mga hakbang sa kahusayan ay talagang kapaki-pakinabang para sa mga tunay na gumagamit ng mga algorithm, dahil mayroon silang mas tumpak at pinapayagan silang matukoy ang oras na aabutin upang maipatupad. Para sa ilang mga indibidwal tulad ng mga tagalikha ng video game, ang nakatagong pare-pareho ay maaaring mangahulugan ng malaking pagkakaiba sa pagitan ng tagumpay at pagkabigo. Ang mga pagsusuri sa oras ay maaaring nakasalalay sa kung paano tinukoy ang isang tiyak na hakbang at upang magkaroon ng kahulugan ang pagtatasa dapat itong garantisadong ang oras ay marka ng isang pare-pareho.
Pagpapalawak ng algorithm
Upang maisakatuparan ang pagbuo ng isang operasyon, mahalaga na isagawa ang isang serye ng mga pamamaraan upang sumunod sa paglutas ng isang problema mismo. Upang magsimula, ang isang naunang pag-aaral ng kahirapan ay dapat na isagawa at ito ay ginagawa sa pamamagitan ng isang pag-aaral na nagpapakita ng totoong pagpapatakbo ng problema bago pa man maisagawa ang anumang algorithm. Samakatuwid, ang kahulugan ng mga kinakailangan ay sinusuri, sa hakbang na ito dapat kang magkaroon ng isang malinaw na ideya kung aling mga problema ang malulutas, maging ang kabuuan ng dalawang numero, ang pagkakasunud-sunod ng isang listahan ng mga numero, atbp.
Sa paglaon, ang kani-kanilang pagkakakilanlan ng mga module ay naisakatuparan, dahil ang tamang pagpapatupad ng mga algorithm ay nakasalalay dito upang makapagbigay ng mga posibleng solusyon sa mga kinakailangang kinikilala sa itaas.
Sa wakas, ang pagkalkula ay ipinatupad sa isang wika ng programa na naiintindihan ng isang computer upang maunawaan nito ang mga tagubilin na ginagampanan nito at sa gayon ay maisakatuparan ang mga ito, makamit ang inaasahang resulta. Sa huling pamamaraang ito, posible na magsalita ng isang programa na binubuo ng isang serye ng mga tagubilin na sunud-sunod na iniutos at pamahalaan upang malutas ang mga itinakdang kinakailangan.
Mahalagang banggitin na sa sunud-sunod na oras, ginagawa ng mga algorithm ang kanilang pag-andar sa isang diskretong oras at hinahangad na tukuyin ang mga pagkakasunud-sunod ng mga estado ng computational sa bawat input na itinuturing na wasto. Sa abstract na estado, ang mga pagpapatakbo na ito ay malayang mga elemento at isinasaalang-alang na sa kanila ang mga istrukturang kaayusan ng primordial ay maaaring maging invariant sa ilalim ng isomorphism. Sa limitadong paggalugad, ang mga paglipat mula sa isang estado patungo sa isa pa ay ganap na itinatag ng isang permanenteng at may hangganan na paliwanag, kung saan sa pagitan ng isang estado at ng susunod, ang limitadong bilang lamang ng mga termino ng kasalukuyang estado ang isinasaalang-alang.
Hindi rin dapat pansinin na ang mga algorithm ay karaniwang ipinapahayag sa pamamagitan ng mga wikang "pseudo-code" sa pagprograma ng karaniwang wika at maging ng mga kilalang flow diagram. Gayundin, mahalagang banggitin na ang mga algorithm ay may pangunahing papel sa computing dahil sa kanilang representasyon ng data bilang mga pagkakasunud-sunod ng mga piraso. Mula sa ibang anggulo, ang isang programa ay tinukoy bilang algorithm na nagpapahiwatig sa computer ng mga tukoy na hakbang na dapat sundin nito upang sapat na matupad ang ilang mga aktibidad. Sa kabilang banda, ang pag-aaral na sumulat ng pseudocode ay nagpapadali sa pagprograma at samakatuwid ay ipaliwanag sa paglaon.
Ang mga wika sa pagprograma ay kilala bilang isang pormal o artipisyal na wika sapagkat mayroon silang mga patakaran sa grammar na mahusay na tinukoy, may kakayahan itong ibigay sa programmer ang kakayahang i-textualize ang isang serye ng mga tagubilin o pagkakasunud-sunod ng mga regulasyon sa anyo ng mga algorithm na may layunin. upang mapanatili ang isang kontrol hinggil sa pisikal at lohikal na pag- uugali ng computer, sa ganitong paraan, maabot ang iba't ibang uri ng impormasyon. Ang hanay ng mga tuntuning ito na isinulat sa pamamagitan ng isang wika ng programa ay itinalaga bilang isang programa.
Ang mga wika sa pagprograma ay karaniwang binubuo ng isang hanay ng mga simbolo at mga patakaran ng gramatika at semantiko na tumutukoy sa kasalukuyang mga istruktura ng wika at ang kahulugan nito. Mula sa isa pang pananaw, nagsasama rin ang mga wika ng computer ng mga wika sa pagprograma, isang malinaw na halimbawa nito ay ang HTML, na kung saan ay natutupad ang ilang mga tagubilin upang maisakatuparan ang nilalaman ng iba't ibang mga dokumento. Maaaring payagan ng wika ng programa ang tumpak na detalye ng data na dapat patakbuhin ng tukoy na software sa ilalim ng iba't ibang mga pangyayari.
Sa kabilang banda, ang pseudocode ay ang pagsasalarawan ng algorithmic na wika na gumagamit ng mga elementarya na kombensyon ng isang tunay na wika ng programa, ngunit na idinisenyo para sa pagbabasa ng tao sa halip na basahin sa pamamagitan ng isang makina, pinapanatili ang kalayaan mula sa anumang iba pang uri ng wika ng programa. Hindi pinapansin ng pseudocode ang mga detalye na hindi itinuturing na mahalaga sa pag-unawa ng tao sa algorithm, tulad ng mga code ng system, variable na deklarasyon, at kahit na ilang mga subroutine. Sa ganitong paraan, ang wika ng programa ay naghahangad na umakma sa sarili nito ng mga tumpak na paglalarawan sa natural na wika o may mga compact notasyong matematika.