52
Алгоритмы. Brainware - третий «кит» информатики

Алгоритмы . Brainware - третий «кит» информатики

Embed Size (px)

DESCRIPTION

Алгоритмы . Brainware - третий «кит» информатики. Алгоритмы нужны всем : военным, поварам, врачам, фармацевтам, математикам и, конечно, программистам. Мы живём в мире алгоритмов, современная цивилизация – это цивилизация алгоритмов. Мясников Александр Леонидович. - PowerPoint PPT Presentation

Citation preview

Page 1: Алгоритмы . Brainware  -  третий «кит» информатики

Алгоритмы. Brainware - третий «кит» информатики

Page 2: Алгоритмы . Brainware  -  третий «кит» информатики

Состав информатики. Информатику обычно представляют состоящей из трёх, неразрывно связанных частей (трех «китов»):

Hardware, Software, Brainware

ИНФОРМАТИКА

Page 3: Алгоритмы . Brainware  -  третий «кит» информатики

Алгоритмы нужны всем: военным, поварам, врачам, фармацевтам, математикам и, конечно, программистам. Мы живём в мире алгоритмов, современная цивилизация – это цивилизация алгоритмов.

Page 4: Алгоритмы . Brainware  -  третий «кит» информатики

Мясников Александр Леонидович

Page 5: Алгоритмы . Brainware  -  третий «кит» информатики

•Мясников Александр Леонидович: Невозможно противопоставить свой скудный опыт индустрии доказательной медицины. В мире уже выработан алгоритм лечения больных, который выверен на миллионах пациентов. Нам нужно только согласиться с правильностью предложенных методов. Введение системы стандартов позволит нам сэкономить. Если бы мы приняли систему стандартов, все бы узнали, что лучшее лекарство от гипертонии - это копеечные мочегонные препараты, от инфарктов эффективнее всего защищает аспирин, оптимальный антибиотик при пневмонии - тетрациклин стоимостью 15 рублей, а не импортные препараты по 80 долларов за пузырёк. Система стандартов спасёт пациентов и от болезненных операций.

Page 6: Алгоритмы . Brainware  -  третий «кит» информатики

Мухаммад ибн Муса Хорезми (783 — 850) — таджикско-персидский математик, астроном и географ

Аль-Хорезми

Page 7: Алгоритмы . Brainware  -  третий «кит» информатики

Алгоритм Евклида для отыскания наибольшего общего делителя двух целых положительных чисел a и b:• Рассмотри данные числа a и b, переходим к следующему пункту;• Сравни предложенные числа: a = b; a > b; a < b; переходим к

следующему пункту;• Если a = b, то прекратите вычисления, так как каждое из них даст

искомый результат. Если нет, переходите к следующему пункту;• Если первое число меньше второго, переставь их местами.

Переходите к следующему указанию.• Вычитай второе число из первого. Рассмотри два числа

вычитаемое и остаток. Переходите к пункту второму.

Page 8: Алгоритмы . Brainware  -  третий «кит» информатики

Потребность в алгоритмизации научных вычислений:

Системы мира по Птолемею( 15 вычислений) и Копернику (7вычислений)

Page 9: Алгоритмы . Brainware  -  третий «кит» информатики

Потребность в упрощении системы учета:Механические счетные машины

(«Паскалина», калькулятор Лейбница, арифмометр) – для их работы необходима инструкция!

Page 10: Алгоритмы . Brainware  -  третий «кит» информатики

Дональд Эрвин Кнут (родился в 1938) — американский учёный.

Алгоритм — это конечный набор правил, который определяет последовательность операций для решения конкретного множества задач и обладает пятью важными чертами: конечность, определённость, ввод, вывод, эффективность.

Page 11: Алгоритмы . Brainware  -  третий «кит» информатики

Андрей Андреевич Марков (1903 — 1979) — советский математик

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

Page 12: Алгоритмы . Brainware  -  третий «кит» информатики

Андрей Николаевич Колмогоров (1903 — 1987) — советский математик

Алгоритм — это всякая система вычислений, выполняемых по строго определённым правилам, которая после какого-либо числа шагов заведомо приводит к решению поставленной задачи.

Page 13: Алгоритмы . Brainware  -  третий «кит» информатики

