1 / 52

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

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

Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

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

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

  7. Потребность в алгоритмизации научных вычислений:Системы мира по Птолемею( 15 вычислений) и Копернику (7вычислений)

  8. Потребность в упрощении системы учета:Механические счетные машины(«Паскалина», калькулятор Лейбница, арифмометр) – для их работы необходима инструкция!

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

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

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

  12. Алгоритмы. Определение • Алгоритм – это строго определенная последовательность действий для некоторого исполнителя, приводящая к конкретному результату за конечное число шагов. • Составление алгоритма - творческий процесс. • Выполнения программы - это не творческий процесс. • Ранее часто писали «алгорифм». • Ранее вместо слова «порядок» использовали слово «последовательность».

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

  14. Дави́дГи́льберт (нем. DavidHilbert; 23 января 1862 — 14 февраля 1943) Проблема разрешимости алгоритма по Гилберту: Всегда можно составить алгоритм, который сможет дать однозначный ответ на любой заданный вопрос ( неразрешимых задач не существует). Алгоритмическая разрешимость — свойство формальной теории обладать алгоритмом, определяющим по данной формуле, выводима она из множества аксиом данной теории или нет. Теория называется разрешимой, если такой алгоритм существует, и неразрешимой, в противном случае. В 1900 году на Втором Международном математическом конгрессе Гильберт формулирует знаменитый список 23 нерешённых проблем математики

  15. Процедурный текст • …Отвори потихоньку калитку • И войди в тихий садик как тень. • Не забудь потемнее накидку, • Кружева на головку надень…

  16. Декларативный текст • Фонтану Бахчисарайского дворца • …Фонтан любви, фонтан живой! • Принесявдартебедверозы. • Люблю немолчный говор твой • И поэтические слезы…

  17. Тьюринг: нельзя определить алгоритмически, завершит ли данная машина Тьюринга свою работу или нет. А́ланМэ́тисонТью́ринг (англ. AlanMathisonTuring; 23 июня 1912 — 7 июня 1954) — английский математик, логик, криптограф, оказавший существенное влияние на развитие информатики (машина Тьюринга). АлонзоЧёрч (англ. AlonzoChurch; 14 июня 1903, Вашингтон, США — 11 августа 1995, Хадсон, Огайо, США) — выдающийся американский математик и логик, внесший значительный вклад в основы информатики (лямбда –исчисление).

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

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

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

  21. Форма представления алгоритмов • Алгоритм может быть записан словами и/или формализован - изображён схематически. • Обычно сначала алгоритм описывается словами, затем всё более формализуется (записывается на языке, понятном исполнителю). Если алгоритм выполняется компьютером, то для записи используется машинный код. В алгоритме присутствуют следующие структуры: • линейная часть – команды, выполняемые последовательно друг за другом; • ветвление – участок алгоритма, содержащий условие, в результате проверки которого происходит переход на одно или на другое продолжение алгоритма; • цикл – участок алгоритма, предусматривающий повторение одних и тех же операций с новыми исходными данными.

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

  23. Запись алгоритма на естественном языке • Пример: Автомат получает на вход два трехзначных восьмеричных числа. По этим числам строится новое восьмеричное число по следующим правилам: • Вычисляются три восьмеричных числа – сумма старших разрядов, сумма средних разрядов, сумма младших разрядов заданных чисел. • Полученные три восьмеричных числа записываются друг за другом в порядке убывания (без разделителей). • Пример. Исходные числа: 271,626. Поразрядные суммы: 10,11,7. Результат: 11107. • Определите, какое из предложенных чисел может быть результатом работы автомата: 18123; 16711; 13115?

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

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

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

  27. Оператор ветвления • Форматы записи оператора: • IF(ЕСЛИ) <логическое условие> THEN (ТО)<оператор 1> ELSE (ИНАЧЕ)<оператор 2> • Если логическое условие истинно, то выполняется первый блок операторов, а если ложно, то второй. • Пример: • IF А>В THEN А=А*2 ELSE В=В*2

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

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

  30. Операторы цикла. • Операторы цикла организуют повторное выполнение одних и тех же команд несколько раз. • Существуют две разновидности операторов цикла: оператор цикла с фиксированным числом повторений и операторы цикла с переменным числом повторений, зависящим от условий. • Формат записи  оператора цикла с фиксированным числом повторений:FOR i=N1 TO N2 STEP N3; • <тело цикла> ; • NEXT i

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

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

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

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

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

  36. Запись алгоритма на языке программирования • #!/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')

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

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

  39. Эвристика. Особенности: • она не гарантирует нахождение лучшего решения; • она не гарантирует нахождение решения, даже если оно заведомо существует; • она может дать неверное решение. Эвристики применяются для решения задач, когда полный перебор вариантов занимает существенное время. Например, при распознавании образов, в антивирусных программах, компьютерных играх и т. д.

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

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

  42. Время, требуемое для детерминированного алгоритма Посчитать длину маршрута можно за 1 нс = 10-9 с.

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

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

More Related