Отказ от ответственности: я не учитель математики или информатики, поэтому не все термины, которые я использую, являются техническими. Это потому, что я пытаюсь объяснить все на простом английском языке, потому что людям не очень нравится математика. Это, как говорится, есть какая-то математика, и это неизбежно. Математические вундеркинды, не стесняйтесь исправлять или лучше объяснять в комментариях, но, пожалуйста, сохраните это просто для математически недостойных нас.
Изображение Ян Руотсала
Что такое алгоритм?
Слово «алгоритм» имеет этимологию, аналогичную «алгебре», за исключением того, что это относится к самому арабскому математику, аль-Хорезми (просто интересный лакомый кусочек). Алгоритм для не-программистов среди нас представляет собой набор инструкций, которые принимают входные данные A и предоставляют вывод B, который каким-то образом изменяет данные. Алгоритмы имеют широкий спектр приложений. В математике они могут помочь рассчитать функции из точек в наборе данных, среди гораздо более продвинутых. Помимо их использования в программировании, они играют важную роль в таких вещах, как сжатие файлов и шифрование данных.
Основной набор инструкций
Скажем, ваш друг встречает вас в продуктовом магазине, и вы направляете его к себе. Вы говорите такие вещи, как «заходите через правые двери», «пройдите рыбную секцию слева», и «если вы увидите молочную ферму, вы передали меня». Алгоритмы работают так. Мы можем использовать блок-схему, чтобы проиллюстрировать инструкции, основанные на критериях, которые мы знаем заранее или узнаем во время процесса.
Начиная с 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-треком, определенно существует дефицит информации в первом.
Шифрование данных
Алгоритмы - это математические инструменты, которые обеспечивают множество применений в информатике. Они работают, чтобы обеспечить путь между начальной точкой и конечной точкой согласованным образом и предоставить инструкции для ее выполнения. Знаете больше, чем мы выделили? Поделитесь своими объяснениями в комментариях!