Что такое компьютерные алгоритмы и как они работают?

Опубликовано: 2022-01-29

Если вы не увлекаетесь математикой или программированием, слово «алгоритм» может быть для вас греческим, но это один из строительных блоков всего, что вы используете для чтения этой статьи. Вот краткое объяснение того, что они из себя представляют и как они работают.

Отказ от ответственности: я не учитель математики или информатики, поэтому не все термины, которые я использую, являются техническими. Это потому, что я пытаюсь объяснить все на простом английском языке для людей, не совсем знакомых с математикой. При этом здесь присутствует некоторая математика, и это неизбежно. Любители математики, не стесняйтесь исправлять или объяснять лучше в комментариях, но, пожалуйста, не усложняйте задачу тем, кто не склонен к математике.

Изображение Яна Руотсала

Что такое алгоритм?

Слово «алгоритм» имеет этимологию, аналогичную слову «алгебра», за исключением того, что оно относится к самому арабскому математику аль-Хорезми (просто интересный факт). Алгоритм для непрограммистов среди нас — это набор инструкций, которые принимают входные данные A и предоставляют выходные данные B, которые каким-то образом изменяют задействованные данные. Алгоритмы имеют широкий спектр приложений. В математике они могут помочь вычислить функции из точек в наборе данных, помимо гораздо более сложных вещей. Помимо их использования в самом программировании, они играют важную роль в таких вещах, как сжатие файлов и шифрование данных.

Базовый набор инструкций

Допустим, ваш друг встречает вас в продуктовом магазине, и вы ведете его к себе. Вы говорите что-то вроде «заходи через правую дверь», «пройди рыбный отдел слева» и «если увидишь молочную, ты прошел мимо меня». Алгоритмы работают так. Мы можем использовать блок-схему, чтобы проиллюстрировать инструкции, основанные на критериях, которые мы знаем заранее или выясняем в процессе.

(изображение под названием «Ледокольная рутина» РЕДАКТИРОВАТЬ: предоставлено Trigger and Freewheel)

Реклама

От НАЧАЛА вы идете по пути, и в зависимости от того, что происходит, вы следуете «потоку» к конечному результату. Блок-схемы — это визуальные инструменты, которые могут более понятно представлять набор инструкций, используемых компьютерами. Точно так же алгоритмы помогают делать то же самое с более математическими моделями.

Графики

Давайте воспользуемся графиком, чтобы проиллюстрировать различные способы, которыми мы можем давать указания.

Мы можем представить этот граф как связь между всеми его точками. Чтобы воспроизвести этот образ, мы можем дать кому-то набор инструкций.

Способ 1

Мы можем представить это как ряд точек, и информация будет соответствовать стандартной форме графика = {(x1, y1), (x2, y2), …, (xn, yn)}.

график = {(0,0), (3,0), (3,3), (5,5), (7,10), (8,7), (9,4), (10,1) }

Довольно легко построить каждую точку одну за другой и соединить их с предыдущей точкой. Однако представьте себе график с тысячей точек или несколькими сегментами, идущими в разные стороны. В этом списке будет много данных, верно? И тогда необходимость подключать каждый из них по одному может быть проблемой.

Способ 2

Еще одна вещь, которую мы можем сделать, это указать начальную точку, наклон линии между ней и следующей точкой, и указать, где ожидать следующую точку, используя стандартную форму graph={(начальная точка}, [m1, x1, h1 ], …, [mn, xn, hn]}. Здесь переменная 'm' представляет собой наклон линии, 'x' представляет направление счета (будь то x или y), а 'h' говорит вам, как много, чтобы считать в указанном направлении.Вы также можете не забыть нанести точку после каждого движения.

график = {(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», это означает, что нужно повторить последнее. Мы можем сделать это:

график = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,1], [R=2]}

Что, если отдельные точки на самом деле не имеют значения, а имеет значение только сам график? Мы можем объединить эти последние три раздела следующим образом:

график = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,3]}

Это немного сокращает вещи по сравнению с тем, где они были раньше.

Способ 3

Попробуем сделать это другим способом.

