Какие виды алгоритмов вы знаете
Перейти к содержимому

Какие виды алгоритмов вы знаете

  • автор:

Алгоритмы: просто о сложном

Самое простое определение алгоритма — это совокупность действий, которые приводят к заданному результату за конечное число шагов. Рецепт блюда, инструкция по сборке мебели, компьютерная программа — все это примеры алгоритмов. Далее в этой статье мы поговорим о компьютерных алгоритмах, рассмотрев самые известные их примеры.

Освітній курс від robotdreams: Аналітик даних.
Перетворюйте дані на рішення.

Алгоритмы

1. Виды алгоритмов

Различают три вида алгоритмов:

  1. Линейный — действия выполняются последовательно и однократно. Например, рецепт приготовления пельменей: поставить воду, добавить соль, довести до кипения, опустить пельмени, варить до готовности.
  2. Разветвляющийся — есть условие, в зависимости от соблюдения или несоблюдения которого выполняются разные действия. Например, если идет дождь, взять зонт, если светит солнце, взять очки.

Ефективний курс від robotdreams: Blockchain-розробник.
Революційні рішення в технологіях.

2. Способы записи алгоритмов

На практике чаще всего встречаются четыре вида записи алгоритмов: словесный, графический, с помощью псевдокода и программный.

При словесной записи используется естественный язык. Например, рецепт блюда или инструкция по сборке. Словесно можно описать и работу компьютерной программы. Но у этого подхода есть ряд серьезных минусов. В первую очередь — многословность и отсутствие строгой формализации, которое ведет к неоднозначности толкования.

Графическое описание обычно представляется в виде блок-схемы. Она состоит из блоков, линий и стрелок. Каждому действию соответствует геометрическая фигура. Например, начало и конец — это овал, ввод/вывод — параллелограмм, выполнение действия — прямоугольник, принятие решения — ромб. Более продвинутые варианты этого подхода реализованы в UML-диаграммах, подробнее можно посмотреть эту нашу подборку: топ-19 сервисов для создания блок-схем и UML.

Еще один распространенный способ записи — псевдокод. Это промежуточное звено между естественным языком и формальным. В нем используются математические символы, конструкции языков программирования, но при этом сохраняется простота восприятия.

Пример псевдокода:
алг Сумма квадратов (арг цел n, рез цел S) дано | n > 0 надо | S = 1*1 + 2*2 + 3*3 + . + n*n нач цел i ввод n; S:=0 нц для i от 1 до n S:=S+i*i кц вывод "S 3">3. Виды сортировок 

Распространенная задача на знание алгоритмов — сортировка элементов списка. Выполнить ее можно разными способами. Все эти способы отличаются скоростью выполнения и эффективностью. Рассмотрим несколько основных методов сортировки. Задача — отсортировать значения в списке по возрастанию.

3.1. Сортировка слиянием

Суть алгоритма — разбить массив на две части, затем каждую часть разбить еще на две части и так далее, пока не останутся отдельные элементы.

После разбиения соседние значения становятся парами. Алгоритм объединяет и сортирует пары между собой, пока не получится новый, отсортированный список.

Освітній курс від laba: PR-комунікації.
Побудуйте успішний образ вашого бренду.
Отримати інформацію про курс
Пример реализации:
def merge(left_list, right_list): sorted_list = [] left_list_index = right_list_index = 0 # Длина списков часто используется, поэтому создадим переменные для удобства left_list_length, right_list_length = len(left_list), len(right_list) for _ in range(left_list_length + right_list_length): if left_list_index < left_list_length and right_list_index < right_list_length: # Сравниваем первые элементы в начале каждого списка if left_list[left_list_index] 

Особенность сортировки слиянием в том, что в результате вы фактически получаете новый список, а не просто сортируете существующий. Поэтому для реализации этого алгоритма требуется больше памяти. Это может стать критичным при очень большом размере списка.

Сложность алгоритма — O(n log n) .

3.2. Сортировка вставками

Алгоритм разделяет список на две части. В первой части данные отсортированы, во второй — нет. Затем алгоритм перебирает вторую часть и переносит каждый элемент в подходящую позицию в первой части.

