Эвристическое и алгоритмическое программирование
Алгоритмическое программирование. Отличительной особенностью научного подхода в исследовании кибернетических систем является то, что был введен принципиально новый метод изучения – математический эксперимент или машинное моделирование, то есть исследование системы по её математической модели. Широкое применение ЭВМ и метода машинного моделирования привело к необходимости написания алгоритмов решения задач на языке вычислительной машины, то есть написанию алгоритмических программ.
Алгоритм или алгоритмическая программа – это система точных и однозначных правил, последовательное выполнение которых приводит к решению любой задачи из некоторого класса, для которого алгоритм существует. Будем считать, что алгоритм – это описание процесса.
Алгоритм характеризуется основными функциональными особенностями:
–детерминированность – свойство однозначности результата применения при заданных исходных данных;
–дискретность алгоритмируемого процесса – возможность выделить отдельные элементарные операции, выполнение которых объективно возможно;
–массовость – возможность применения алгоритма к любым исходным данным из некоторого множества.
В задачах реальных процессов (в педагогике, в психологии, в других областях знания) решаются чаще при вынужденном отказе от некоторых условий задачи, которые несущественно отражаются на результате. В ряде случаев бывает трудно или невозможно построить относительно точную математическую модель процесса. Человек может справиться с подобными задачами без применения сложных математических средств при условии меньшего объёма информации. Часто принимаемое им решение оказывается эффективнее решений той же задачи, полученной с помощью строгих алгоритмических методов. Всё это привело к необходимости изучения и моделирования процесса человеческого мышления для последующего использования в построении моделей таких задач, которые не допускают алгоритмизацию без существенной потери качества результата.
Другим направлением в кибернетике, опирающемся на эвристическую интеллектуальную деятельность, является исследование возможности моделирования интеллекта и создание его искусственного аналога.
Искусственный интеллект – направление исследований, связанное с разработкой методов, позволяющих машине решать задачи, ранее решавшиеся только человеком. Эвристики в литературе по искусственному интеллекту противопоставляются алгоритмическому методу и представляют собой правила, руководствуясь которыми интеллектуальная система движется к цели. Разумность систем искусственного интеллекта оценивается по аналогии с поведением человека в подобных ситуациях, поэтому эти исследования проводятся на стыке психологии, педагогики, лингвистики, философии, социологии, математики, вычислительной техники.
Интеллектуальная эвристическая деятельность применяется и в распознавании образов – процессе принятия решений о наиболее существенных свойствах объекта на основании наблюдаемых косвенных признаков. Здесь эвристические методы – это методы, основанные на правдоподобных и интуитивных соображениях решения задач распознавания, обучения и самообучения. Многие из тех полезных функций, которые легко осуществляет мозг, но которые достаточны трудны для вычислительной машины, попадают в категорию распознавания образов. С некоторыми из этих функций человек справляется настолько естественно, что их принято считать очевидными.
Эвристическое программирование. Методы решениясложных, не допускающих алгоритмического решения задач с применением ЭВМ на основе законов человеческого мышления называются эвристическими. Они основаны на принципах переработки информации, осуществляемой человеком на всех этапах решения задачи и построения на этой основе эвристической программы: это вид программирования, базирующийся на использовании природы мышления человека. С его применением делается попытка реализовывать алгоритмизацию творческих процессов на основе анализа деятельности человека при решении аналогичных задач. Этот анализ носит внешний характер и не отражает принципиальные процессы, происходящие в мозгу человека при этой интеллектуальной деятельности.
Сущность эвристического программирования заключается в следующем:
1) программист, не зная точного способа решения задачи, вводит в ЭВМ способ решения, основанный на эвристических рассуждениях самого программиста или дает возможность машине проводить такие рассуждения;
2) протоколируется целый ряд правдоподобных рассуждений, проведенных людьми, и на основе протоколов составляется эвристическая программа.
При достаточно большом эксперименте в ЭВМ может быть введен опыт большого количества людей. Если результаты машинного решения задачи совпадают по выбранным параметрам с результатами решения человеком, то эвристическая программа считается эффективной. В общем случае эвристическая программа – это такая, которая иногда срабатывает, а иногда – нет.
Другой аспект эвристического программирования и его практической значимости связан с невозможностью просмотра всех вариантов решения задачи, который становится нереальным из-за слишком большого размера пространства решений. Выражение «комбинаторный взрыв» относится к такой ситуации, когда размер этого пространства возрастает чрезвычайно быстро с увеличением числа возможных элементарных решений. Чтобы избежать этого, существенно ограничивают пространство решений с помощью эвристик, которые представляют собой некоторую стратегию. Характерная особенность эвристических программ состоит в том, что они основываются на широком изучении приемов работы человека при решении задач, особенно накопления и переработки информации в процессе решения аналогичных задач.