у=0, 0≤х≤3
х=0, 0≤y≤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≤y≤3
у=х, 3≤х≤5
у=2,5х-7,5, 5≤х≤7
у=-3х+29, 7≤х≤10

Теперь, какой метод вы выберете, зависит от ваших способностей. Может быть, вы отлично разбираетесь в математике и графиках, поэтому выбираете последний вариант. Возможно, у вас хорошо получается ориентироваться, поэтому вы выбираете второй вариант. Однако в мире компьютеров вы выполняете много разных задач, и возможности компьютера на самом деле не меняются. Поэтому алгоритмы оптимизированы для задач, которые они решают.

Еще один важный момент, который следует отметить, заключается в том, что каждый метод зависит от ключа. Каждый набор инструкций бесполезен, если вы не знаете, что с ними делать. Если вы не знаете, что должны нанести каждую точку и соединить точки, первый набор точек ничего не значит. Если вы не знаете, что означает каждая переменная во втором методе, вы не будете знать, как их применять, как ключ к шифру. Этот ключ также является неотъемлемой частью использования алгоритмов, и часто этот ключ можно найти в сообществе или через «стандарт».

Сжатие файлов

Когда вы загружаете ZIP-файл, вы извлекаете его содержимое, чтобы использовать все, что внутри него. В настоящее время большинство операционных систем могут погружаться в файлы .zip, как в обычные папки, выполняя все в фоновом режиме. На моей машине с Windows 95 более десяти лет назад мне приходилось извлекать все вручную, прежде чем я смог увидеть что-то большее, чем имена файлов внутри. Это потому, что то, что было сохранено на диске в виде файла .zip, было непригодным для использования. Подумайте о раскладном диване. Когда вы хотите использовать его как кровать, вам нужно снять подушки и разложить его, что занимает больше места. Когда он вам не нужен или вы хотите его перевезти, вы можете сложить его обратно.

Реклама

Алгоритмы сжатия настраиваются и оптимизируются специально для типов файлов, для которых они предназначены. Аудиоформаты, например, используют разные способы хранения данных, которые при декодировании аудиокодеком дают звуковой файл, аналогичный исходной волновой форме. Для получения дополнительной информации об этих различиях ознакомьтесь с нашей предыдущей статьей «Каковы различия между всеми этими аудиоформатами?». Аудиоформаты без потерь и файлы .zip имеют одну общую черту: они оба возвращают исходные данные в их точной форме после процесса распаковки. Аудиокодеки с потерями используют другие средства для экономии места на диске, такие как обрезка частот, которые не могут быть услышаны человеческим ухом, и сглаживание формы сигнала по частям, чтобы избавиться от некоторых деталей. В конце концов, хотя мы, возможно, и не сможем услышать разницу между MP3 и CD-треком, в первом определенно ощущается дефицит информации.

Шифрование данных

Алгоритмы также используются при защите данных или линий связи. Вместо того, чтобы хранить данные так, чтобы они занимали меньше места на диске, они хранятся таким образом, что другие программы не могут их обнаружить. Если кто-то украдет ваш жесткий диск и начнет его сканировать, он сможет получить данные, даже когда вы удалите файлы, потому что сами данные все еще на месте, даже если место пересылки на него исчезло. Когда данные зашифрованы, все, что хранится, выглядит не так, как есть. Обычно это выглядит случайным, как будто фрагментация накапливалась с течением времени. Вы также можете сохранить данные и сделать так, чтобы они отображались как файл другого типа. Файлы изображений и музыкальные файлы подходят для этого, так как они могут быть довольно большими, например, не вызывая подозрений. Все это делается с помощью математических алгоритмов, которые берут входные данные и преобразуют их в другой, очень специфический тип выходных данных. Для получения дополнительной информации о том, как работает шифрование, ознакомьтесь с пояснениями HTG: что такое шифрование и как оно работает?


Алгоритмы — это математические инструменты, которые можно использовать в компьютерных науках. Они работают, чтобы предоставить путь между начальной и конечной точками согласованным образом и предоставить инструкции по его следованию. Знаете больше, чем мы выделили? Делитесь своими объяснениями в комментариях!