def insertion_sort(nums): # Сортировку начинаем со второго элемента, так как считается, что первый элемент уже отсортирован for i in range(1, len(nums)): item_to_insert = nums[i] # Сохраняем ссылку на индекс предыдущего элемента j = i - 1 # Элементы отсортированного сегмента перемещаем вперед, если они больше элемента для вставки while j >= 0 and nums[j] > item_to_insert: nums[j + 1] = nums[j] j -= 1 # Вставляем элемент nums[j + 1] = item_to_insert # Проверяем, что оно работает random_list_of_nums = [9, 1, 15, 28, 6] insertion_sort(random_list_of_nums) print(random_list_of_nums)

Сложность алгоритма — O(n²) .

Свойства алгоритмов

Статья расскажет о происхождении термина «Алгоритм» и о том, какими свойствами он обладает.

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

История возникновения термина

Сегодня это понятие является фундаментальным и в математике, и в информатике. Однако сам термин возник задолго до появления компьютеров и прочих электронных средств вычислительной техники. Впервые об алгоритме заговорили в средние века — именно тогда европейские ученые ознакомились с методами вычисления арифметических действий, производимых в десятичной системе счисления азиатским математиком по имени Мухаммед ибн Муса аль-Хорезми (от имени этого математика и сформировался термин Algorithm). Сочинение аль-Хорезми перевели, а в последующие столетия появилось много трудов, посвященных вопросу обучения искусству счёта посредством цифр. Можно вспомнить описание алгоритма в европейской науке в те годы:

Screenshot_1-1801-2aac07.png

Также значение слова «алгоритм» сегодня нередко связывают со значениями таких слов, как «рецепт», «метод», «процесс», «инструкция».

Исполнитель и программа

Судя по историческим справкам, изначально речь шла о способе выполнения арифметических действий над десятичными числами. Прошли годы. Понятие стали применять при обозначении любой последовательности действий, которая приводит к получению требуемого результата. Причем алгоритмы существуют не сами по себе — они предназначаются для конкретного исполнителя. Кто может выступать таким исполнителем: — человек; — роботизированное/автоматизированное устройство, механизм; — компьютер; — язык программирования и т. д.

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

Главные характеристики

Выделяют следующие свойства алгоритма: массовость, дискретность, результативность, определенность, понятность, формальность, завершаемость. Будет не лишним рассмотреть их более подробно, дав каждому свойству алгоритма пояснение: 1. Массовость (универсальность). Благодаря этому свойству, алгоритм можно успешно применять к различным наборам исходных данных. Пусть существует запись некой абстрактной последовательности, выраженная формулой. Подставляя в эту формулу значения (каждый раз новые), пользователь будет получать верные решения в соответствии с определенным алгоритмом действий. 2. Дискретность (разрывность). Это свойство характеризует структуру. Каждая алгоритмическая последовательность действий делится на этапы (шаги), а процесс решения задачи — это последовательное исполнение простых шагов. Также дискретность обозначает, что для выполнения каждого этапа потребуется конечный временной отрезок (исходные данные преобразуются во времени в результат дискретно). 3. Определенность (точность, детерминированность) — это свойство указывает алгоритму, что каждый его шаг должен быть строго определенным, то есть различные толкования должны быть исключены. Строго определяется и порядок выполнения шагов. В результате каждый шаг определяется состоянием системы однозначно, когда четко понятно, какая команда станет выполняться на следующем шаге. Как итог — при любом исполнителе для одних и тех же исходных данных при выполнении одной и той же цепочки команд будет выдаваться одинаковый результат. Да, существуют вероятностные алгоритмы — в них на последующий шаг влияют как текущее состояние системы, так и генерируемое случайное число. Но при включении способа генерации рандомных чисел в перечень «исходных данных», вероятностный алгоритм превращается в подвид обычного. 4. Понятность. Должны быть включены лишь те команды, которые доступны и понятны исполнителю, то есть входят в систему его команд. 5. Формальность. Любой исполнитель действует формально и лишь выполняет инструкции, не вникая в смысл. Он не отвлекается от поставленной задачи и не рассуждает, зачем и почему они нужны. Рассуждениями занимается разработчик алгоритма, задача же исполнителя — просто исполнить предложенные команды и получить результат. «Приказы не обсуждают, а выполняют». 6. Завершаемость (конечность). Если исходные данные заданы корректно, алгоритм завершит свое действие и выдаст результат за конечное число шагов. 7. Результативность. Согласно этому свойству, любой алгоритм должен завершаться конкретными результатами.

Основные виды алгоритмов

