Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Презентации 2часть / Лекция_32_33_Теория_Алгоритмов.ppt
Скачиваний:
29
Добавлен:
11.05.2015
Размер:
177.66 Кб
Скачать

Создание алгоритмов или

как решаются задачи

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