Алгоритмы. Определение

• Алгоритм – это строго определенная последовательность действий для некоторого

исполнителя, приводящая к конкретному результату за конечное число шагов.

• Составление алгоритма - творческий процесс.• Выполнения программы - это не творческий процесс.

• Ранее часто писали «алгорифм».• Ранее вместо слова «порядок» использовали слово

«последовательность».

Page 14: Алгоритмы . Brainware  -  третий «кит» информатики

Исполнители: неформальные и формальные

Page 15: Алгоритмы . Brainware  -  третий «кит» информатики

Иллюстрация понятия алгоритма

Задача

Алгоритм

Входные данные Выходные данные

Вычислитель

Page 16: Алгоритмы . Brainware  -  третий «кит» информатики

Дави>д Ги>льберт (нем. David Hilbert; 23 января 1862 — 14 февраля 1943)

Проблема разрешимости алгоритма по Гилберту:Всегда можно составить алгоритм, который сможет дать однозначный ответ на

любой заданный вопрос ( неразрешимых задач не существует).

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

• В 1900 году на Втором Международном математическом конгрессе Гильберт формулирует знаменитый список 23 нерешённых проблем математики

Page 17: Алгоритмы . Brainware  -  третий «кит» информатики

Процедурный текст

• …Отвори потихоньку калитку• И войди в тихий садик как

тень.• Не забудь потемнее накидку,• Кружева на головку надень…

Page 18: Алгоритмы . Brainware  -  третий «кит» информатики

Декларативный текст

• Фонтану Бахчисарайского дворца• …Фонтан любви, фонтан

живой!• Принес я в дар тебе две розы.• Люблю немолчный говор твой• И поэтические слезы…

Page 19: Алгоритмы . Brainware  -  третий «кит» информатики

Тьюринг: нельзя определить алгоритмически, завершит ли данная

машина Тьюринга свою работу или нет.

лан М тисон Ть ринг (англ. Alan Mathison Turing; 23 А> э́> ю>июня 1912 — 7 июня 1954) — английский математик, логик, криптограф, оказавший существенное влияние на развитие информатики (машина Тьюринга).

Алонзо Чёрч (англ. Alonzo Church; 14 июня 1903, Вашингтон, США — 11 августа 1995, Хадсон, Огайо, США) — выдающийся американский математик и логик, внесший значительный вклад в основы информатики (лямбда –исчисление).

Page 20: Алгоритмы . Brainware  -  третий «кит» информатики

Самый важный алгоритм информатики

• Некоторый алгоритм для нахождения значений функции, заданной в некотором алфавите, существует тогда и только тогда, когда функция исчисляется по Тьюрингу, то есть когда ее можно вычислить на машине Тьюринга.

Page 21: Алгоритмы . Brainware  -  третий «кит» информатики

Машина Тьюринга

Page 22: Алгоритмы . Brainware  -  третий «кит» информатики

Требования к алгоритму

• Дискретность (прерывность, раздельность) – алгоритм состоит из отдельных простых "шагов". Каждый шаг исполняется только после того, как закончилось исполнение предыдущего.• Детерминированность (определенность) – каждая команда

алгоритма должна быть однозначной. Алгоритм должен быть независимым от того, кто и сколько раз будет его повторять. (Всё-таки, кулинарные рецепты плохо отвечают этому требованию)• Результативность (конечность) – алгоритм должен приводить к

результату за конечное число шагов.• Массовость – алгоритм может использоваться многократно при

разных исходных данных.

Page 23: Алгоритмы . Brainware  -  третий «кит» информатики

Форма представления алгоритмов• Алгоритм может быть записан

словами и/или формализован - изображён схематически. • Обычно сначала алгоритм

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

В алгоритме присутствуют следующие структуры:• линейная часть – команды,

выполняемые последовательно друг за другом; • ветвление – участок алгоритма,

содержащий условие, в результате проверки которого происходит переход на одно или на другое продолжение алгоритма; • цикл – участок алгоритма,

предусматривающий повторение одних и тех же операций с новыми исходными данными.

Page 24: Алгоритмы . Brainware  -  третий «кит» информатики

Формы записи алгоритмов

•Словесная, на естественном языке;•Графическая, например, в виде блок-схем;•На алгоритмическом языке (псевдокоде);•На языках программирования.