В информатике и программировании выделяют много видов алгоритмов. Основные из них: — линейные (команды выполняются последовательно, одна за одной); — разветвляющиеся (есть условие, при проверке которого возможно разветвление на несколько параллельных ветвей); — циклические (предусматривается многократное повторение одних и тех же действий).

Алгоритм. Виды алгоритмов

Исполнитель чертёжник. Строим прямоугольник

При перемещении опущенного
пера за ним остается след —
отрезок от предыдущего
положения пера до нового.
При перемещении поднятого
пера никакого следа на
плоскости не остается.
В начальном положении перо
Чертежника всегда поднято и
находится в точке (0,0) .

9. СКИ Чертежника

1.опустить перо
2.поднять перо
3.сместиться в точку (X, Y)
4.сместиться на вектор (dX, dY)
5.установить цвет («цвет»)
6.надпись (ширина, текст)

10.

Команду
«сместиться в
точку» называют
командой
абсолютного
смещения.
В
А
С
Например:
Сместиться в точку (5, 5)
К
Е

11.

Координаты, указанные в
команде
«сместиться на
вектор», отсчитываются
не от начала координат, а
относительно текущего
положения пера Чертежника.
А
Поэтому команду сдвинь на
вектор называют командой
относительного смещения.
Например:
Сместиться на вектор (3, 2)
О

12. Чертежник может исполнять только правильно записанные команды.

При использовании исполнителя
Чертежник программа должна
начинаться со строчки
“использовать Чертежник”.

Типы алгоритмов: линейные, разветвляющиеся, циклические

I.Организационный момент.
1. Приветствие ребят. Здравствуйте, ребята! Садитесь! Какое у вас настроение? Если хорошее - улыбнитесь всем! Если нет - посмотрите друг на друга и улыбнитесь! Начнем урок! Я представила вам алгоритм в словесной форме. Посмотрите на доску. Этот же алгоритм изображен графически. Сегодня на уроке мы научимся с вами представлять типы алгоритмов с помощью блок – схем (страница флипчарта 1).
Эпиграфом к нашему уроку будут слова знаменитого французского ученого Гюстава Гийома “Дорогу осилит идущий, а информатику мыслящий”.
2. Объявление целей урока.
II. Актуализация знаний учащихся

Но прежде чем приступим к изучению нового материала. Мы должны вспомнить, что изучали на прошлом уроке.

1. Проверка домашнего задания.
Проверить кроссворды, решенные учениками дома.

Ответы:
1. 1. графический
2. конечность
3. информация
4. исполнитель
5. алгоритм
6. программный
7. план
8. компьютер
9. инструмент
10. рисунок
11. шаг

Учитель объясняет алгоритм выполнения упражнений 1-3. Дети на местах работают с ресурсом.
III. Изучение нового материала.

Типы алгоритмов: линейные, разветвляющиеся, циклические - 1

1. Теоретическая часть.
Алгоритмы бывают трех типов: (страница флипчарта 7)
-линейный
-разветвляющийся
-циклический
Линейные алгоритмы – алгоритм, в котором команды выполняются в порядке их записи, т. е. последовательно друг за другом. (страница флипчарта 8)

Пример 1 (страница флипчарта 9). Сказка «Курочка Ряба»

Алгоритма представлен в виде ссылки на презентацию

Типы алгоритмов: линейные, разветвляющиеся, циклические - 2

Разветвляющийся алгоритм - алгоритм, в котором в зависимости от выполнения некоторого условия совершается либо одна, либо другая последовательность действий (страница флипчарта 10)

В словесном описании разветвляющегося алгоритма используются слова "если", "то", "иначе".

Полная форма: «если выполняется условие, то …, иначе …» . Действия предусмотрены и при выполнении условия, и при его невыполнении. (страница флипчарта 11)

Неполная форма: «если выполняется условие, то …». Действия предусмотрены только при выполнении условия. При невыполнении условия.

Пример 2. (страница флипчарта 12-13)

Если пошёл дождь, то откройте зонт, иначе – зонт положите в сумку (полная форма разветвляющегося алгоритма);

Типы алгоритмов: линейные, разветвляющиеся, циклические - 3

Если пошёл дождь, то откройте зонт (неполная форма разветвляющегося алгоритма).и какие действия не выполняются.

Пример 3. (страница флипчарта 12-13)

