Понятие алгоритма

Вы не раз слышали и употребляли в речи слово «алгоритм». Что же это такое? Алгоритм — определённая последовательность команд для исполнителя.
Исполнителем может быть, например:
  • компьютер, на котором вы запускаете программу;
  • робот, решающий задачу;
  • человек, совершающий цепочку действий.
Компьютерная программа — это запись алгоритма на формальном языке.
Вы часто сталкиваетесь с алгоритмами?
Георгий, Алла, Рита и Тимофей ужинают в ресторане. Тимофей забыл дома кошелёк. Гоша предложил за него заплатить. После ужина Георгий хочет понять, сколько нужно отдать за себя и за друга. Можно посмотреть на чек и сложить стоимость заказов Гоши и Тимофея. Но есть другие решения. Например, вычесть из общего счёта сумму заказов Аллы и Риты. Алгоритм отличается, хотя результат тот же. А теперь представьте, что ребята пришли в ресторан компанией из 30 человек. Тут уж вряд ли стоит применять второй алгоритм.
image
Разная последовательность действий часто приводит к одинаковому результату.
image
Нужно выбирать оптимальный по важным для вас критериям вариант.
Когда вы добираетесь на работу, имеют значение время, деньги, объём затраченных физических усилий. А в программировании нужно учитывать время работы алгоритма, объём используемой памяти, потраченные на реализацию программы время и деньги или другую существенную для вас метрику. При выборе решения нужно учитывать имеющиеся ресурсы.
Важно принимать во внимание, что параметры задачи могут измениться. Например, вы живёте рядом с офисом и всегда ходите на работу пешком. При переезде в другой район такой вариант действий, возможно, будет далеко не оптимальным.
Аналогично в программировании — решение может быть хорошим для одних входных данных, но при изменении параметров перестанет быть целесообразным.
Реализация алгоритмов, требуемых для решения большинства практических задач, доступна на многих языках программирования. Но чтобы выбрать оптимальное, важно понимать плюсы и минусы готовых решений. Для того, чтобы разбираться, как они устроены внутри, нужны знания алгоритмов и структур данных.
В этом курсе вы узнаете основные алгоритмы и структуры данных, применяемые в программировании. Научитесь оценивать эффективность разных вариантов решения, сравнивать их и выбирать оптимальный.
Рите нужно написать программу для определения оптимального пути доставки груза от склада до магазина. На что ей следует обратить внимание при выборе алгоритма?
На IT-конференции к Гоше и Тимофею подошёл студент факультета информатики Саша и спросил, как стать хорошим программистом. Гоша сказал, что для этого нужно хорошо знать какой-нибудь язык программирования. Тимофей посоветовал хотя бы на базовом уровне изучить алгоритмы и структуры данных. Гоша возразил, что большинство алгоритмов давно реализовано, а программисты в основном занимаются другими задачами. Тимофей хочет убедить студента, что программисту важно знать алгоритмы. Какие доводы он может привести?