
- •Тема 10. ЭЛЕМЕНТЫ ТЕОРИИ И НЕКОТОРЫЕ ПРОБЛЕМЫ
- •Алгоритм как результат решения задачи
- •Интуитивно алгоритм определяется – как последовательность действий,
- •Математическое определение А.(Колмогоров А.Н.)
- •Зачем нужны такие строгости в определении?
- •Определение алгоритма для компьютерных применений:
- •Требование упорядоченности
- •Требование выполнимости этапов
- •Недвусмысленность
- •Требование конечности процесса
- •Способы описания алгоритмов
- •Примитивы
- •Примитивы
- •способ описания синтаксиса языков программирования. Нормальная нотация Бекуса
- •Расширенные Бэкуса – Наура Формы (РБНФ)
- •Каждому определению РБНФ соответствует синтаксическая диаграмма
- •Здесь мы познакомились лишь с основными понятиями описания синтаксиса ЯП.
- •Представление алгоритма во время его разработки
- •В 1950-60гг. самым совершенным средством была блок схема
- •Псевдокоды
- •Создание алгоритмов или
- •Что значит создать алгоритм?
- •Расплывчато, фазы решения задач, предложенные в книге математика Д. Пойа «Как решать задачу»
- •Неупорядоченность процесса решения задач является основной причиной трудностей, связанных с разработкой систематического подхода
- •Математик А. Пуанкаре так же описал этот феномен. Он считал, что творческий процесс
- •Как же все таки надо действовать при решении задачи?
- •Вычислимые и невычислимые функции теорема Геделя
- •Результат Черча
- •В то время еще не было сколь нибудь значимых компьютеров, а усилия ученых
- •Алгоритмические проблемы
- •Проблема универсального языка программирования
- •Универсальный язык программирования
- •Описание универсального языка программирования
- •Даные
- •Операторы
- •Операторы
- •Как программировать на этом языке
- •Примеры программирования
- •Дальнейшее развитие
- •Проблема
- •Модели универсальных ВМ
- •Машины Тьюринга
- •Описание МТ
- •Команда МТ(qi aj qnamR)
- •Пример программы
- •Работа программы
- •Аналогично, можно запрограммировать любую
- •Новое поколение ВМ
- •Вычислительная мощность ВМ Функции и их вычисление
- •Виды функций
- •Значение МТ для современной теории вычислительных систем
- •Ограниченность ВМ и проблема Искусственного Интеллекта
- •Сложность задач и алгоритмов с точки зрения ВМ оценивается затратами на вычисление а
- •Оценки сложности
- •Сравнение полиномиальных и экспоненциальных
- •Классификация задач по сложности
Создание алгоритмов или
как решаются задачи
07/02/19 |
21 |
Что значит создать алгоритм?
Создать алгоритм – это значит найти метод решения задачи. Поэтому, чтобы понять, как создаются алгоритмы необходимо понять процесс решения задач.
Теория решения задач – не является специфической только для компьютерных наук
Невозможно построить алгоритм позволяющий находить алгоритм решения любой задачи
Более того, существуют задачи, не имеющие алгоритмических решений
Способность решать задачи в значительной степени является профессиональным навыком, который необходимо развивать, а не точной наукой, которую можно изучить.
|
|
Решение задач творческий процесс, искусство. |
22 |
07/02/19 |
Расплывчато, фазы решения задач, предложенные в книге математика Д. Пойа «Как решать задачу» еще в 1945г. остаются и сегодня актуальными:
1.Понять существо задачи; Вникнуть в самую суть. Попытаться сходу ее решить не начиная изучение литературы.
2.Разработать план решения задачи. (Предложить идею алгоритма); На этом этапе появляется активное отношение к изучению литературы, что более плодотворно, читаешь не впрок, а с определенной целью.
3.Выполнить план. (Сформулировать алгоритм и написать программу). Возможно, для начала получить грубое решение, не учитывающее всяких нюансов.
4.Оценить точность решения
Попробовать простейшие, предельные случаи. Выяснить ограничения. Анализ полученных результатов – тестирование.
Не обязательно эти фазы будут выполнены в указанном порядке.
Например фаза 1) может быть пройдена только после 4) Всякое решение плодит
новые проблемы. |
23 |
07/02/19 |
Неупорядоченность процесса решения задач является основной причиной трудностей, связанных с разработкой систематического подхода к их решению
Существует некое мистическое вдохновение, посещающее человека, решающего задачу.
Оно проявляется в том, что работая какое-то время над решением задачи без видимого успеха, позднее это решение может неожиданно получиться при занятии совершенно другой деятельности. (были случаи когда решение приходит во сне).
Этот феномен был обнаружен Г. Гельмгольцем (1896г.)
|
07/02/19 |
24 |
Математик А. Пуанкаре так же описал этот феномен. Он считал, что творческий процесс состоит из чередования сознательных и подсознательных усилий.
Если задача важна для Вас, подсознание работает над ней постоянно и «выталкивает» решение в сознание.
Инкубационный период – время между процессом сознательного решения задачи и озарением. Исследование этого явления продолжаются и в настоящее время.
07/02/19 |
25 |
Как же все таки надо действовать при решении задачи?
Существует множество подходов:
Чаще всего выручает поиск решения по аналогии с уже известным решением похожих; Поэтому надо много читать, как решаются те или иные задачи. Т.е. учиться.
Если задача оказалась оригинальной, тогда используем - Поэтапное уточнение: разбить задачу на ряд подзадач, которые в свою очередь разбиваются на более простые. Нисходящий метод (индукция): стратегии разделяй и властвуй, динамическое программирование.
Иногда надо просто взглянуть на задачу «трезво», или «с другой стороны» с общих позиций (дедукция).
07/02/19 |
26 |
Вычислимые и невычислимые функции теорема Геделя
Если решение задачи – это алгоритм, а компьютер – исполнитель алгоритмов, то компьютеры скоро полностью заменят человека. Была такая эйфория. Однако
В 1931г. была опубликована знаменитая теорема Геделя, в которой было доказано, что существуют задачи, которые невозможно разрешить алгоритмически (т.е. есть задачи не имеющие алгоритмического решения).
Гедель впервые ввел понятие вычислимой (рекурсивной) функции, как функции представляющей собой алгоритм нахождения числа Y по заданному набору величин x1…xn
Y=f(x1,….xn)
и показал, что существуют и невычислимые.
07/02/19 |
27 |
Результат Черча
Обычная математика позволяет иногда непосредственно доказать, что решающая задачу функция не может быть представлена в виде алгоритма, т. е в виде рекурсивной функции.
Этим путем Черч первый доказал неразрешимость основной алгоритмической проблемы логики предикатов. (я не буду ее здесь формулировать). Т.е. он первый нашел и описал функцию, которая не представляется алгоритмом.
Задача попроще, которая не решается рекурсивной функцией:
«доказать, что написанная программа порождает конечный процесс (т.е. когда либо закончится)».
07/02/19 |
28 |
В то время еще не было сколь нибудь значимых компьютеров, а усилия ученых уже были направлены на понимание ограничений будущих вычислительных систем.
В рамках этих исследований были решены две основные алгоритмические проблемы
07/02/19 |
29 |
Алгоритмические проблемы
Проблема универсального языка
программирования
Проблема универсальной
вычислительной машины
07/02/19 |
30 |