“Купить мороженое” .
Типы алгоритмов: линейные, разветвляющиеся, циклические - 4
Типы алгоритмов: линейные, разветвляющиеся, циклические - 5
Циклический алгоритм- алгоритм, в котором действия повторяются конечное число раз. (страница флипчарта 14)
Типы алгоритмов: линейные, разветвляющиеся, циклические - 6
Пример 4. (страница флипчарта 15.) Алгоритм «Наполнение».
Начало
1. Пока ведро неполное, повторять:
2. Налить в ведро кружку воды.
Конец
Типы алгоритмов: линейные, разветвляющиеся, циклические - 7
Проверить, перетащив рисунок на свободное место.

Тренинг-задача № 3 (страница флипчарта 20).
Мальчик учит наизусть четверостишие, заданное по литературе. Он один раз прочитывает четверостишие и пытается воспроизвести его по памяти. Так он будет делать до тех пор, пока не расскажет четверостишие без единой ошибки. Составить действия мальчика в виде блок-схемы.
Типы алгоритмов: линейные, разветвляющиеся, циклические - 8Типы алгоритмов: линейные, разветвляющиеся, циклические - 9
Проверить, перетащив рисунок на свободное место.

3. Физкультминутка (страница флипчарта 21).

Мы руками поведем -
Будто в море мы плывем.
Раз, два, три, четыре -
Вот мы к берегу приплыли,
Чтобы косточки размять,
Начнем наклоны выполнять -
Вправо, влево, вправо, влево.
Не забудем и присесть -
Раз, два, три, четыре,
На счет пять - за парты сесть.
Мы выполнили алгоритм, и достигли определенной цели: отдохнули, расслабились.

4. Выполнение практической работы. Работа по разноуровневым карточкам. (страница флипчарта 22).
И возвращаемся к словам французского ученого Гюстава Гийома “Дорогу осилит идущий, а информатику мыслящий”.
Типы алгоритмов: линейные, разветвляющиеся, циклические - 10Укажите стрелочками, к какому типу алгоритма относятся данные изображения. Дайте названия алгоритмам (страница флипчарта 23).
Типы алгоритмов: линейные, разветвляющиеся, циклические - 11Заполнить таблицу двумя примерами на каждый тип алгоритма (страница флипчарта 24).
Типы алгоритмов: линейные, разветвляющиеся, циклические - 12Составьте алгоритм в программе Paint, используя команды перемещения и копирования.
Вариант 1.(страница флипчарта 25).

Вариант 2.(страница флипчарта 26).

Эпизод из сказки «Гуси-лебеди».

IV. Домашнее задание (страница флипчарта 27).

1. Выучить конспект.
2. Нарисовать на А4 формате пример циклического алгоритма и блок – схему к сказке «Колобок».

V. Итог урока. (страница флипчарта 28).

На этом урок заканчивается. Наша цель достигнута. Мы повторили основные понятия алгоритма, познакомились типами алгоритмов, успешно применили знания на практике, вспомнили сказки, пословицы.
VI. Рефлексия. (страница флипчарта 29).
–Что вам сегодня понравилось на уроке?
– Что вы запомнили?
– Что было интересного?
VII. Оценивание.
Сегодня у вас будут вместо отметок – смайлики, которыми я оценю ваши успехи на уроке.

Технологическая карта №1

Тема урока: Типы алгоритмов: линейные, разветвляющиеся, циклические.
Цели урока: Научимся составлять классификацию типов алгоритмов;
Научимся представлять алгоритмы в виде блок-схем.

1. Проверка домашнего задания.
Выполнение тестов https://bilimland.kz/ru/courses/informatika-ru/6-klass/lesson/ponyatie-algoritma-i-ispolnitelya
2. Теоретическая часть
Условные обозначения для блок-схем:

Типы алгоритмов: линейные, разветвляющиеся, циклические - 13- начало или конец программы
Типы алгоритмов: линейные, разветвляющиеся, циклические - 14- ввод данных
Типы алгоритмов: линейные, разветвляющиеся, циклические - 15- действия
Типы алгоритмов: линейные, разветвляющиеся, циклические - 16-условие решения программы
Типы алгоритмов: линейные, разветвляющиеся, циклические - 17-вывод данных или текста
Типы алгоритмов: линейные, разветвляющиеся, циклические - 18-цикл с параметром
Типы алгоритмов: линейные, разветвляющиеся, циклические - 19-подпрограмма
Типы алгоритмов: линейные, разветвляющиеся, циклические - 20- стрелки – направление процесса
Алгоритмы бывают трех типов: -линейный
-разветвляющийся
-циклический
Линейные алгоритмы – алгоритм, в котором команды выполняются в порядке их записи, т. е. последовательно друг за другом. (страница флипчарта 8)
Типы алгоритмов: линейные, разветвляющиеся, циклические - 21
Пример 1 . Сказка «Курочка Ряба»

