Лекция 9. Алгоритмы и его свойства.
|
Основы алгоритмов — Умскул Учебник
На этой странице вы узнаете- Чем хорош процесс приготовления супчика?
- Какие есть виды алгоритмов?
- В чем отличие Робота от Чертежника?
Что вы сделаете в первую очередь: выйдете из квартиры или проверите, не забыли ли вы ключи? А станете ли вы кидать макарошки в воду до того, как она закипит?
Мы сами не замечаем, но вся наша жизнь — это набор определенных алгоритмов. Пора хорошенько в них разобраться.
Понятие алгоритмаАлгоритм — это строгий набор определенных команд, предназначенный для выполнения каких-либо действий с целью достичь определенного результата.
В информатике алгоритм обладает некоторыми обязательными свойствами:
- Алгоритм – это структура, состоящая из набора законченных действий, расположенных в строгом порядке.
- Каждый шаг алгоритма строго определен и должен пониматься однозначно.
- У алгоритма должна быть цель – в конце его выполнения должен быть конкретный результат.
Хороший пример такого алгоритма – процесс приготовления супчика.
Чем хорош процесс приготовления супчика? Процесс приготовления супчика хорошо удовлетворяет всем вышеописанным требованиям: |
Мы рассмотрели пример линейного алгоритма, когда каждая команда выполняется сразу после предыдущей. Но так можно описать далеко не любой процесс, поэтому нам на помощь приходят следующие понятия:
Условный алгоритм или алгоритм с ветвлением добавляет в структуру какое-то условие, в зависимости от которого будет выполнена какая-то конкретная команда или набор команд.
Теперь у нас появился вариант поперчить суп, но эта команда выполнится, только если на условие будет утвердительный ответ. Если условие не выполнится — мы не придем к этой команде, пропустим ее и пойдем дальше по алгоритму.
В том числе в ветке условия «НЕТ» могла бы быть какая-то другая команда, например, «ПОСОЛИТЕ», которая выполнилась бы, только если ответ на условие был соответствующим.
Циклический алгоритм — это команда или набор команд, которые совершаются неоднократно: либо определенное количество раз, либо пока не выполнится какое-то условие.
Тут мы сразу не знаем, сколько фрикаделек мы хотим, поэтому будем крутить по одной и смотреть, хватит ли. Если нет, мы будем возвращаться назад по алгоритму, чтобы вернуться к предыдущему шагу. Когда их будет достаточно – идем дальше.
В том числе вместо данного условия могло бы быть конкретное количество, например, «ФРИКАДЕЛЕК РОВНО 20?». Тогда цикл бы выполнился конкретное количество раз.
Какие есть виды алгоритмов? Подведем итог: |
Более подробно разобраться с пониманием алгоритма нам помогут два классических примера исполнителей алгоритмов – Робот и Чертежник. Рассмотрим их подробнее по отдельности.
Исполнитель «Робот»- Его смысл жизни — передвигаться по полю с квадратными клетками (как шахматная доска) вверх, вниз, вправо или влево соответствующими командами. При этом он должен не разбиться об стены, которые могут быть расположены между клетками.
- Также у него есть условия; «сверху свободно», «снизу свободно», «справа свободно», «слева свободно» и «сверху стена», «снизу стена», «справа стена», «слева стена», которые дают нам «ДА» или «НЕТ» в зависимости от выполнения этого условия.
Например:
Робот находится в ячейке С4. Он может спокойно выполнить команду «вверх», «вниз» или «влево», что сдвинет его на 1 клетку в соответствующем направлении.
При применении команды «вправо» он разобьется об стену, которая стоит как раз справа от него. Этого можно избежать, если выполнить проверку:
ЕСЛИ справа свободно ТО Вправо КОНЕЦ ЕСЛИ
С таким алгоритмом команда «вправо» будет выполнена только в том случае, если справа свободно, иначе не произойдет ничего.
А если нужно отойти к какой-то стене?
Тогда будем использовать цикл, так как шагов у нас будет не 1. Такая запись:
ПОКА слева свободно Влево КОНЕЦ ПОКА
Тогда Робот будет выполнять команду «влево» до тех пор, пока слева способно, то есть мы остановимся только у ближайшей стены, которая возникнет перед нами слева.
Разобравшись с его функциями, заставим Робота что-нибудь сделать.
Например, придумаем такую задачу:
- посадим его в нижний левый угол комнаты неизвестного размера;
- где-то посреди комнаты поставим огромную стену, в которой будет всего одно окошко;
- заставим его пройти в правый верхний угол этой комнаты.
Это лишь пример комнаты. По условию ширина комнаты, высота, положение стены и окошка в нем могут быть абсолютно любыми и заранее неизвестны.
Алгоритм решения я предлагаю следующий:
- движемся вправо, пока не упремся в стену;
- будем двигаться вдоль стены вверх, проверяя, свободен ли путь сверху (чтобы не удариться) и не появилось ли окно справа;
- как только нашли окно (справа стало свободно), двигаемся вправо до стены;
- двигаемся вверх, пока перед нами не появится стена.
По этому алгоритму Робот проделает следующий путь:
А записан бы алгоритм был следующим образом:
ПОКА справа свободно Вправо КОНЕЦ ПОКА ПОКА справа стена И сверху свободно Вверх КОНЕЦ ПОКА ПОКА справа свободно Вправо КОНЕЦ ПОКА ПОКА сверху свободно Вверх КОНЕЦ ПОКА
В чем отличие Робота от Чертежника? Отличие в том, что поле Чертежника – вся координатная плоскость. Он может перемещаться по ней куда угодно с помощью команды «Сместиться на (a, b)», которая сдвинет него на a по оси х и на b по оси у. |
У Чертежника нет никаких стен, а единственная его цель – просто двигаться по полю, следуя алгоритму.
Так, изначально находясь в точке (0, 0), выполнив серию команд
Сместиться на (2, 4) Сместиться на (-6, -3) Сместиться на (2, -3)
Чертежник остановится в точке (-2, -2).
Отрицательные значения означают смещение вниз или налево, в то время как положительные — вверх или вправо.
В том числе Чертежник умеет выполнять и циклический алгоритм. Так, например, запись
ПОВТОРИ 7 раза Сместиться на (2, 3) КОНЕЦ
7 раз подвинет Чертежника по оси х на 2 и по оси у на 3.
Например, выполнив следующий алгоритм и двигаясь из точки (0, 0):
ПОВТОРИ 2 раз Сместиться на (2, 3) КОНЕЦ Сместиться на (-4, -4) ПОВТОРИ 2 раза Сместиться на (-3, 1) Сместиться на (2, 2) КОНЕЦ
Чертежник нарисует следующий рисунок:
Фактчек- Алгоритм — это определенный набор команд, направленный на достижение какой-либо цели.
- У алгоритма есть определенный набор правил, которым он должен соответствовать, чтобы его работа была однозначной и полной.
- Различают линейные алгоритмы, условные алгоритмы и циклические алгоритмы.
- Исполнитель «Робот» умеет сдвигаться на 1 клетку в любом из 4 направлений и проверять, нет ли в этих направлениях рядом с ним стены. Его цель — пройти по полю из квадратных клеток в определенную и не врезаться в стену.
- Исполнитель «Чертежник» может без ограничений передвигаться по координатной плоскости в любом направлении. Его цель — прийти в какую-то конкретную точку из какой-то начальной позиции.
Задание 1.
Алгоритм с ветвлением подразумевает …
- … строго последовательное выполнение команд;
- … наличие команды или набора команд, которые будут выполняться неоднократно;
- … наличие условия, в зависимости от выполнения которого будет выполнена та или иная команда или набор команд.
Задание 2.
Выберите верные утверждения:
- Алгоритму не обязательно иметь конечный результат работы.
- В алгоритме важен порядок операций.
- В алгоритме невозможно многократное выполнение команды.
- При выполнении условия «ДА» в условном алгоритме не будет выполнена команда из линии условия «НЕТ».
Задание 3.
Исполнитель Робот не может:
- Пройти сквозь стену.
- Проверить наличие стены рядом с ним.
- Обойти стену.
- Сделать несколько шагов подряд в определенном направлении.
Задание 4.
Исполнитель Чертежник может:
- Сдвинуться четко вниз.
- Вернуться в исходное положение после нескольких шагов.
- Выполнять циклические алгоритмы.
- Все вышеперечисленное.
Ответы: 1. — 3; 2. — 2, 4; 3. — 1; 4. — 4.
Что такое алгоритм? Как компьютеры узнают, что делать с данными
Мир вычислений полон модных словечек: ИИ, суперкомпьютеры, машинное обучение, облачные вычисления, квантовые вычисления и многое другое. В частности, в вычислениях используется одно слово — алгоритм.
В самом общем смысле алгоритм — это набор инструкций, сообщающих компьютеру, как преобразовать набор фактов о мире в полезную информацию. Факты — это данные, а полезная информация — это знания для людей, инструкции для машин или входные данные для еще одного алгоритма. Существует множество распространенных примеров алгоритмов, от сортировки наборов чисел до поиска маршрутов по картам и вывода информации на экран.
Чтобы прочувствовать концепцию алгоритмов, подумайте об утреннем одевании. Мало кто задумывается об этом. Но как бы вы записали свой процесс или рассказали о своем подходе пятилетнему ребенку? Подробный ответ на эти вопросы дает алгоритм.
Ввод
Есть много переменных, которые следует учитывать при выборе одежды. Крис/Flickr, CC BY-NCДля компьютера ввод — это информация, необходимая для принятия решений.
Когда вы одеваетесь утром, какая информация вам нужна? Прежде всего, вам нужно знать, какая одежда есть у вас в шкафу. Затем вы можете подумать, какая температура, какой прогноз погоды на день, какое сейчас время года и, возможно, какие-то личные предпочтения.
Все это может быть представлено в виде данных, которые по сути представляют собой простые наборы чисел или слов. Например, температура — это число, а прогноз погоды может быть «дождь» или «солнечно».
Преобразование
Далее идет сердцевина алгоритма — вычисление. Вычисления включают арифметику, принятие решений и повторение.
Итак, как это относится к одеванию? Вы принимаете решения, выполняя некоторые математические операции с этими входными величинами. Наденете ли вы куртку, может зависеть от температуры, и какую куртку вы выберете, может зависеть от прогноза погоды. Для компьютера часть нашего алгоритма одевания будет выглядеть так: «если ниже 50 градусов и идет дождь, то наденьте под нее дождевик и рубашку с длинными рукавами».
Подобрав одежду, вам нужно ее надеть. Это ключевая часть нашего алгоритма. Для компьютера повторение может быть выражено как «для каждого предмета одежды наденьте его».
Выход
Последний шаг алгоритма представляет результат. Вечность в одно мгновение / камень через Getty ImagesНаконец, выводится последний шаг алгоритма – выражение ответа. Для компьютера на выходе обычно больше данных, чем на входе. Это позволяет компьютерам объединять алгоритмы сложным образом для создания большего количества алгоритмов. Однако вывод может также включать представление информации, например, вывод слов на экран, создание звуковых сигналов или какую-либо другую форму общения.
Итак, одевшись, вы выходите в мир, готовый к стихиям и взглядам окружающих вас людей. Может быть, вы даже сделаете селфи и разместите его в Instagram, чтобы показать свои вещи.
Машинное обучение
Иногда слишком сложно описать процесс принятия решений. Особая категория алгоритмов, алгоритмы машинного обучения, пытаются «учиться» на основе набора прошлых примеров принятия решений. Машинное обучение является обычным явлением для таких вещей, как рекомендации, прогнозы и поиск информации.
[ Глубокие знания, ежедневно. Подпишитесь на информационный бюллетень The Conversation.]
Для нашего примера с одеванием алгоритм машинного обучения будет эквивалентен тому, что вы помните прошлые решения о том, что надеть, зная, насколько комфортно вы себя чувствуете в каждой вещи и, возможно, какие селфи получились. больше всего лайков и использовать эту информацию, чтобы сделать лучший выбор.
Итак, алгоритм — это процесс, который компьютер использует для преобразования входных данных в выходные данные. Простая концепция, и все же каждая часть технологии, к которой вы прикасаетесь, включает в себя множество алгоритмов. Возможно, в следующий раз, когда вы возьмете телефон, посмотрите голливудский фильм или проверите электронную почту, вы сможете обдумать, какой сложный набор алгоритмов стоит за кулисами.
Что такое алгоритм?
В этом уроке мы узнаем, что такое алгоритмы, на примерах.
В терминах компьютерного программирования алгоритм представляет собой набор четко определенных инструкций для решения конкретной задачи. Он принимает набор входных данных и производит желаемый результат. Например,
Алгоритм сложения двух чисел:
Ввести два числа
Добавление номеров с помощью оператора +
Показать результат
Качества хорошего алгоритма
- Вход и выход должны быть точно определены.
- Каждый шаг алгоритма должен быть четким и однозначным.
- Алгоритмы должны быть наиболее эффективными среди множества различных способов решения проблемы.
- Алгоритм не должен включать компьютерный код. Вместо этого алгоритм должен быть написан таким образом, чтобы его можно было использовать на разных языках программирования.
Примеры алгоритмов
Алгоритм сложения двух чисел
Алгоритм нахождения наибольшего среди трех чисел
Алгоритм нахождения всех корней квадратного уравнения Алгоритм ряда Фибоначчи
Алгоритм 1: Сложение двух введенных пользователем чисел
Шаг 1: Начните Шаг 2: Объявите переменные num1, num2 и sum. Шаг 3: Считайте значения num1 и num2. Шаг 4: Добавьте num1 и num2 и присвойте результат сумме. сумма ← число1+число2 Шаг 5: Показать сумму Шаг 6: Остановитесь
Алгоритм 2: Найдите наибольшее число среди трех чисел
Шаг 1: Начните Шаг 2: Объявите переменные a, b и c. Шаг 3: Считайте переменные a, b и c. Шаг 4: Если а > б Если а > с Отображение а — это наибольшее число. Еще Отображение c — это наибольшее число. Еще Если б > с Отображение b — это наибольшее число. Еще Отображение c — наибольшее число. Шаг 5: Остановитесь
Алгоритм 3: поиск корней квадратного уравнения ax
2 + bx + c = 0Шаг 1: Начните Шаг 2: Объявить переменные a, b, c, D, x1, x2, rp и ip; Шаг 3: вычислить дискриминант D ← b2-4ac Шаг 4: Если D ≥ 0 r1 ← (-b+√D)/2a r2 ← (-b-√D)/2a Отобразите r1 и r2 как корни. Еще Вычислить действительную часть и мнимую часть рп ← -б/2а ip ← √(-D)/2a Отображать rp+j(ip) и rp-j(ip) как корни Шаг 5: Остановитесь
Алгоритм 4: найти факториал числа
Шаг 1: Начните Шаг 2: Объявите переменные n, factorial и i. Шаг 3: Инициализируйте переменные факториал ← 1 я ← 1 Шаг 4: Чтение значения n Шаг 5: Повторяйте шаги, пока i = n 5.1: факториал ← факториал*i 5.2: я ← я+1 Шаг 6: Показать факториал Шаг 7: Остановитесь
Алгоритм 5: Проверка, является ли число простым
Шаг 1: Начните Шаг 2: Объявите переменные n, i, flag. Шаг 3: Инициализируйте переменные флаг ← 1 я ← 2 Шаг 4: Прочитайте от пользователя. Шаг 5: Повторяйте шаги, пока i=(n/2) 5.1 Если остаток от n÷i равен 0 флаг ← 0 Перейти к шагу 6 5.2 я ← я+1 Шаг 6: Если флаг = 0 Показать n не простое число еще Показать n простое число Шаг 7: Остановитесь
Алгоритм 6: Найти ряд Фибоначчи до срока менее 1000
Шаг 1: Начните Шаг 2: Объявите переменные first_term, second_term и temp.