Page 25: Алгоритмы . Brainware  -  третий «кит» информатики

Запись алгоритма на естественном языке

• Пример: Автомат получает на вход два трехзначных восьмеричных числа. По этим числам строится новое восьмеричное число по следующим правилам:• Вычисляются три восьмеричных числа – сумма старших

разрядов, сумма средних разрядов, сумма младших разрядов заданных чисел.• Полученные три восьмеричных числа записываются друг за

другом в порядке убывания (без разделителей).• Пример. Исходные числа: 271,626. Поразрядные суммы: 10,11,7.

Результат: 11107.• Определите, какое из предложенных чисел может быть

результатом работы автомата: 18123; 16711; 13115?

Page 26: Алгоритмы . Brainware  -  третий «кит» информатики

Запись алгоритма в виде блок-схем

начало и конец алгоритма

Блок выполнения операции, обработки данных, изменения значения

Логический блок (проверка истинности или ложности логического выражения (условия) и выбор следующего блок; ветвление алгоритма с одним входом и несколькими (двумя) выходами, из которых может быть выбран только один

Блок ввода/ вывода данных

• Для графического представления алгоритмов в виде блок-схемы используются стандартные обозначения элементов (ГОСТ 19.701 – 90).

Page 27: Алгоритмы . Brainware  -  третий «кит» информатики

Запись алгоритма на алгоритмическом языке (псевдокоде)

Программа - это алгоритм, записанный на языке программирования.

• Оператор присвоения -(:=).• Примеры: • 1. Х:=2+5 • 2. Х:= Х*2 • 3. Х:=2>5 Задача: Установите такой порядок выполнения операций, чтобы при начальных значениях А=2, В=5, С=-5 результирующим стало значение С=5.• 1) С=С/5; 2) В=А+В; 3) С=В+10; 4) А=А*В.

Page 28: Алгоритмы . Brainware  -  третий «кит» информатики

Оператор перехода

• Команды в программах выполняются последовательно. Имеется несколько операторов, которые изменяют последовательность выполнения команд программы. • Формат записи оператора: GO TO <метка строки>.

Page 29: Алгоритмы . Brainware  -  третий «кит» информатики

Оператор ветвления

• Форматы записи оператора:• IF(ЕСЛИ) <логическое условие>

THEN (ТО)<оператор 1> ELSE (ИНАЧЕ)<оператор 2>• Если логическое условие

истинно, то выполняется первый блок операторов, а если ложно, то второй.• Пример: • IF А>В THEN А=А*2 ELSE В=В*2

Блок-схема оператора ветвления:

Page 30: Алгоритмы . Brainware  -  третий «кит» информатики

Заданы числа a и b. Определить, эти числа одного или разных знаков?

Page 31: Алгоритмы . Brainware  -  третий «кит» информатики

•При начальных значениях А=-1, В=3.Чему будет равно С?• IF А>=В THEN С:=(А – В)*В ELSE С:= (В-А)*А• IF С<0 THEN С:=С*С

Page 32: Алгоритмы . Brainware  -  третий «кит» информатики

Дана болок-схема. Какое значение присваивается переменной Х после

исполнения алгоритма? (5)

ДА

нет ДА

нет

a:= 5 b:= 3 с:= 1

Х< = b

256

Х:= a

Х:= b

Х< = с

Х:= с

Page 33: Алгоритмы . Brainware  -  третий «кит» информатики

Операторы цикла.  

• Операторы цикла организуют повторное выполнение одних и тех же команд несколько раз. • Существуют две

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

• Формат записи оператора цикла с фиксированным числом повторений:

FOR i=N1 TO N2 STEP N3;•<тело цикла> ;•NEXT i

Page 34: Алгоритмы . Brainware  -  третий «кит» информатики

Цикл с переменным числом повторений:Блок-схема цикла ПОКА (цикл с предусловием)

Page 35: Алгоритмы . Brainware  -  третий «кит» информатики

• Цикл с предусловиемДаны положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Не используя операции умножения и деления, найти длину незанятой части отрезка A

Page 36: Алгоритмы . Brainware  -  третий «кит» информатики

Цикл с переменным числом повторений:Формат записи цикла ПОКА НЕ

