Matemātikā, datorzinātnēs un citās saistītās doktrīnās algoritms tiek definēts kā metodiski un ierobežotā veidā atrastu un nepārprotamu priekšrakstu kopums, kas ļauj veikt aprēķinus, apstrādāt noteiktu informāciju, sniegt problēmu risinājumus un veikt dažādas darbības. Kad esat sācis no sākuma stāvokļa un ieraksta, ievērojot nepieciešamās procedūras, tiek sasniegts galīgais stāvoklis un tiek iegūts rezultāts. Algoritmi ir algoritmu izpētes objekts, un, lai arī daudzi, iespējams, tam netic, tos var izmantot arī visos ikdienas dzīves aspektos.
Kas ir algoritms
Satura rādītājs
Aprēķinā to parasti definē kā secīgu instrukciju pēctecību, kurā daži procesi tiek veikti, lai sniegtu atbildes uz noteiktiem lēmumiem vai vajadzībām. Tādā pašā veidā algoritmi bieži tiek izmantoti loģikā un matemātikā, kā arī tie ir pamats, cita starpā, lietošanas pamācību, ilustratīvu brošūru izstrādei. Viens no izcilākajiem matemātikā ir tas, ko attiecina uz ģeometriskajiem Euklīdiem, lai sasniegtu divu pozitīvu veselu skaitļu lielāko kopējo dalītāju un labi zināmo "Gausa metodi", lai noteiktu lineāro vienādojumu sistēmas.
Saistībā ar datorzinātnēm šo aprēķinu var dēvēt par vadlīniju secību, kas jāievēro, lai noteiktu problēmu, izmantojot datoru.
Tāpēc ar algoritmiku saprot disciplīnu, kas koncentrējas uz algoritmu analīzi un dizainu. Ņemot vērā pirmo, tas cenšas pārbaudīt tādas īpašības kā pareizība un efektivitāte attiecībā uz laiku un telpu, lai izprastu problēmas, kuras var atrisināt algoritmiski. Kas attiecas uz otro, tas cenšas izpētīt jau izveidotās paradigmas un piedāvā jaunus piemērus.
Algoritms atrodas skaitļošanas progresa centrā un ir svarīgs dažādās tā jomās. Tādā veidā tik veiksmīgiem pakalpojumiem kā Facebook un Google nebūtu iespējams apstrādāt viņu rīcībā esošās informācijas apjomu bez algoritmu vai specializētu datu struktūru sadarbības. Tomēr ikdienas dzīvē tiek izmantoti arī algoritmi, kuru piemērs ir plīts aizdedzināšana, jo tas sākas brīdī, kad cilvēks dodas uz virtuvi, to novēro un beidzas, kad tā turpina to iedegt..
Algoritma raksturojums
Lai gan algoritms ir pazīstams kā sakārtots un ierobežots dažādu darbību kopums, kas noved pie problēmas atrisināšanas, tiek teikts, ka šo grūtību raksturs atšķiras atkarībā no konteksta, kurā tās tiek atrastas, šādā veidā pastāv problēmas ķīmiskā, matemātiskā, filozofiskā, cita starpā. Tādējādi var teikt, ka tā raksturs ir daudzveidīgs un tā izpilde ar datoru nav nepieciešama. Papildus visam iepriekš izskaidrotajam, algoritmiem ir raksturlielumi, kas ir elementāri, lai noteiktu, kādi tie ir šodien, un tie tiks minēti turpmāk.
- Algoritmā ietvertajām vadlīnijām jābūt specifiskām, lai izvairītos no vietas jebkāda veida neskaidrībām, tas nozīmē, ka atbilstoši jāievēro atbilstošās instrukcijas vai, gluži pretēji, plūsmas grafiskais attēlojums, kurā reģistrējaties, neveicinās risinājumu. pareizi.
- Tam jābūt pilnīgā definīcijā, cenšoties pēc iespējas vairāk to ievērot tik reižu, cik nepieciešams, lai iegūtu tādu pašu rezultātu un gadījumā, ja notiek pretējais, algoritms nebūs uzticams un nekalpos kā ceļvedis, pieņemot lēmumu.
- Viņi ir pazīstami ar to, ka ir ierobežoti, parasti tie kādā brīdī beidzas un vēlāk katra soļa beigās dod rezultātu. Ja algoritms stiepjas bezgalīgi, atgriežoties pie kāda sākuma punkta, kuru nekad nevar atrisināt, pastāv paradokss vai labi pazīstama atkārtojumu “cilpa”.
- Visbeidzot, tiek teikts, ka galvenais elements ir algoritmu lasāmība, jo, ja tā arguments nav saprotams, atbilstošās instrukcijas nevarēja izpildīt, turklāt tas nozīmē tiešu, skaidru un lakonisku teksta formulējumu, kas atrodams katrā no tiem.
Algoritma daļas
Katrai algoritmiskai darbībai ir trīs dažādas daļas, kas pakļautas sistēmas pamatstruktūrai, un tās ir:
- Ievade: saukta arī par galveni vai sākuma punktu, tā ir sākotnējā instrukcija, kas atspoguļo algoritma ģenēzi, un tā, kas motivē tā lasīšanu.
- Process: to sauc arī par deklarāciju. Tas ir precīzs izstrāde, ko piedāvā algoritms, un būtībā tas ir tā atslēgu bagāžnieks instrukciju formulēšanai.
- Izeja: šajā pēdējā posmā ir īpašas instrukcijas, kuras nosaka algoritms, piemēram, tās komandas vai izšķirtspējas.
Algoritmu piemēri
Parasti matemātisko aprēķinu piemēri ietver 2 + 3 = 5 saskaitīšanai un 15-9 = 6 atņemšanai. Vēl viens vienkāršu algoritmu vizualizācijas veids ir virtuves receptēs, jo tajās aprakstīts īpašs un kārtīgs process, piemēram, “vispirms jānovieto puse katliņa ūdens, lai uzkarsētu, pēc tam jāpievieno šķipsniņa sāls un visbeidzot pipari tiks sadalīti, lai iegūtu sēklas un dzīslas. " Šis modelis parāda sākumu, procesu un beigas, kas būtībā nosaka algoritmus.
Algoritmu veidi
Starp dažādiem algoritmu veidiem, kas pastāv visā pasaulē, uzsvars tiek likts uz tiem, kas tiek klasificēti pēc zīmju sistēmas, bet citi - pēc to funkcijas. Algoritms būtībā ir vispazīstamākais risinājums jebkuras konkrētas problēmas risināšanai, un atbilstoši tā stratēģijām un funkcijām pastāv dažādi to veidi, starp kuriem izceļas dinamiskais, reversais, brutālais spēks, oportūnistiskais, marķējums., izlases utt. Papildus iepriekš minētajiem algoritmiem ir tūkstošiem tādu, kas ir piemēroti grūtību risināšanai jebkurā jomā.
Saskaņā ar jūsu zīmju sistēmu
Kvalitatīvie un kvantitatīvie atrodas šajā kategorijā.
- Kvalitatīviem algoritmiem ir raksturīgi verbāli elementi, to piemērs ir instrukcijas vai atzītie "soli pa solim", kas tiek piešķirti mutiski, piemēram, kulinārijas mākslas receptes vai procedūras roku darba veikšanai.
- Kvantitatīvie algoritmi ir pilnīgi pretēji kvalitatīvajiem, pateicoties noteiktu skaitlisko elementu klātbūtnei un matemātikas izmantošanai aprēķinu veikšanai, piemēram, kad tiek atrasta kvadrātsakne vai atrisināti vienādojumi.
Šajā klasifikācijā ir arī skaitļošanas un neskaitļošanas algoritmi. Skaitļošanas metodes tiek veiktas, izmantojot datoru, un to raksturo tas, ka tās ir tik sarežģītas, lai prasītu veikt mašīnu, turklāt tie ir kvantitatīvi algoritmi, kurus var optimizēt. Ar skaitļošanu nesaistītām personām nav pienākuma izpildīt ar mašīnu vai datoru; spilgts piemērs tam ir televīzijas programmēšana.
Pēc tās funkcijas
Šajā klasifikācijā ietilpst:
1. Marķēšanas algoritms
To raksturo automatizācijas izmantošana rūpīgai cenu noteikšanai, koncentrējoties uz tādiem faktoriem kā lietotāju uzvedība, un to sauc arī par spēju automātiski noteikt cenas komponentu devalvācijai, lai palielinātu lietotāju peļņu. pārdevēji. Kopš deviņdesmito gadu sākuma tai ir bijusi ļoti nozīmīga loma aviācijas nozares kopējā praksē.
Marķēšanas algoritms atšķiras ar to, ka tas ir viens no visizplatītākajiem paņēmieniem ļoti konkurētspējīgās nozarēs, atsaucoties uz ceļojumu aģentūrām vai šīm tiešsaistes iestādēm. Šāda veida algoritms var būt ārkārtīgi sarežģīts vai salīdzinoši vienkāršs, jo daudzos gadījumos tiek pamanīts, ka tie tiek optimizēti vai pašmācīti ar noteiktu testu nepārtrauktību. Papildus tam marķēšanas algoritmi var kļūt nepopulāri klientu lokā, jo indivīdi mēdz novērtēt gan stabilitāti, gan taisnīgumu.
2. Varbūtības algoritmi
Tie ir tie, kuros rezultātu iegūšanas veids ir atkarīgs no varbūtībām, tos parasti sauc par nejaušiem algoritmiem.
Dažās lietojumprogrammās šāda veida darbību apstrāde ir izplatīta, piemēram, kad laika gaitā tiek simulēta jebkuras esošās vai izveidotās sistēmas darbība, kā rezultātā tiek iegūts nejaušs risinājums. Citos apstākļos problēma, kas jāatrisina, parasti ir deterministiska, taču pastāv iespēja to pārveidot nejauši, lai to atrisinātu, izmantojot varbūtības algoritmu. Pozitīvais gadījuma izlasē ir tas, ka to pielietošanai nav nepieciešami ļoti sarežģīti matemātikas pētījumi.
Turklāt šajā grupā ir trīs galvenie veidi, kas pazīstami kā skaitliski, Montekarlo un Lasvegasa.
- Skaitliskie algoritmi var nodrošināt aptuvenu problēmas rezultātu un parasti tiek izmantoti inženierzinātnēs.
- Montekarlo algoritmi var dot pareizu vai nepareizu risinājumu, un tiem ir noteikta kļūda un visbeidzot.
- Lasvegasas algoritmi atšķiras ar to, ka nekad neatstāj nepareizu atbildi, patiesībā viņi atrod pareizo risinājumu vai vienkārši informē jūs par iespējamo kļūmi.
Dinamiskā programmēšana attiecas uz metodi, kurā algoritms aprēķina rezultātus. Dažreiz noteiktu elementu, kuriem ir problēmas, risinājumi ir atkarīgi no citu mazāku problēmu rezultātiem. Tātad, lai tos atrisinātu, ir jāpārrēķina tās pašas vērtības, lai atrisinātu mazākās apakšproblēmas, tomēr tas var radīt ciklu izšķērdēšanu. Lai to novērstu, var izmantot dinamisko programmēšanu, un šajā gadījumā tiek atcerēts katras apakšproblēmas risinājums, lai izmantotu šo pašu vērtību, nevis atkārtotu to vairākas reizes.
3. Heiristiskie algoritmi
Tie atšķiras ar risinājumu atrašanu, un pat tādējādi negarantē, ka tiks atrastas labākās atbildes, tāpēc tos var uzskatīt par aptuveniem algoritmiem. Tos var izmantot, ja risinājumu atrast normālā ceļā uzskata par neiespējamu. Heiristika nodrošina lietojumus, kas tiks paskaidroti turpmāk. Ar plānošanu, tie tiek izmantoti, lai grafiku darbībām īsā laika periodā, jo dizaina tie tiek izmantoti, lai attēlotu elektrisko vai ciparu sistēmas un simulācijas tie tiek izmantoti, lai pārbaudītu konkrētas procedūras.
4. Backtracking algoritmi
Tās ir pazīstamas kā rekursīvas stratēģijas, kas risina tādas problēmas kā mīklas, labirinti vai tamlīdzīgi gabali, kuros tiek veikta dziļa meklēšana, lai atrastu iespējamo risinājumu. Tās nosaukums attiecas uz faktu, ka pieprasījumos, kas veikti, lai atrastu rezultātu, tas vienmēr atgriežas iepriekšējā punktā, lai varētu pārbaudīt alternatīvas. Tos parasti atceļ, lai novērotu to ietekmi uz ekonomiku, tirgiem, cenu marķēšanu, noteiktām darbībām un pat pašu sabiedrību.
5. Alkatīgs algoritms
Tas ir pazīstams kā iznīcinātājs vai salds zobs, un tas ir piemērots optimizācijas problēmām, katrā šī algoritma solī tiek izdarīta loģiska un optimāla izvēle, lai iegūtu labākos no globālajiem risinājumiem. Tomēr jāņem vērā, ka pēc tam, kad ir pieņemts spriedums, turpmāk neko nevar darīt, lai to labotu vai mainītu. Šai operācijai ir šāds nosaukums, jo katrā solī tiek izvēlēta vislabākā frakcija, kas spēj "norīt", neuztraucoties par to, kas notiks vēlāk.
Algoritma īpašības
Dažādi autori ir mēģinājuši formāli definēt algoritmus, vienlaikus izmantojot matemātiskos modeļus. Tomēr šie eksemplāri ir cieši saistīti ar savdabīgu informācijas veidu, kas ietver skaitļus, simbolus un dažus grafikus, vienlaikus darbojoties ar lielu datu sadalījumu. Katras definīcijas kopīgā līdzdalība ir apkopota šādās trīs īpašībās:
Problēmas izklāsts
Problēmu risināšana, izmantojot datoru, var sastāvēt no procesa, kurā aprakstīta problēma, un atļauts izstrādāt programmu, kas spēj to atrisināt. Šim procesam nepieciešama problēmas analīze, algoritma dizains un pārveidošana par programmu, kā arī tā veiktspēja un validācija. Pirmie divi soļi ir vissarežģītākie šajā procesā, taču, tiklīdz esat pārbaudījis problēmu un ieguvis algoritmu, kas to var atrisināt, jūsu uzdevums galvenokārt ir balstīts uz tā tulkošanu vēlamajā programmēšanas valodā.
Vispārējā risinājuma analīze
Kad problēma ir definēta, ir pienācis laiks analizēt sekojošo:
- Informācija par biļešu, ka viņi sniedz mums.
- Vēlamie rezultāti.
- Darba sfēra, paziņojumi vai citi nepieciešamie elementi.
Algoritmu analīze ir pazīstama kā plašākās skaitļošanas sarežģītības teorijas vissvarīgākā daļa, jo tā sniedz teorētiskus aprēķinus par resursiem, kas jebkuram algoritmam nepieciešami, lai atrisinātu doto skaitļošanas problēmu. Veicot teorētisku pētījumu, parasti tiek aprēķināts tā sarežģījums asimptotiskā nozīmē, lai iegūtu pietiekami lielu ievades lielumu. Šim nolūkam tiek izmantota asimptotiskā augšējā robeža kopā ar teta un omega apzīmējumiem, un jāatzīmē, ka nesimptotisko mēru var datorizēt.
Precīzi efektivitātes rādītāji ir patiešām noderīgi tiem, kas faktiski izmanto algoritmus, jo tiem ir lielāka precizitāte, un tas ļauj viņiem noteikt izpildes laiku. Dažiem cilvēkiem, piemēram, videospēļu veidotājiem, slēptais konstante var nozīmēt lielu atšķirību starp panākumiem un neveiksmēm. Laika novērtēšana var būt atkarīga no tā, kā noteikts noteikts solis, un, lai analīzei būtu jēga, ir jāgarantē, ka laiku ievērojami ierobežo konstante.
Algoritma izstrāde
Lai veiktu operācijas izstrādi, ir svarīgi veikt virkni procedūru, lai ievērotu pašu problēmu. Lai sāktu, jāveic iepriekšēja grūtību analīze, un tas tiek darīts, veicot pētījumu, kas parāda problēmas patieso darbību ilgi pirms jebkura algoritma izpildes. Tāpēc tiek vērtēta prasību definīcija, šajā solī jums ir skaidri jāsaprot, kādas problēmas jārisina, vai tā būtu divu skaitļu summa, skaitļu saraksta sakārtošana utt.
Vēlāk tiek veikta attiecīgā moduļu identifikācija, jo pareiza algoritmu ieviešana ir atkarīga no tā, lai sniegtu iespējamos risinājumus iepriekš norādītajām prasībām.
Visbeidzot, aprēķins tiek realizēts datoram saprotamā programmēšanas valodā, lai tas spētu saprast tā modelētās instrukcijas un tādējādi varētu tās izpildīt, sasniedzot gaidīto rezultātu. Šajā pēdējā procedūrā jau var runāt par programmu, kas sastāv no virknes instrukciju, kas tiek pasūtītas viena pēc otras un spēj atrisināt noteiktās prasības.
Ir svarīgi pieminēt, ka secīgā laikā algoritmi veic savu funkciju diskretizētā laikā un cenšas noteikt skaitļošanas stāvokļu secību katrā ievadē, kas tiek uzskatīts par derīgu. Abstraktā stāvoklī šīs operācijas ir neatkarīgi elementi, un tiek uzskatīts, ka tajās pirmatnējās kārtības struktūras izomorfisma apstākļos var kļūt nemainīgas. Ierobežotā izpētē pārejas no viena stāvokļa uz citu tiek pilnībā noteiktas ar pastāvīgu un ierobežotu skaidrojumu, kurā starp vienu un nākamo stāvokli tiek ņemts vērā tikai ierobežots pašreizējā stāvokļa terminu skaits.
Nevajadzētu aizmirst arī to, ka algoritmi parasti tiek izteikti, izmantojot “pseidokoda” programmēšanas valodas, parasto valodu un pat labi zināmās plūsmas diagrammas. Tāpat ir svarīgi pieminēt, ka algoritmiem ir būtiska loma skaitļošanā, jo tie atspoguļo datus kā bitu sekvences. No cita viedokļa programma tiek definēta kā algoritms, kas datoram izsaka tās īpašās darbības, kas tai jāievēro, lai pienācīgi izpildītu noteiktas darbības. No otras puses, iemācīšanās rakstīt pseidokodu atvieglo programmēšanu, un tāpēc tas tiks paskaidrots vēlāk.
Programmēšanas valodas ir pazīstamas kā oficiāla vai mākslīga valoda, jo tām ir skaidri definēti gramatikas likumi, tā spēj nodrošināt programmētāju iespēju algoritmu veidā tekstualizēt virkni instrukciju vai noteikumu secību ar mērķi lai saglabātu kontroli pār datora fizisko un loģisko uzvedību, šādā veidā var sasniegt dažādus informācijas veidus. Šo ar programmēšanas valodu rakstīto priekšrakstu kopu sauc par programmu.
Programmēšanas valodas parasti veido simbolu kopums un gramatiskie un semantiskie noteikumi, kas nosaka pašreizējo valodas struktūru un to nozīmi. No citas perspektīvas datorvalodas ietver arī programmēšanas valodas, spilgts piemērs tam ir HTML, kas izpilda noteiktas instrukcijas dažādu dokumentu satura izpildei. Programmēšanas valoda var ļaut precīzi norādīt tos datus, kuri ir jādarbina ar īpašu programmatūru dažādos apstākļos.
No otras puses, pseidokods ir algoritmiskā apraksta valoda, kurā tiek izmantotas reālas programmēšanas valodas elementārās konvencijas, bet kas paredzēta cilvēku lasīšanai, nevis lasīšanai caur mašīnu, saglabājot neatkarību no jebkura cita veida programmēšanas valoda. Pseidokodā tiek ignorētas detaļas, kuras netiek uzskatītas par būtiskām cilvēku algoritma izpratnei, piemēram, sistēmas kodi, mainīgo deklarācijas un pat dažas apakšprogrammas. Tādā veidā programmēšanas valoda cenšas sevi papildināt ar precīziem aprakstiem dabiskajā valodā vai ar kompaktiem matemātiskiem apzīmējumiem.