
- •Лекция № 4
- •4. Есть специальные разделы теоретической информатики, занимающиеся случайными процессами (рандомизация).
- •5. Есть широкий круг вопросов, связанных с распределенными вычислениями.
- •Рассмотрим связь с другими науками
- •Выводы:
- •1.1.2 Функциональная вычислительная модель
- •Современные алгоритмы и теория связи
- •011 011 011 011 011 011 011 011 Имеет короткое представление (011)8, , содержит меньше информации, чем слово 0101101000101101001110110010
Лекция № 3_4.
Введение в теоретическую информатику
Что такое теоретическая информатика ? И просто информатика?
Какова ее роль и место среди других наук?
Информатика – это наука о создании, представлении, хранении, воспроизведении и передачи информации, а также ее алгоритмической обработке.
Главными объектами исследования являются сама информация и алгоритмы ее обработки.
Сама информация – это результат взаимодействия данных и адекватных им методов.
Алгоритмы обработки определяют порядок выполнения действий для получения нужного результата. Строгого словесного определения понятия алгоритма нет.
Определение 1: Алгоритм – это всякая система вычислений, выполняемых по строго определенным правилам, которая после какого- либо числа шагов заведомо приведет к решению поставленной задачи. (Колмогоров)
Определение 2: Алгоритм – это точное предписание, определяющее вычислительный процесс, идущий от варьируемых исходных данных к искомому результату. (Марков)
Общие требования к алгоритму:
Алгоритм должен содержать конечное количество элементарно выполняемых предписаний.
Алгоритм должен выполнять конечное количество шагов при решении задачи.
Алгоритм должен быть единым для всех допустимых исходных данных.
Алгоритм должен приводить к правильному по отношению к поставленной задаче решению.
Математическая логика и теория формальных систем являются формализацией человеческого мышления и представления наших знаний.
Можно ли наши знания и процесс мышления представить в виде аксиом.?
Можно ли построить алгоритм, который бы позволил реализовать процесс извлечения ответов из знаний, формализованных в виде аксиом?
Если предположить, что это можно сделать, то в результате мы получим формальный метод для получения неформальных результатов, - виртуальную машину, на входе которой будут наши знания в виде аксиом, а на выходе – теоремы, которые можно интерпретировать в виде практически полезных выводов, очень часто совсем не очевидных.
Формализация понятия алгоритма дает возможность :
сравнивать алгоритмы по эффективности;
производить проверку их правильности и эквивалентности;
определять области их применения.
Первым дошедшим до нас алгоритмом в его интуитивном понимании как конечной последовательности элементарных действий, решающих поставленную задачу, считается алгоритм Евклида (III век до нашей эры). Это алгоритм нахождения наибольшего общего делителя (НОД) двух чисел (a,b). Задача нахождения НОД не утратила своей актуальности и является сегодня составной частью многих эффективных алгоритмов.
Свойство НОД : НОД(a,b)=НОД(b, a mod b)
Рекурсивная реализация алгоритма Евклида :
Evclid(a,b);
If b=0
then Evclid=a;
else Evclid=Evclid(b, a mod b);
Трудоемкость алгоритма Евклида определяется значениями чисел.
Процедура
Evclid
(a,b)
имеет сложность O(
2
) битовых операций, если числа a
и b
рассматривать как двоичные
- битовые числа.
Раньше теория простых чисел считалась разделом чисто теоретической математики. Но современные алгоритмические идеи решения разнообразных задач опираются на результаты этой теории. Доказательство Евклидом существования бесконечного количества простых чисел остается таким же ясным и четким сегодня, каким оно было более двух тысяч лет назад.
И казалось бы , такие простые вопросы как существует ли решение уравнения
an + bn = cn для целых a, b, c и n>2,
на самом деле совсем непросто. Более того, это формулировка великой теоремы Ферма! (1637г)
Математики искали доказательство этой теоремы более 300 лет!
Окончательно доказал ее Эндрю Уайлс( Кембридж) только в 1995г.
Теорема для натуральных чисел n>2 не имеет натуральных решений a,b,c.
Компьютеры во всю используются в исследовании теории чисел. Есть множество алгоритмов, работающих в этой области.
Замечание Простые числа. Целое число p>1 называется простым, если оно делится только на 1 и само на себя. Иначе, если p – простое число, то равенство p=a*b для целых a<=b эквивалентно тому, что a=1 и b=p. Первые десять простых чисел: 2,3,5,7,11,13,17,19,23,29.
Основная теорема арифметики гласит, что любое целое число можно представить в виде произведения простых сомножителей, причем единственным образом.
32=2*2*2*2*2 105= 3*5*7.
Если посмотреть на теоретическую информатику с точки зрения компьютерных наук, то можно увидеть, какие именно проблемы стоят перед информатикой.
Есть ли такие задачи, которые не могут быть решены на компьютере вне зависимости от его вычислительной мощности?
Да, такие задачи есть. Это алгоритмически неразрешимые задачи.
Дело в том, что успехи математики привели к тому , что в начале 20 века Гильберт высказал мнение , “что в математике не может быть неразрешимых проблем”, и предложил ряд проблем, как руководство к действию, предполагая, что решения этих проблем отсутствуют только на данный момент.
Первым, кто опроверг это заявление, был Курт Гедель. Дело в том, что если бы удалось найти полную процедуру доказательства для математических утверждений, то это привело бы к двум важным последствиям:
Вывод всех заключений мог бы осуществляться механически;
Всю математику можно было бы построить как логическое следствие некоторого множества фундаментальных аксиом.
В этом и заключалась основная цель математической логики: подвести прочный и непротиворечивый фундамент под здание математики.
Результаты, полученные в математической логике не решили эту цель, но оказались исключительно важными для решения задач искусственного интеллекта (ИИ) и очень много дали для развития теории вычислимости.
В 1931г Гедель доказал знаменитую теорему о неполноте. (символических логик). Это была первая фундаментальная теоретическая работа, связанная с доказательством алгоритмической неразрешимости.
В этой теореме утверждается, что любая логическая система, которая включает принцип индукции ( а без этого принципа удается построить лишь очень малую часть дискретной математики), обязательно является неполной. Поэтому существуют такие высказывания, которые следуют из заданных аксиом, но в рамках данной логической системы для них невозможно найти конечное доказательство. Иголка действительно может быть в метафизическом стоге сена, но ни одна процедура не может гарантировать, что она будет найдена. Таким образом, теорема Геделя о неполноте устанавливает определенные пределы, ограничивающие мощь эффективных процедур доказательства.
Теорема Геделя о неполноте говорит о том, что некоторые математические утверждения могут быть истинными, но недоказуемыми.
Список алгоритмически неразрешимых проблем достаточно большой. Сегодня при доказательстве алгоритмической неразрешимости некоторой задачи принято сводить ее к ставшей классической задаче – “задаче останова “машины Тьюринга.
В теории вычислимости проблема останова –это и есть проблема разрешимости
Итак, все задачи можно разделить на две части.
Алгоритмически разрешимые.
Алгоритмически неразрешимые.
Теорема : Не существует алгоритма (машины Тьюринга), позволяющего по описанию произвольного алгоритма и его исходных данных, при этом и алгоритм и данные заданы символами на ленте машины Тьюринга, определить, останавливается ли этот алгоритм на этих данных или работает бесконечно.
Считается, что некоторый алгоритм решил поставленную задачу, если он остановился, когда состояние ленты соответствует ответу.
Если останова не происходит, то считаем, что задача не решена, так как непонятно, в какой момент времени на ленте появляется решение.
Замечание: Машина Тьюринга – (1936г) это виртуальный компьютер – некоторое понятие о вычислительной машине, ставшее одним из математических определений алгоритма. Любой алгоритм в интуитивном смысле этого слова может быть представлен эквивалентной машиной в предложенной Тьюрингом модели вычислений. Тьюринг рассматривал алгоритм как процедуру, которая может быть выполнена механически, без творческого вмешательства. Он показал, что эту процедуру можно представить в виде подробной модели вычислительного процесса. Полученная модель вычислений, в которой каждый алгоритм разбивался на последовательность элементарных шагов, и была той логической конструкцией, которую впоследствии назвали машиной Тьюринга.(МТ)
МТ - математическая модель идеализированной ЭВМ. МТ – обычный математический объект, такой же, как функция, например, или интеграл.
МТ моделирует некоторые реальные процессы.
МТ – это абстрактная модель вычислений. Ее вычислительная мощность равна вычислительной мощности реальных компьютеров.
Именно теорема Геделя о неполноте послужила основанием для разработки Тьюрингом формальной модели интуитивного понятия алгоритма.
Введение формальной модели в свою очередь послужило первым шагом, который привел к основанию теоретической информатики.
Левый
граничный
маркер
0 1 2 i-1 i i+1 n n+1 n+2
|
x1 |
x2 |
………… |
xi-1 |
xi |
xi+1 |
……… |
|
xn |
|
|
…… |
Бесконечная | читающее- пишущая головка
лента |
программа
Машина Тьюринга
Таким образом, фундаментально алгоритмическая неразрешимость связана с бесконечностью выполняемых алгоритмом действий, иначе, с невозможностью предсказать, что для любых исходных данных решение будет получено за конечное число шагов.
Неразрешимые проблемы часто называют “слишком массовыми”, то есть в проблеме останова мы хотим решить задачу для любого алгоритма и для любого набора исходных данных, но за конечное время.
Ясно, что никогда не сможем доказать все теоремы математики в пределах любой конкретной системы аксиом. Для любого множества базовых аксиом всегда найдется какое-либо истинное высказывание, которое не может быть доказано из этих аксиом!!
Примеры алгоритмически неразрешимых проблем
1. Проблема останова машины Тьюринга. (смотри вышеуказанную теорему).
2. Вычисление совершенных чисел.
Совершенные числа – это числа, которые равны сумме своих делителей 28=1+2+4+7+14.
Определим функцию S(n) = n-ое по счету совершенное число и поставим задачу вычисления S(n) по произвольно заданному n. Общего метода решения такой задачи нет, и его отсутствие не позволяет ответить на вопрос об останове алгоритма. Если мы проверили М чисел при поиске n-го совершенного числа -означает ли это, что его вообще не существует?
3. Десятая проблема Гильберта.
Пусть задан многочлен n-ой степени с целыми коэффициентами Р. Существует ли алгоритм, который определяет, имеет ли уравнение Р=0 решение в целых числах?
Ю.В. Матиясевич показал, что такого алгоритма не существует, то есть отсутствует общий метод определения целых корней уравнения Р=0 по его целочисленным коэффициентам.
Проблема соответствий Поста над алфавитом
. (частично разрешимая проблема). Эта проблема сводится к проблеме останова и является алгоритмически неразрешимой.
В теории алгоритмов проблемы, для которых может быть предложен частичный алгоритм их решения, частичный в том смысле, что он возможно, но не обязательно, за конечное количество шагов находит решение проблемы, называются частично разрешимыми проблемами. Такой является проблема останова - она частично разрешима.
2.Как определить, какие проблемы являются алгоритмически неразрешимыми, а какие алгоритмически разрешимы?
На этот вопрос нам отвечает теория вычислимости. (Теория алгоритмической разрешимости) В ней разработаны специальные методы классификации задач, их деление на разрешимые и неразрешимые. Теория вычислимости дает нам методы доказательства отсутствия алгоритмов решения некоторых конкретных задач. Основные методы доказательств, применяемые в теории вычислимости, относятся к теории множеств. Сюда относятся:
Сравнение мощностей бесконечных множеств.
Метод диагонализации.
Метод сложности по Колмогорову
Метод сводимости (редукции) и др..
Лекция № 4
3.Если задача алгоритмически разрешима, то насколько сложна может быть эта задача?
Задача считается алгоритмически разрешимой, если существует алгоритм ее решающий и алгоритмически неразрешимой, если такого алгоритма не существует. Это мы узнаем, используя методы классификации задач из теории вычислимости.
Сложность задачи понимается как объем работы, необходимый и достаточный для ее алгоритмического решения. На этот вопрос отвечает теория сложности
Теория сложности является как бы продолжением теории вычислимости.
Теория сложности делит класс алгоритмически разрешимых задач на ряд подклассов – по оценке достижимой эффективности их решения.
Использование вычислительной техники для решения практических задач, заставляет задуматься о границах практической применимости данного алгоритма решения задачи в смысле ограничения на ее размерность и время выполнения. Реализация алгоритма на ЭВМ может быть столь длительной, что это перестает быть актуальным. Какие задачи могут быть решены на ЭВМ за реальное время? Теоретический ответ на этот вопрос был дан введением классов вычислительной сложности, например, сложностный класса задач Р. (задачи с полиномиальной сложностью).
Этот вопрос и другие вопросы, связанные с классами задач по сложности рассматриваются в теории сложности.
4. Есть специальные разделы теоретической информатики, занимающиеся случайными процессами (рандомизация).
Рандомизация позволяет нам разобраться с такими задачами, для решения которых даже очень хорошие алгоритмы требуют слишком большого времени работы компьютера ( например, эволюционные задачи).
Применение рандомизированных алгоритмов позволяет нам ослабить требование гарантированного получения правильного результата – на другое требование – получение решения, являющегося правильным с некоторой достаточно большой вероятностью. Наиболее часто это применяется для задач, требующих очень большого времени для решения.
Например, в цифровой обработке сигналов есть оптимальные фильтры Калмана и Винера. Вычислительные затраты при их использовании в моделировании слишком высоки. Но если использовать аппроксимацию импульсной характеристики фильтров полиномами небольшой степени, где степень полинома определяется условиями задачи, в сущности видом сигнала, то огрубление за счет аппроксимации может ослабить ограничения, накладываемые оптимальными фильтрами и привести к качественному скачку, при котором время решения задачи на компьютере резко сократится, а качество фильтрации останется вполне приемлемым. (95-98% от оптимального).
5. Есть широкий круг вопросов, связанных с распределенными вычислениями.
Это проблемы, связанные с разработкой и анализом коммуникационных алгоритмов(коммуникационных протоколов), разработкой общедоступных надежных сетевых моделей. Эти проблемы напрямую связаны с современными технологиями разработки программного обеспечения (ПО). Это и вопросы, связанные с безопасностью работы в коммуникационных сетях.
Вот на такие вопросы и пытается ответить теоретическая информатика.
Но в то же время информатика – это и практическая инженерно-техническая дисциплина.
Это и постановка задачи, и поиск ограничений, моделирование, составление спецификаций, тестирование, поддержка, сопровождение и т.д.
Специалист в области информатики должен быть широко эрудированным. Он должен иметь хорошую математическую базу, обладать инженерным мышлением, понимать, что информатика интегрирована во многие другие науки и сферы деятельности человека. Понимать, наконец, что программирование – это еще и искусство, следовательно, надо быть творческой личностью.
Информатика – междисциплинарна по своей сути.