Освен ако не сте в математика или програмиране, думата "алгоритъм" може да бъде гръцка за вас, но това е един от градивните елементи на всичко, което използвате, за да прочетете тази статия. Ето едно бързо обяснение за това какви са и как работят.
Отказ от отговорност: Не съм учител по математика или компютърни науки, така че не всички термини, които използвам, са технически. Това е така, защото се опитвам да обясня всичко на обикновен английски, защото хората не са съвсем удобни с математиката. Това е казано, има някои математика, и това е неизбежно. Математически приказки, не се колебайте да коригирате или по-добре да обясните в коментарите, но моля, не забравяйте, че това е просто за математически ненавиждания сред нас.
Изображение от Иън Руосала
Думата "алгоритъм" има етимология, подобна на "алгебра", с изключение на това, че това се отнася до самия арабски математик ал-Khwarizmi (просто един интересен тон). Алгоритъм за непрограмиращите сред нас е набор от инструкции, които взимат вход, А, и предоставят изход, В, който променя данните по някакъв начин. Алгоритмите имат голямо разнообразие от приложения. В математиката те могат да помогнат да се изчислят функциите от точки в набор от данни, сред много по-напреднали неща. Освен използването им в програмирането, те играят важни роли в неща като компресиране на файлове и криптиране на данни.
Да приемем, че вашият приятел ви среща в магазин за хранителни стоки и го насочвате към вас. Казвате неща като "влезте през дясните врати", "преминете рибния участък отляво" и "ако видите млечните продукти, вие ми минахте". Алгоритмите работят по този начин. Можем да използваме блок-схема, за да илюстрираме инструкции въз основа на критерии, които знаем преди време или да разберем по време на процеса.
(изображение, озаглавено "Рубрика за ледоразбиващ" EDIT: с любезното съдействие на Trigger и Freewheel)
От СТАРТ ще се насочите по пътя и в зависимост от това какво ще се случи, следвате "потока" до крайния резултат. Графиките са визуални инструменти, които по-разбираемо представляват набор от инструкции, използвани от компютрите. По същия начин алгоритмите помагат да се направи същото и с по-математически модели.
Да използваме графика, за да илюстрираме различните начини, по които можем да дадем насоки.
Можем да изразим тази графика като връзка между всичките й точки. За да възпроизведем това изображение, можем да дадем набор от инструкции на някой друг.
Метод 1
Можем да представим това като серия от точки и информацията ще следва стандартната форма на графика = (x1, y1), (x2, y2), ..., (xn, yn).
графиката = (0,0), (3,0), (3,3), (5,5), (7,10), (8,7), (9,4)
Много е лесно да заснемете всяка точка, една след друга, и да ги свържете с предишната точка. Представете си, обаче, графиката с хиляди точки или няколко сегмента, които вървят по всички начини. Този списък ще има много данни, нали? И след това се налага да се свържете всеки един, един по един, може да бъде болка.
Метод 2
Друго нещо, което можем да направим, е да дадем начална точка, наклона на линията между нея и следващата точка и да посочим къде да очакваме следващата точка, като използваме стандартната форма на графика = (начална точка), [m1, x1, h1 ], ..., [mn, xn, hn] Тук променливата "m" представлява наклона на линията, "x" представлява посоката за отчитане (независимо дали е x или y) и "h" много, за да разчитате на посочената посока. Също така можете да запомните да начертаете точка след всяко движение.
1, х, 2], [2, х, 2], [3, х, 1], [-3, х, 1], [-3, х, 1]
Ще завършите със същата графика. Можете да видите, че последните три думи в този израз са еднакви, така че може да сме в състояние да отрежете това, като просто кажете "повторете това три пъти" по някакъв начин. Да приемем, че всеки път, когато видите променливата "R", това означава да повторите последното нещо. Можем да направим това:
1, х, 2], [2, х, 2], [3, х, 1], [R = 2]
Какво ще стане, ако отделните точки нямат значение и само самата графика прави това? Можем да консолидираме последните три раздела, като например:
(2), [3, x, 3], [1, x, 2], [
Тя се скъсява малко от мястото, където са били преди.
Метод 3
Нека се опитаме да направим това по друг начин.
y = 0, 0≤x≤3
x = 0, 0≤y≤3
y = х, 3 <х <5
у = 2.5х-7.5, 5 <х <7
у = -3 х + 29, 7 <х <8
у = -3 х + 29, 8 <х <9
у = -3 х + 29, 9 <х <10
Тук я имаме в чисто алгебрични термини. Още веднъж, ако самите точки нямат значение и само графиката прави, можем да консолидираме последните три елемента.
y = 0, 0≤x≤3
x = 0, 0≤y≤3
y = х, 3 <х <5
у = 2.5х-7.5, 5 <х <7
у = -3 х + 29, 7 <х <10
Сега, кой метод избирате, зависи от вашите способности. Може би сте страхотни с математика и графики, така че да изберете последната опция. Може би сте добри в навигацията, затова изберете втория вариант. В сферата на компютрите, обаче, правите много различни задачи и способностите на компютъра наистина не се променят. Ето защо, алгоритмите са оптимизирани за изпълняваните от тях задачи.
Друг важен момент е да се отбележи, че всеки метод се основава на ключ. Всеки набор от инструкции е безполезен, освен ако не знаете какво да правите с тях. Ако не знаете, че трябва да начертаете всяка точка и да свържете точките, първият набор от точки не означава нищо. Освен ако не знаете каква е всяка променлива във втория метод, няма да знаете как да ги прилагате, подобно на ключа към шифъра.Този ключ е неразделна част от използването на алгоритми и често този ключ се намира в общността или чрез "стандарт".
Когато изтегляте .zip файл, извличате съдържанието, така че да можете да използвате каквото и да е вътре в него. В днешно време повечето операционни системи могат да се гмурнат в .zip файлове като нормални папки, правейки всичко във фонов режим. На моята Windows 95 машина преди повече от десетилетие, аз трябваше да извлича всичко ръчно, преди да видя нещо повече от имената на файловете вътре. Това е така, защото това, което е било съхранено на диска като .zip файл, не е в използваема форма. Помислете за разтегателен диван. Когато искате да го използвате като легло, трябва да премахнете възглавниците и да го разгънете, което заема повече място. Когато нямате нужда от това или искате да го транспортирате, можете да го сгънете.
Алгоритмите за компресиране се коригират и оптимизират специално за видовете файлове, към които са насочени. Аудиоформатите, например, използват различен начин за съхранение на данни, които, когато се декодират от аудиокодека, ще дадат звуков файл, подобен на оригиналната форма на сигнала. За повече информация за тези разлики, разгледайте нашата предишна статия "Какви са разликите между всички тези аудио формати? Звуковите формати без загуба и файловете .zip имат едно общо нещо: и двете доставят оригиналните данни в точната си форма след процеса на декомпресия. Загубените аудио кодеци използват други средства за пестене на дисково пространство, като например честотата на отрязване, която не може да бъде чута от човешките уши и изглаждането на форма на вълната на секции, за да се отървем от някои подробности. В крайна сметка, макар да не можем наистина да чуем разликата между MP3 и CD песен, определено има дефицит на информация в първия.
Алгоритмите се използват и при осигуряване на данни или комуникационни линии. Вместо да съхранява данни, така че да използва по-малко дисково пространство, те се съхраняват по начин, който не може да бъде открит от други програми. Ако някой открадне твърдия ви диск и започне да го сканира, той може да събира данни, дори когато изтривате файлове, защото самите данни все още са там, въпреки че мястото за препращане към него е изчезнало. Когато данните са криптирани, всичко, което се съхранява, не прилича на това, което е. Обикновено изглежда случайно, сякаш фрагментацията се е увеличила с течение на времето. Можете също така да съхранявате данни и да ги показвате като друг вид файл. Файловете с изображения и музикалните файлове са добри за това, тъй като те могат да бъдат доста големи, без да рисуват подозрения, например. Всичко това се извършва с помощта на математически алгоритми, които приемат някакъв вид вход и го превръщат в друг, много специфичен вид продукция. За повече информация как функционира криптирането вижте HTG обяснява: Какво е криптиране и как работи?
Алгоритмите са математически инструменти, които осигуряват разнообразни приложения в компютърните науки. Те работят, за да осигурят пътя между началната точка и крайната точка по последователен начин, и да осигурят инструкциите да го следват. Знаете повече от това, което подчертахме? Споделете обясненията си в коментарите!