Page 37: Алгоритмы . Brainware  -  третий «кит» информатики

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

Page 38: Алгоритмы . Brainware  -  третий «кит» информатики

Как вы думаете, к какому виду алгоритмов относится следующий пример? Что он позволит вычислить?

Page 39: Алгоритмы . Brainware  -  третий «кит» информатики

Запись алгоритма на языке программирования

• #!/usr/bin/python3• # -*-coding: utf-8 -*-• import math• A = float(input( 'a: '))• B = float(input( 'b: '))• C = float(input( 'c: '))• D = B*B - 4.0*A*C• X1 = (-B + math.sqrt(D))/(2.0*A)• X2 = (-B - math.sqrt(D))/(2.0*A)• print (X1,X2)• print ('END')

Page 40: Алгоритмы . Brainware  -  третий «кит» информатики

Классификация алгоритмов• детерминированные (жесткие): задаются действия,

обеспечивающие однозначный результат (например, работа двигателя); • гибкие:

• вероятностные (стохастические): используют способы, приводящие к вероятному достижению результата (например, метод Монте-Карло)• эвристические: достижение результата однозначно не предопределено

Page 41: Алгоритмы . Brainware  -  третий «кит» информатики

Эвристический алгоритм (э́вристика)

Эвристика (от греч. εὕρηκα «нашёл!») - алгоритм решения задачи, не имеющий строгого обоснования, но, тем не менее, дающий приемлемое решение задачи в большинстве случаев.

Эвристика — это математически «не совсем корректный», но практически полезный алгоритм.

Page 42: Алгоритмы . Brainware  -  третий «кит» информатики

Эвристика. Особенности:

• она не гарантирует нахождение лучшего решения;• она не гарантирует нахождение решения, даже если оно заведомо

существует;• она может дать неверное решение.

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

распознавании образов, в антивирусных программах, компьютерных играх и т. д.

Page 43: Алгоритмы . Brainware  -  третий «кит» информатики

Пример э́вристического алгоритма. Задача коммивояжера.

Коммивояжёр должен посетить один раз все указанные города и вернуться обратно, в начальную точку маршрута. Необходимо выбрать минимальный по затратам маршрут.

•Коммивояжёр — разъездной торговый агент.

Page 44: Алгоритмы . Brainware  -  третий «кит» информатики

Детерминированный алгоритм

В общем случае, если есть n городов, то существует (n-1)! вариантов маршрута.

Page 45: Алгоритмы . Brainware  -  третий «кит» информатики

Время, требуемое для детерминированного алгоритма

Посчитать длину маршрута можно за 1 нс = 10-9 с.

Число городов Время расчета

10 меньше секунды

15 87 секунд

18 99 часов

19 74 дня

20 3 с половиной года

22 полторы тысячи лет

Page 46: Алгоритмы . Brainware  -  третий «кит» информатики
Page 47: Алгоритмы . Brainware  -  третий «кит» информатики

Оптимальный маршрут: 1-5-2-3-4-1.

1 2 3 4 5

1 10 25 25 10

2 1 10 15 2

3 8 9 20 10

4 14 10 24 15

5 10 8 25 27

Page 48: Алгоритмы . Brainware  -  третий «кит» информатики

«Посмотрел – и сразу понял!»

• ДРАКОН (Дружелюбный Русский Алгоритмический язык, Который Обеспечивает Наглядность).

Page 49: Алгоритмы . Brainware  -  третий «кит» информатики
Page 50: Алгоритмы . Brainware  -  третий «кит» информатики
Page 51: Алгоритмы . Brainware  -  третий «кит» информатики

Тест Тьюринга — эмпирический тест, идея которого была предложена Аланом Тьюрингом в статье «Вычислительные машины и разум», опубликованной в 1950 году в философском журнале «Mind». Тьюринг задался целью определить,

может ли машина мыслить.

Page 52: Алгоритмы . Brainware  -  третий «кит» информатики

Тренируйте сами: О

нлайн чат бот с открыты

м

обучением.

Вы м

ожете исправлять ответы

бота и добавлять

новые варианты

. Результаты обучения будут

доступны другим

пользователям

сразу после сохранения базы знаний.

Бота обучают лю

ди!