Що таке комп'ютерні алгоритми і як вони працюють?
Якщо ви не займаєтеся математикою або програмуванням, слово «алгоритм» може бути грецьким, але це один із будівельних блоків всього, що ви використовуєте, щоб прочитати цю статтю. Ось швидке пояснення того, чим вони є, і як вони працюють.
Відмова від відповідальності: Я не викладач математики чи комп'ютерних наук, тому не всі терміни, які я використовую, є технічними. Це тому, що я намагаюся пояснити все на простому англійській мові для людей, які не зовсім комфортні з математикою. Це, як кажуть, є деяка математика участь, і це неминуче. Математичні вундеркіни, не соромтеся виправляти або краще пояснити в коментарях, але будь ласка, тримайте його простим для математично відхилених серед нас.
Зображення на Ян Руоцала
Що таке алгоритм?
Слово «алгоритм» має етимологію, подібну до «алгебри», за винятком того, що це стосується самого арабського математика, аль-Хварізмі (просто цікава лапка). Алгоритм для не-програмістів серед нас являє собою набір інструкцій, які приймають вхідні дані, A, і забезпечують вихід, B, який змінює дані, задіяні певним чином. Алгоритми мають широке розмаїття додатків. У математиці вони можуть допомогти обчислити функції з точок у наборі даних, серед набагато більш просунутих речей. Окрім їх використання в самих програмах, вони відіграють важливу роль у процесах стиснення файлів і шифрування даних.
Основний набір інструкцій
Припустімо, що ваш друг зустрічає вас у продуктовому магазині, і ви керуєте його до вас. Ви говорите такі речі, як «входите через двері правої сторони», «пройдіть секцію риби ліворуч» і «якщо ви побачите молоко, ви пройшли мене». Алгоритми працюють так. Ми можемо використовувати блок-схему, щоб проілюструвати інструкції, засновані на критеріях, які ми знаємо заздалегідь або дізнатися під час процесу.
(Зображення під назвою "Крижаний рутинний" EDIT: надано Trigger та Freewheel)
З START, ви б головою вниз по шляху, і в залежності від того, що відбувається, ви слідуєте "потоку" до кінцевого результату. Блок-схеми - це візуальні інструменти, які більш зрозуміло представляють набір інструкцій, що використовуються комп'ютерами. Аналогічно, алгоритми допомагають зробити те ж саме з більшою кількістю математичних моделей.
Графіки
Давайте використаємо графік, щоб проілюструвати різні способи, якими ми можемо давати напрями.
Цей графік можна виразити як зв'язок між усіма його точками. Для того, щоб відтворити цей образ, ми можемо дати комусь інший набір інструкцій.
Метод 1
Ми можемо представити це як ряд точок, і інформація буде слідувати стандартній формі графа = (x1, y1), (x2, y2),…, (xn, yn).
graph = (0,0), (3,0), (3,3), (5,5), (7,10), (8,7), (9,4), (10,1)
Дуже легко побудувати кожну точку один за одним і з'єднати їх з попередньою точкою. Тим не менш, уявіть собі графік з тисячею точок або кількома сегментами, які йдуть кожним шляхом. У цьому списку буде багато даних, правда? І тоді підключення кожного, по одному, може бути болем.
Метод 2
Інша річ, яку ми можемо зробити, це дати початкову точку, нахил лінії між нею і наступною точкою, і вказати, де можна очікувати наступної точки, використовуючи стандартну форму графа = (початкова точка, [m1, x1, h1] ],…, [Mn, xn, hn] Тут змінна 'm' являє собою нахил рядка, 'x' являє собою напрямок, у якому потрібно рахувати (x чи y), а 'h' говорить, як Ви також можете пам'ятати, що після кожного переміщення можна побудувати точку.
graph = (0,0), [0, x, 3], [0, y, 3], [1, x, 2], [2,5, x, 2], [-3, x, 1], [-3, x, 1], [-3, x, 1]
Ви отримаєте той самий графік. Ви можете бачити, що останні три терміни в цьому вираженні однакові, тож ми можемо усунути це тим, що просто сказати «повторити це три рази». Припустимо, що коли ви бачите змінну 'R', це означає повторити останню річ. Ми можемо зробити це:
graph = (0,0), [0, x, 3], [0, y, 3], [1, x, 2], [2,5, x, 2], [-3, x, 1], [R = 2]
Що робити, якщо окремі точки зовсім не мають значення, і тільки сам графік робить це? Ми можемо консолідувати ці три останні секції так:
graph = (0,0), [0, x, 3], [0, y, 3], [1, x, 2], [2.5, x, 2], [-3, x, 3]
Це трохи скорочує речі, звідки вони були раніше.
Метод 3
Давайте спробуємо зробити це іншим способом.
y = 0, 0≤x≤3
x = 0, 0≤y≤3
y = x, 3≤x≤5
y = 2.5x-7.5, 5≤x≤7
y = -3x + 29, 7≤x≤8
y = -3x + 29, 8≤x≤9
y = -3x + 29, 9≤x≤10
Тут ми маємо її в чисто алгебраїчних термінах. Знову ж таки, якщо самі точки не мають значення і тільки граф робить, ми можемо консолідувати останні три пункти.
y = 0, 0≤x≤3
x = 0, 0≤y≤3
y = x, 3≤x≤5
y = 2.5x-7.5, 5≤x≤7
y = -3x + 29, 7≤x≤10
Тепер, який метод ви обираєте, залежить від ваших здібностей. Можливо, ви прекрасні з математикою та графікою, тому ви вибираєте останній варіант. Можливо, ви добре керуєте навігацією, тому ви вибираєте другий варіант. Проте в області комп'ютерів ви виконуєте багато різних завдань, і здатність комп'ютера не змінюється. Таким чином, алгоритми оптимізовані для виконання завдань, які вони виконують.
Іншим важливим моментом є те, що кожен метод покладається на ключ. Кожен набір інструкцій марний, якщо ви не знаєте, що робити з ними. Якщо ви не знаєте, що ви повинні будувати кожну точку і з'єднувати точки, перший набір точок не означає нічого. Якщо ви не знаєте, що означає кожна змінна у другому методі, ви не будете знати, як їх застосовувати, подібно до ключа до шифру. Цей ключ також є невід'ємною частиною використання алгоритмів, і часто цей ключ знаходиться в спільноті або через "стандарт".
Стиснення файлів
Коли ви завантажуєте .zip-файл, ви витягуєте вміст, щоб ви могли використовувати все, що знаходиться всередині нього. На сьогоднішній день більшість операційних систем можуть занурюватися у файли .zip, як у звичайних папках, роблячи все у фоновому режимі. На моєму Windows 95 машині більше десяти років тому, я повинен був витягти все вручну, перш ніж я міг побачити щось більше, ніж файли всередині. Це тому, що те, що було збережено на диску як файл .zip, не було у використанні. Подумайте про висувний диван. Коли ви хочете використовувати його як ліжко, ви повинні видалити подушки і розгорнути його, який займає більше місця. Якщо вам це не потрібно або ви хочете перевезти його, ви можете скласти його назад.
Алгоритми стиснення коригуються і оптимізуються спеціально для типів файлів, на які вони спрямовані. Формати звуку, наприклад, кожен використовує інший спосіб зберігання даних, які при декодуванні аудіокодеком дадуть звуковий файл, подібний до вихідної форми сигналу. Для отримання додаткової інформації про ці відмінності, ознайомтеся з нашою попередньою статтею, які відмінності між усіма цими аудіоформатами? Форми аудіо без втрат і файли .zip мають одну спільну риску: обидва вони дають оригінальні дані у точному вигляді після процесу декомпресії. Звукові кодеки з втратами використовують інші засоби для економії дискового простору, наприклад частоти обрізання, які не можуть бути почуті людськими вухами, і згладжування форми сигналу в розділах, щоб позбутися деяких деталей. Зрештою, в той час, як ми можемо не бути в змозі дійсно почути різницю між MP3 і CD трек, є, безумовно, дефіцит інформації в першому \ t.
Шифрування даних
Алгоритми також використовуються для захисту даних або ліній зв'язку. Замість того, щоб зберігати дані таким чином, щоб він використовував менше дискового простору, він зберігається таким чином, що неможливо виявити іншими програмами. Якщо хтось викраде ваш жорсткий диск і почне сканувати його, вони можуть підібрати дані, навіть коли ви видаляєте файли, оскільки самі дані все ще існують, навіть якщо місце пересилання до нього вже немає. Коли дані шифруються, те, що зберігається, не виглядає таким, яким він є. Як правило, це виглядає випадковим чином, як якби фрагментація з часом наростала. Можна також зберігати дані і робити це як інший тип файлу. Файли зображень і музичні файли хороші для цього, так як вони можуть бути досить великими, не викликаючи підозри, наприклад. Все це робиться за допомогою математичних алгоритмів, які беруть певний вхід і перетворюють його в інший, дуже специфічний тип виводу. Для отримання додаткової інформації про те, як працює шифрування, перевірте HTG Пояснює: Що таке шифрування і як вона працює?
Алгоритми - це математичні інструменти, які забезпечують різноманітні застосування в інформатиці. Вони працюють для забезпечення послідовного шляху між початковою точкою та кінцевою точкою, а також надають інструкції для її дотримання. Знати більше, ніж ми виділили? Поділіться своїми поясненнями в коментарях!