Типы алгоритмов: линейные, разветвляющиеся, циклические - 22

Разветвляющийся алгоритм - алгоритм, в котором в зависимости от выполнения некоторого условия совершается либо одна, либо другая последовательность действий.

В словесном описании разветвляющегося алгоритма используются слова "если", "то", "иначе".

Полная форма: «если выполняется условие, то …, иначе …» . Действия предусмотрены и при выполнении условия, и при его невыполнении.

Неполная форма: «если выполняется условие, то …». Действия предусмотрены только при выполнении условия. При невыполнении условия.

Если пошёл дождь, то откройте зонт, иначе – зонт положите в сумку (полная форма разветвляющегося алгоритма);

Типы алгоритмов: линейные, разветвляющиеся, циклические - 23

Если пошёл дождь, то откройте зонт (неполная форма разветвляющегося алгоритма).

Пример 3.

“Купить мороженое” .
Типы алгоритмов: линейные, разветвляющиеся, циклические - 24
Циклический алгоритм- алгоритм, в котором действия повторяются конечное число раз.
Типы алгоритмов: линейные, разветвляющиеся, циклические - 25
Пример 4. Алгоритм «Наполнение».
Начало
1. Пока ведро неполное, повторять:
2. Налить в ведро кружку воды.
Конец
Типы алгоритмов: линейные, разветвляющиеся, циклические - 26
3. Решение задач-тренингов (коллективная работа).

Тренинг-задача № 1.
Составить алгоритм «Почисти ковер».

1.Назови тип алгоритма.
2. Заполни алгоритм.

Записать с помощью блок-схемы пословицу «Болен – лечись, а здоров – берегись».
Типы алгоритмов: линейные, разветвляющиеся, циклические - 27
Тренинг-задача № 3.
Мальчик учит наизусть четверостишие, заданное по литературе. Он один раз прочитывает четверостишие и пытается воспроизвести его по памяти. Так он будет делать до тех пор, пока не расскажет четверостишие без единой ошибки. Составить действия мальчика в виде блок-схемы.
Типы алгоритмов: линейные, разветвляющиеся, циклические - 28
4. Физкультминутка.
Мы руками поведем -
Будто в море мы плывем.
Раз, два, три, четыре -
Вот мы к берегу приплыли,
Чтобы косточки размять,
Начнем наклоны выполнять -
Вправо, влево, вправо, влево.
Не забудем и присесть -
Раз, два, три, четыре,
На счет пять - за парты сесть.

5. Выполнение практической работы. Работа по разноуровневым карточкам.

Типы алгоритмов: линейные, разветвляющиеся, циклические - 29

1. Выполните задание № 1,2,3 по ресурсу www.bilimland.kz

Типы алгоритмов: линейные, разветвляющиеся, циклические - 30

Заполнить таблицу двумя примерами на каждый тип алгоритма.

Типы алгоритмов: линейные, разветвляющиеся, циклические - 31

Составьте алгоритм в программе Paint, используя команды перемещения и копирования.
Вариант 1. «Посадка саженца».

Вариант 2. Эпизод из сказки «Гуси-лебеди».

6. Домашнее задание.
1. Выучить конспект.
2. Нарисовать на А4 формате пример циклического алгоритма и блок – схему к сказке «Колобок».

7. Вопросы.

Примеры линейного алгоритма Примеры разветвляющегося алгоритма Примеры циклического алгоритма

1. Какие типы алгоритмов различают?
2. Какие типы алгоритмов изображены на рисунках.

Разноуровневые карточки
Типы алгоритмов: линейные, разветвляющиеся, циклические - 321. Выполните задание № 1,2,3 по ресурсу www.bilimland.kz
Типы алгоритмов: линейные, разветвляющиеся, циклические - 33Заполнить таблицу двумя примерами на каждый тип алгоритма.
Типы алгоритмов: линейные, разветвляющиеся, циклические - 34Составьте алгоритм в программе Paint, используя команды перемещения и копирования.
Вариант 1.(страница флипчарта 25).
«Посадка саженца».
Вариант 2.(страница флипчарта 26).
Эпизод из сказки «Гуси-лебеди».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *