Шта су компјутерски алгоритми и како функционишу?
Осим ако се не бавите математиком или програмирањем, ријеч „алгоритам“ може бити грчки за вас, али то је један од градивних блокова свега што користите за читање овог чланка. Ево кратког објашњења о томе шта су и како раде.
Одрицање од одговорности: Ја нисам професор математике или рачунарске науке, тако да нису сви термини које користим технички. То је зато што покушавам да објасним све на обичном енглеском језику јер људи нису баш задовољни математиком. С обзиром на то, постоји нека математика која је неизбјежна. Математички геекси, слободно исправите или боље објасните у коментарима, али молим вас, држите га једноставним за математички несклон међу нама.
Имаге би Иан Руотсала
Што је алгоритам?
Реч 'алгоритам' има етимологију сличну 'алгебри', осим што се ово односи на самог арапског математичара, ал-Кхваризмија (само интересантну посластицу). Алгоритам за нас, који није програмер, је скуп инструкција које узимају улаз, А, и дају излаз, Б, који на неки начин мења податке који су укључени. Алгоритми имају широк спектар примена. У математици, они могу помоћи израчунати функције из тачака у скупу података, међу много напреднијим стварима. Осим њихове употребе у самом програмирању, они играју главне улоге у стварима као што су компресија датотека и енкрипција података.
Основни сет упутстава
Рецимо да се ваш пријатељ састаје са вама у продавници и ви га водите ка себи. Кажете ствари попут „уђите кроз врата са десне стране“, „прођите рибљу секцију на левој страни“ и „ако видите млекару, прошли сте поред мене.“ Алгоритми раде тако. Можемо користити дијаграм тока да илуструјемо упутства заснована на критеријумима које знамо унапред или да сазнамо током процеса.
(слика под називом “Ицебреакинг Роутине” ЕДИТ: захваљујући Триггер и Фреевхеел)
Из СТАРТ-а, кренули би низ путању, а зависно од тога шта се догађа, пратите “ток” до крајњег резултата. Дијаграми тока су визуелни алати који разумљиво представљају скуп инструкција које користе рачунари. Слично томе, алгоритми помажу да се исто уради са више математичких модела.
Грапхс
Хајде да користимо графикон да илуструјемо различите начине на које можемо дати смер.
Овај график можемо изразити као везу између свих његових тачака. Да бисмо репродуковали ову слику, можемо да дамо сет инструкција неком другом.
Метод 1
Можемо ово представити као низ тачака, а информација ће следити стандардни облик графа = (к1, и1), (к2, и2),…, (кн, ин).
грапх = (0,0), (3,0), (3,3), (5,5), (7,10), (8,7), (9,4), (10,1)
Лако је исцртати сваку тачку, једну за другом, и повезати их са претходном тачком. Међутим, замислите графикон са хиљаду бодова или више сегмената који иду на сваки начин. Та листа би имала много података, зар не? А онда повезивање сваког, један по један, може бити бол.
Метод 2
Још једна ствар коју можемо урадити је дати полазну тачку, нагиб линије између ње и следеће тачке, и назначити где да очекујемо следећу тачку користећи стандардни облик графа = (полазна тачка), [м1, к1, х1] ],…, [Мн, кн, хн] Овдје варијабла 'м' представља нагиб линије, 'к' представља смјер у којем се броји (к или и), а 'х' вам говори како Многи се могу рачунати у наведеном правцу, а можете запамтити и да исцртате тачку после сваког покрета.
грапх = (0,0), [0, к, 3], [0, и, 3], [1, к, 2], [2,5, к, 2], [-3, к, 1], [-3, к, 1], [-3, к, 1]
На крају ћете добити исти граф. Видите да су последња три термина у овом изразу иста, тако да можемо да смањимо то тако што ћемо само на неки начин рећи "поновити то три пута". Рецимо да кад год се појави варијабла 'Р', то значи поновити посљедњу ствар. Ми то можемо да урадимо:
грапх = (0,0), [0, к, 3], [0, и, 3], [1, к, 2], [2,5, к, 2], [-3, к, 1], [Р = 2]
Шта ако појединачне тачке заиста нису битне, а само графикон ради? Можемо да консолидујемо последња три дела:
грапх = (0,0), [0, к, 3], [0, и, 3], [1, к, 2], [2,5, к, 2], [-3, к, 3]
Мало скраћује ствари са места на којем су биле раније.
Метод 3
Хајде да покушамо ово да урадимо на други начин.
и = 0, 0≤к≤3
к = 0, 0≤и≤3
и = к, 3≤к≤5
и = 2.5к-7.5, 5≤к≤7
и = -3к + 29, 7≤к≤8
и = -3к + 29, 8≤к≤9
и = -3к + 29, 9≤к≤10
Овде га имамо у чистим алгебарским терминима. Још једном, ако сами појмови нису важни и само граф има, можемо објединити посљедње три ставке.
и = 0, 0≤к≤3
к = 0, 0≤и≤3
и = к, 3≤к≤5
и = 2.5к-7.5, 5≤к≤7
и = -3к + 29, 7≤к≤10
Који метод одаберете зависи од ваших способности. Можда сте одлични са математиком и графичким приказом, тако да изаберете последњу опцију. Можда сте добри у навигацији, тако да бирате другу опцију. Међутим, у области рачунара радите много различитих врста задатака и способност рачунара се не мења. Стога, алгоритми су оптимизирани за задатке које завршавају.
Друга важна ствар коју треба напоменути је да се сваки метод ослања на кључ. Сваки сет инструкција је бескористан ако не знате шта да радите са њима. Ако не знате да треба да исцртате сваку тачку и повежете тачке, први сет тачака не значи ништа. Уколико не знате шта свака варијабла значи у другој методи, нећете знати како их примијенити, баш као кључ за шифру. Тај кључ је такође саставни део употребе алгоритама, и често, тај кључ се налази у заједници или преко "стандарда".
Сажимање датотеке
Када преузмете .зип датотеку, извучете садржај тако да можете користити оно што се налази унутар њега. Данас, већина оперативних система може заронити у .зип датотеке као што су нормални фолдери, радећи све у позадини. На мојој Виндовс 95 машини пре више од једне деценије, морао сам да извадим све ручно пре него што сам могао да видим нешто више од имена фајлова. То је зато што оно што је сачувано на диску као .зип фајл није било у употребљивом облику. Помислите на кауч на извлачење. Када га желите користити као кревет, морате уклонити јастуке и развити их, који заузимају више простора. Када вам то не треба, или ако желите да га транспортујете, можете да је савијете назад.
Алгоритми компресије се прилагођавају и оптимизирају посебно за типове датотека на које су циљани. Аудио формати, на пример, сваки користе другачији начин за складиштење података који ће, када се декодирају аудио кодеком, дати звучну датотеку сличну оригиналном таласном облику. За више информација о тим разликама, погледајте наш претходни чланак, Које су разлике између свих тих аудио формата? Аудио формати без губитака и .зип датотеке имају једну заједничку ствар: обоје дају оригиналне податке у свом точном облику након процеса декомпресије. Губи аудио кодеци користе друга средства како би уштедели простор на диску, као што су фреквенције обрезивања које не могу да се чују људским ушима и изглађивање таласног облика у одељцима како би се решили неких детаља. На крају, иако можда нећемо моћи да чујемо разлику између МП3 и ЦД стазе, дефинитивно постоји дефицит информација у претходном.
Шифровање података
Алгоритми се такође користе при обезбеђивању података или комуникационих линија. Уместо чувања података тако да користи мање простора на диску, он се складишти на начин који није могуће детектовати другим програмима. Ако неко украде ваш хард диск и почне да га скенира, они могу да покупе податке чак и када избришете датотеке, јер су подаци још увек ту, иако је локација прослеђивања нестала. Када су подаци шифровани, све што се чува не изгледа као оно што је. Обично изгледа случајно, као да се фрагментација временом повећавала. Такође можете сачувати податке и учинити да се он појави као други тип датотеке. Датотеке слика и музички фајлови су добри за ово, јер могу бити прилично велики, а да при томе не изазивају сумњу. Све ово се ради помоћу математичких алгоритама, који узимају неку врсту инпута и претварају га у други, врло специфичан тип излаза. За више информација о томе како функционише шифровање, погледајте ХТГ Објашњава: Шта је шифровање и како функционише?
Алгоритми су математички алати који пружају различите примене у рачунарству. Они раде на обезбеђивању путање између почетне тачке и крајње тачке на конзистентан начин, и обезбеђују инструкције за праћење. Знате више од онога што смо истакли? Поделите своја објашњења у коментарима!