В информатике и профессиональном программировании всегда много времени уделяют изучению алгоритмов. Мы хотим внести свою лепту в изучение алгоритмов и рассказать, какие бывают алгоритмы в информатике и программировании. Также мы приведем известнейшие алгоритмы информатики и математики, без которых трудно представить современный IT-мир.
Алгоритм в широком смысле — это последовательные действия, которые приводят к достижению заданного результата. Каждый алгоритм должен детально описывать действия пользователя или программы, чтобы достичь решения поставленной задачи. В информатике, математике и программировании много задач, которые решаются при помощи алгоритмов.
Какие бывают алгоритмы в информатике, математике и программировании
Каждому алгоритму могут быть свойственны:
определенность — возможность получить определенный результат при наличии определенных исходных данных;
результативность — гарантия, что при наличии определенных исходных данных будет найдено ожидаемое решение;
массовость — гарантия, что описанный однажды алгоритм можно постоянно применять для решения задач определенного типа;
дискретность — свойство алгоритма «разделяться» на несколько отдельных этапов с собственной важностью и назначением.
Основные виды алгоритмов:
Линейный алгоритм. В эту категорию входят самые простые алгоритмы, которые включают в себя строго последовательные действия. Например, как в жизни человека при сборах на работу: проснуться от будильника, сходить в туалет и умыться, почистить зубы, сделать зарядку, позавтракать, одеться, обуться, выйти из дома. Конец алгоритма. У разных людей последовательность действий может меняться, но линейность все равно будет соблюдаться: сначала выполняется одно действие, а потом другое.
Разветвленный алгоритм. В эту категорию входят алгоритмы, в которых присутствуют различные условия. То есть при одном условии алгоритм выполняется по одному сценарию, при другом условии — по другому сценарию. Продолжим нашу историю. Человек вышел из дома и пришел на автобусную остановку. Если успел на автобус, значит, поедет на работу на автобусе, если опоздал — на метро или такси, но на работе он должен быть вовремя.
Циклический алгоритм. Эта категория алгоритмов включает в себя сложные алгоритмы, которые работают до определенного условия. Пока оно не будет найдено, в таких алгоритмах повторяется набор действий. Продолжим нашу историю. Один рабочий день — это цикл. Провести выходные с семьей — это условие циклического алгоритма. Человек будет постоянно ходить на работу, пока не выполнится условие «выходные», — тогда он выйдет из «рабочего цикла».
Бывают и смешанные алгоритмы, когда все три вида алгоритмов входят в состав одного. В смешанных алгоритмах включение или выключение более простых действий регулируется определенными условиями. Вернемся к нашему примеру. У человека есть цель — «заработать миллион». Это будет большим смешанным алгоритмом, куда входят другие более простые алгоритмы:
линейный — «сборы на работу»;
разветвленный — «поездка на работу»;
цикличный алгоритм — «рабочая неделя».
Все эти алгоритмы будут крутиться в смешанном цикле, пока человек не «заработает миллион».
Это общее описание свойственно алгоритмам из информатики, математики и программирования. К примеру, «смешанные» алгоритмы часто используются при программировании сложных программ. А без простых видов алгоритмов вообще не обходится ни одна программа.
Известнейшие алгоритмы в истории информатики и математики
Когда мы выходим в сеть, тогда вообще не замечаем, что нас окружают уникальные алгоритмы, которые сделали нашу жизнь проще и удобнее. О некоторых алгоритмах мы сейчас поведаем.
Поиск Google. Это сложный алгоритм поиска, основанный на искусственном интеллекте. Описывать его — писать отдельную статью. На сегодняшний день поисковые алгоритмы Гугла считаются самыми эффектным, а на их долю приходится около 80% всех поисковых запросов в мире.
Новостная лента в Facebook. Это уникальный алгоритм для соцсетей, который обрабатывает несколько десятков параметров, прежде чем показать пост пользователю. Например: статус автора, число комментариев и нажатий «Поделиться», скорость реакции пользователей на пост, интересы пользователя и др.
Алгоритмы рекомендаций и рекламы. Это схожие алгоритмы. Алгоритм рекомендаций работает внутри интернет-магазина, а рекламные алгоритмы работают при каждой активации браузера и «ходят» за пользователем постоянно. Благодаря рекламным алгоритмам работает контекстная реклама в Гугле и Яндексе. Эти алгоритмы анализируют сотни показателей, прежде чем показать рекламу: начиная от поисковых запросов и моментов, на которых пользователь задержал внимание, и заканчивая анализом содержания почтовых писем, чтобы выяснить, чем интересуется пользователь. Сюда же входит: анализ фотографий, соцсетей, просмотренных фильмов, взаимодействие с веб-ресурсами др.
Алгоритм CRUSH или Criminal Reduction Utilising History. Алгоритм на основе искусственного интеллекта и big data, который позволяет прогнозировать и предотвращать преступления. Пока такими программами пользуются полицейские подразделения США и Канады.
Алгоритмы преобразования Фурье. Эти алгоритмы лежат в основе всего IT: интернета, Wi-Fi, телефонов, компьютеров, маршрутизаторов, спутников. Простыми словами, при помощи них различные физические сигналы преобразуются в цифровой вид. Например, звук, который мы слышим из компьютера или телефона, получается при помощи алгоритмов Фурье.
Алгоритм Дейкстры. Этот алгоритм служит для поиска кратчайшего пути в графе. Но интересен он тем, что лежит в основе современного интернета.
Алгоритмы сжатия. Невозможно определить, какой из алгоритмов сжатия лучший, потому что всеми ими пользуются люди. К таким алгоритмам относятся: ZIP, MP3, JPEG и др. Эти алгоритмы используются для «уменьшения» объема информации разного вида, поэтому очень распространены.
Алгоритмы генерации случайных чисел. Генераторов абсолютно случайных чисел пока не существует, но существуют генераторы псевдослучайных чисел, которые активно используются людьми. Такие генераторы применяются: в приложениях, криптографии, хешировании, видеоиграх, в разработке, в лотереях и др.
Заключение
Теперь вы знаете, какие бывают алгоритмы в информатике. Информатика, математика и программирование — взаимосвязанные науки, у которых даже алгоритмы общие. Отсюда и появилось мнение, что все программисты — «математики». Но это не совсем так. Программирование — широкое поле для деятельности. Поэтому в ряде направлений без математики и информатики действительно нечего делать. А в других направлениях, таких как веб-дизайн, например, без этих знаний можно обойтись. Однако это не повод не изучать алгоритмы.

Другое