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