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

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

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

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

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

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

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

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

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

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

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

    диаграммы

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

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

    Способ 1

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

    график = (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, х, 1], [-3, х, 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, в первом случае определенно существует дефицит информации..

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

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


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