Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Назначение и основы использования систем искусственного интеллекта; базы знаний, экспертные системы, искусственный интеллект



Помимо классических применений вычислительной техники, связанных с выполнением инженерных и экономических расчетов, разработкой автоматизированных систем управления, созданием информационно поисковых систем и т.д., сейчас успешно развивается направление, называемое «искусственный интеллект».

Искусственным интеллектом называют комплексное научное направление, которое объединяет математиков, лингвистов, психологов, инженеров и ставит своей целью создание программно-технических средств, позволяющих имитировать отдельные элементы творческого процесса; автоматизировать целенаправленное поведение роботов; обеспечивать диалоговое общение с компьютером пользователей на языке их предметной области, особенно в связи с проектами ЭВМ пятого и последующих поколений и широким распространением ПЭВМ; создавать системы, работа которых опирается на знания, формируемые экспертами (экспертные системы).

К задачам искусственного интеллекта относят задачи, которые определяют процесс поиска решения, а не процесс решения. Примерами таких задач являются задачи робототехники, доказательство теорем, машинный перевод текстов с одного языка на другой, планирование с учетом неполной информации, составление прогнозов, моделирование сложных процессов и явлений, игры (шахматы, шашки) и т.д.

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

Наиболее известные направления развития искусственного интеллекта связаны с экспертными системами, базами знаний, нейронными сетями и нейрокомпьютерами, DM-системами.

При построении экспертных систем основными являются вопросы: какие знания должны быть в них представлены и в какой форме? Структура знаний зависит от сферы их использования и может носить довольно сложный характер. Эта структура включает в себя различные факты из предметной области, взаимосвязи между ними, правила действий и т.д. Она также должна включать в себя и знания, касающиеся способа включения знаний в экспертную систему. Сложность и многообразие структур знаний вызвали к жизни несколько различных способов представления знаний, из которых следует выделить логическую модель, фреймовые и продукционные системы, семантические сети. Каждый способ представления обладает своими достоинствами и недостатками и тяготеет к определенной структуре знаний. В последние годы стали использоваться модели представления знаний, объединяющие указанные способы.

Системы, основанные на знаниях, – это системы программного обеспечения, основными структурными элементами которых являются база знаний и механизм логических выводов. В первую очередь к ним относятся экспертные системы, являющиеся мощным инструментом обработки интеллектуальной информации типа знаний.

Экспертная система – это интеллектуальная программа, способная делать логические выводы на основании знаний в конкретной предметной области и обеспечивающая решение специфических задач. Поэтому ее необходимо наделить функциями, позволяющими решать задачи, которые в отсутствие эксперта невозможно правильно решить. Следовательно, необходимым этапом в ее разработке является приобретение соответствующих знаний от эксперта. Перечислим требования к экспертным системам: использование знаний, связанных с конкретной предметной областью; приобретение знаний от эксперта; определение реальной и достаточно сложной задачи; наделение системы способностями эксперта.

Функции, которые должны выполнять структурные элементы экспертной системы.

1) необходим механизм представления знаний в конкретной предметной области и управления ими. Для реализации этих функций используется механизм, называемый базой знаний (БЗ).

2) необходим механизм, который на основании знаний, имеющихся в базе знаний, способен делать логические выводы. Этот механизм называется механизмом логических выводов.

3) необходим интерфейс для правильной передачи ответов пользователю. Механизмом, реализующим эту функцию, является пользовательский интерфейс.

4) необходим механизм получения знаний от эксперта, поддержки базы знаний и дополнения ее при необходимости. Механизмом, реализующим эту функции, является модуль приобретения знаний.

5) необходим механизм, который способен не только давать заключение, но и представлять различные комментарии, прилагаемые к этому заключению, и объяснять его мотивы. В противном случае пользователю будет трудно понять заключение. Такое понимание необходимо, если заключение используется для консультации или оказания помощи при решении каких-либо вопросов. Механизм, реализующий эти функции, называется модулем советов и пояснений.

Различают ЭС предметно-ориентированные и ЭС‑оболочки, предназначенные для наполнения любым предметным значением. Наиболее широко распространены ЭС, построенные на основе представления знаний в виде набора правил (rule-based), и на базе адаптивного подхода, основанного на обучении системы на примерах (case-based). В продукционных экспертных системах логический вывод описывается большим числом правил (продукций) типа «ЕСЛИ условие ТО действие». В ЭС, основанных на правилах, предметные знания представляются набором правил, которые проверяются через набор фактов или знаний о текущей ситуации. Когда часть ЕСЛИ правила удовлетворяет фактам, то действие, указанное в части ТО, выполняется.

28. Классификация языков программирования.

Существуют различные классификации языков программирования. По наиболее распространенной классификации все языки программирования делят на языки низкого, высокого и сверхвысокого уровня.

В группу языков низкого уровня входят машинные языки и языки символического кодирования: (Автокод, Ассемблер). Операторы этого языка – это те же машинные команды, но записанные мнемоническими кодами, а в качестве операндов используются не конкретные адреса, а символические имена. Все языки низкого уровня ориентированы на определенный тип компьютера, т. е. являются машинно-зависимыми. Машинно-ориентированные языки – это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.).

Языки высокого уровня. Это Фортран, Алгол, Кобол, Паскаль, Бейсик, Си, Пролог и т.д. Эти языки машинно-независимы, т.к. они ориентированы не на систему команд той или иной ЭВМ, а на систему операндов, характерных для записи определенного класса алгоритмов. Однако программы, написанные на языках высокого уровня, занимают больше памяти и медленнее выполняются, чем программы на машинных языках.

К языкам сверхвысокого уровня можно отнести лишь Алгол-68 и APL. Повышение уровня этих языков произошло за счет введения сверхмощных операций и операторов.

Другая классификация делит языки на вычислительные и языки символьной обработки. К первому типу относят Фортран, Паскаль, Алгол, Бейсик, Си, ко второму типу - Лисп, Пролог, Снобол и др.

В современной информатике можно выделить два основных направления развития языков программирования: процедурное и непроцедурное.

Процедурное программирование возникло на заре вычислительной техники и получило широкое распространение. В процедурных языках программа явно описывает действия, которые необходимо выполнить, а результат задается только способом получения его при помощи некоторой процедуры, которая представляет собой определенную последовательность действий.

Среди процедурных языков выделяют в свою очередь структурные и операционные языки. В структурных языках одним оператором записываются целые алгоритмические структуры: ветвления, циклы и т.д. В операционных языках для этого используются несколько операций. Широко распространены следующие структурные языки: Паскаль, Си, Ада, ПЛ/1. Среди операционных известны Фортран, Бейсик, Фокал.

Непроцедурное (декларативное) программирование появилось в начале 70-х годов 20 века, но стремительное его развитие началось в 80-е годы, когда был разработан японский проект создания ЭВМ пятого поколения, целью которого явилась подготовка почвы для создания интеллектуальных машин. К непроцедурному программированию относятся функциональные и логические языки.

В функциональных языках программа описывает вычисление некоторой функции. Обычно эта функция задается как композиция других, более простых, те в свою очередь разлагаются на еще более простые и т.д. Один из основных элементов в функциональных языках - рекурсия, то есть вычисление значения функции через значение этой же функции от других элементов. Присваивания и циклов в классических функциональных языках нет.

В логических языках программа вообще не описывает действий. Она задает данные и соотношения между ними. После этого системе можно задавать вопросы. Машина перебирает известные и заданные в программе данные и находит ответ на вопрос. Порядок перебора не описывается в программе, а неявно задается самим языком. Классическим языком логического программирования считается Пролог. Построение логической программы вообще не требует алгоритмического мышления, программа описывает статические отношения объектов, а динамика находится в механизме перебора и скрыта от программиста.

(Дополнительно, лишнее) Можно выделить еще один класс языков программирования - объектно-ориентированные языки высокого уровня. На таких языках не описывают подробной последовательности действий для решения задачи, хотя они содержат элементы процедурного программирования. Объектно-ориентированные языки, благодаря богатому пользовательскому интерфейсу, предлагают человеку решить задачу в удобной для него форме. Примером такого языка может служить язык программирования визуального общения Object Pascal.

Языки описания сценариев, такие как Perl, Python, Rexx, Tcl и языки оболочек UNIX, предполагают стиль программирования, весьма отличный от характерного для языков системного уровня. Они предназначаются не для написания приложения с нуля, а для комбинирования компонентов, набор которых создается заранее при помощи других языков. Развитие и рост популярности Internet также способствовали распространению языков описания сценариев. Так, для написания сценариев широко употребляется язык Perl, а среди разработчиков Web-страниц популярен JavaScript.

29. Понятие алгоритма. Свойства алгоритма.

Понятие алгоритма относится к числу основных понятий информатики. В течение длительного времени его употребляли только математики, понимая под алгоритмом правило решения задач некоторого класса.

Постоянное расширение области применения вычислительной техники привели к становлению новой самостоятельной науки – теории алгоритмов.

Термин «алгоритм» содержит преобразованное географическое название древнего государства в Средней Азии – Хорезм, родины человека по имени Мухаммед ибн Муса аль-Хорезми, ориентировочные годы жизни которого – 783-850. Его труды, переведенные в XII в. с арабского на латинский язык, познакомили европейцев с десятичной позиционной системой счисления и с правилами выполнения четырех арифметических действий над многозначными числами. Формальный характер этих элементарных операций, которые всеми и всегда выполняются одинаково при полном отвлечении от содержательного смысла операндов, означает, что они могут быть автоматизированы. А имя самого ученого в лат. транскрипции Algorithmi со временем превратилось в общее название однозначно трактуемой процедуры решения задачи, достижения поставленной цели.

Формирование строгого научного определения алгоритма не закончено и в настоящее время. Современное интуитивное представление алгоритма рассматривается ниже.

Алгоритм – это конечная последовательность понятных и точных предписаний исполнителю выполнить конечную цепочку действий, приводящих от допустимых исходных данных к искомому результату. Такая цепочка действий называется алгоритмическим процессом, а каждое действие – шагом или операцией.

Нестрогость интуитивного понятия алгоритма заключена, прежде всего, в научной неточности тех терминов, в которых оно выражено, в частности таких слов, как «понятность» и «точность».

Отметим основные свойства, присущие любому алгоритму.

1. Дискретность алгоритма. Описываемый алгоритмом процесс должен быть разбит на конечное число отдельных указаний, четко отделенных друг от друга конечным ненулевым промежутком времени. Только выполнив требования одной инструкции, можно перейти к следующей.

2. Понятность алгоритма. Алгоритм составляется с ориентацией на определенного исполнителя. У каждого исполнителя имеется свой перечень допустимых предписаний, которые этот исполнитель понимает и может выполнить. Этот перечень называется системой команд исполнителя (СКИ). Алгоритм должен включать в себя только те предписания, которые входят в СКИ.

3. Элементарность шагов алгоритма. Простейшие (основные, натуральные) операции, выполняемые в соответствии с требованиями алгоритма, зависят лишь от характеристик исполнителя, но не от исходных данных и промежуточных результатов. Например, сравнение в ЭВМ двух чисел, выполнение арифметических операций и т.п., но не сравнение двух файлов, потенциальная длина которых не ограничена.

4. Точность (однозначность, определенность, детерминированность) алгоритма. Формулировка алгоритма полностью определяет все действия исполнителя, у которого никогда не должна возникать потребность в принятии самостоятельных решений, не предусмотренных составителем алгоритма. Применяя алгоритм к одним и тем же исходным данным несколько раз, исполнитель получает одну и ту же цепочку промежуточных результатов на каждом шаге и, соответственно, один и тот же окончательный результат. Результаты не должны зависеть ни от каких случайных факторов.

5. Массовость алгоритма. Для каждого алгоритма существует некоторый класс объектов (предметов, чисел и т.д.) и все они (а не какое–то их количество, конечное, бесконечное или равное нулю) допустимы в качестве исходных данных. Точное выполнение алгоритма возможно лишь при условии, что исходные данные поддаются исчерпывающему описанию на некотором языке.

6. Конечность (сходимость, результативность, финитность) алгоритма. Алгоритмический процесс должен оканчиваться через конечное число шагов, на каждом шаге не должно возникать препятствий для его выполнения, и после остановки можно получить искомый результат. Это требование не учитывает реальных ограничений, связанных с затратами времени и расходованием других ресурсов до завершения алгоритмического процесса за конечное (но заранее неизвестное) число шагов. Поэтому конечность означает лишь потенциальную осуществимость алгоритма, хотя на практике, конечно, всегда требуется реальная его выполнимость.

О некоторой ограниченности приведенного интуитивного понятия алгоритма свидетельствует тот факт, что существуют программы для ЭВМ, которые могут заканчиваться без получения результата или даже не заканчиваться при некоторых исходных данных. Пример – функционирование операционной системы компьютера: алгоритмы работы каждого ее компонента, их взаимодействия четко определены, включают конечное число действий, но операционная система не предполагает «самостоятельной» остановки и выдачи результатов. Еще одним примером «бесконечных» алгоритмов являются алгоритмы работы встроенных вычислительных систем, управляющих технологическими процессами с непрерывным циклом. Однако ограниченная трактовка – это как раз то, что требуется для ознакомления с основами алгоритмизации.

Алгоритмы, в соответствии с которыми решение поставленной задачи сводится к четырем арифметическим действиям, называются численными алгоритмами. Они задаются обычно в виде различных формул и схем: нахождение наибольшего общего делителя, наименьшего общего кратного, корней алгебраического уравнения невысокой степени и многого другого. Кроме того, существует множество предписаний, относящихся не к цифровым объектам: обработка текстовой информации и изображений, поиск информации в базах данных по заданным критериям.

30. Основные этапы и методы разработки алгоритма. Типы алгоритмов. Понятие блок-схемы. Способы записи алгоритмов.

Процесс решения любой задачи можно разбить на несколько этапов. Первыми шагами решения всегда являются анализ задачи и разработка (проектирование) алгоритма ее решения.

На этапе анализа задачи уточняется постановка задачи, исходные данные для ее решения и предъявляемые к решению требования и условия, при которых задача должна быть решена.

После того как получена четкая предметная постановка задачи, нужно сформулировать для нее математическую модель. Невозможно предложить набор правил, автоматизирующих этот этап математического моделирования. Большинство задач должны рассматриваться индивидуально. Но, разрабатывая модель, необходимо ответить на вопросы: Существуют ли решенные аналогичные задачи? Какие математические структуры больше всего подходят для описания того, что известно и что надо найти, какие отношения выявлены между объектами модели?

Как только задача четко сформулирована и для нее построена теоретическая модель, приступают к разработке алгоритма ее решения. Первое, что требуется от алгоритма, – это правильно реализовать функцию, которая каждому элементу из множества исходных данных ставит в соответствие возможный результат. Во-вторых, от алгоритма требуется такая реализация этой функции, чтобы время решения и затрачиваемые усилия были, по возможности, минимальными.

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

При использовании этого метода осуществляется декомпозиция общей задачи на точно определенные подзадачи и доказательство того, что если каждая задача решена корректно и полученные решения связаны друг с другом определенным образом, то исходная задача также будет решена корректно. Затем для полученных подзадач также повторяются процессы декомпозиции и доказательства корректности, которые повторяются до получения подзадач настолько простых, что их решение может быть сформулировано в терминах элементарных операций, понятных исполнителю алгоритма.

Алгоритмы решения задач могут реализовывать различные методы. При решении задач на ЭВМ широко используются методы эвристики и имитации.

Эвристический алгоритм позволяет найти некоторое приближенное, необязательно оптимальное решение задачи, его можно быстрее и проще реализовать, чем «точный» алгоритм. Кроме того, следует помнить, что существуют задачи, которые просто не имеют точных решений. При использовании этих методов все требования, предъявляемые к точному решению, разбиваются на два класса: те, которые должны быть удовлетворены (или могут быть легко удовлетворены), и те, по отношению к которым можно «пойти на компромисс». Не существует универсальной структуры, описывающей эвристические алгоритмы, но многие из них основываются или на методе частных целей, или на методе подъема.

Итерация – способ получения результата путем последовательных приближений к нему, начиная от некоторого заданного начального значения (или нескольких значений), в процессе которого повторяется заданная в алгоритме последовательность шагов.

Этот способ– один из наиболее часто используемых при вычислениях с помощью компьютера (примером являются многие численные методы решения задач).

Некоторые специалисты считают, что инструментом, упрощающим логическую структуру многих алгоритмов, является рекурсия – метод выражения решения задачи через ту же задачу, но имеющую меньшую размерность. Одним из мощных методов решения задач в математике (для доказательства утверждений, описания классов объектов и т.д.) является метод математической индукции. Рекурсия – это по сути та же индукция, применяемая к построению алгоритмов. При разработке рекурсивного, как и итерационного, алгоритма обязательно указывается условие, при котором рекурсия останавливается. Рекурсивные алгоритмы широко используются при решении задач с помощью компьютера (в частности, задач искусственного интеллекта).

По мере того как алгоритмы становятся все более сложными, растет трудность понимания того, как они работают, доказательства их правильности, исправления обнаруженных в них ошибок, внесения изменений. Поэтому очень важно правильно выполнить проектирование алгоритма и выбрать подходящий метод (методы) решения задачи (или подзадач, на которые при проектировании распалась исходная задача).

Для записи алгоритма в процессе решения задачи используются различные способы.

Выбор способа описания алгоритма зависит от предполагаемого способа его реализации, от исполнителя. Кроме того, существуют различные методологические подходы к разработке алгоритмов, которые также определяют, каким образом алгоритм будет описан.

Словесное описание – это описание на естественном языке, когда исполнителем алгоритма является человек. Процесс описания алгоритма в этом случае предполагает получение ответов на ряд вопросов. Словесное описание обычно используется на первых этапах разработки алгоритма решения задачи. Для того чтобы решить задачу с помощью компьютера, словесное описание ее решения необходимо формализовать.

Наиболее распространенным способом - описание в виде структурных блок-схем.

Блок-схема – это наглядное графическое представление алгоритма, в котором каждое предписание для исполнителя изображается плоской геометрической фигурой (блоком), а последовательность их выполнения указывается линиями со стрелками, соединяющими эти блоки. Иными словами, это ориентированная сеть (граф) с вершинами определенных типов.

Структурная блок-схема – это блок-схема, которая может быть выражена как композиция из трех основных (базовых) управляющих структур: следования, ветвления (выбора, альтернативы) и повторения (цикла, итерации).

Важная особенность структурных блок-схем в том, что каждая из элементарных управляющих структур, а, следовательно, и блок-схема, составленная из этих элементов, имеют один вход и один выход. Правила составления блок-схем: Овал – начало и конец алгоритма, Прямоугольник – функциональный блок, Ромб – выбор условия. Любой алгоритм может быть представлен структурной блок-схемой.

Графическое представление алгоритмов решения задач в различных областях с помощью специальных графических нотаций, диаграмм принято как при разработке информационных систем, при анализе и моделировании деятельности предприятий и организаций, так и в других случаях, когда необходимо формально описать деятельность предприятий (например, при сертификации предприятия).

Как только алгоритм описан, наступает этап реализации алгоритма. На этой стадии осуществляется написание кода программы для ЭВМ на одном из искусственных языков.

Для того чтобы сделать разработанный алгоритм «понятным» для выполнения на компьютере, его нужно записать с помощью языка программирования.

Описание алгоритма решения задачи на языке программирования представляет собой программу. Основное назначение программы – описание используемых при решении задачи данных (исходных и промежуточных данных, результатов вычислений) и шагов алгоритма в виде, пригодном для ввода в компьютер.

Эксплуатации программы предшествуют ее отладка, выявление и исправление синтаксических и логических ошибок, тестирование на широком диапазоне значений.

При всем многообразии алгоритмов решения задач в них можно выделить три основных вида вычислительных процессов: линейный; ветвящийся; циклический.

Линейный - вычислительный процесс, при котором все этапы решения задачи выполняются в естественном порядке следования записи этих этапов.

Ветвящийся - вычислительный процесс, в котором выбор направления обработки информации зависит от исходных или промежуточных данных (от результатов проверки выполнения какого-либо логического условия).

Цикл - многократно повторяемый участок вычислений. Вычислительный процесс, содержащий один или несколько циклов, называется циклическим. По количеству выполнения циклы делятся на циклы с определенным (заранее заданным) числом повторений и циклы с неопределенным числом повторений. Количество повторений последних зависит от соблюдения некоторого условия, задающего необходимость выполнения цикла. При этом условие может проверяться в начале цикла — тогда речь идет о цикле с предусловием, или в конце — тогда это цикл с постусловием.





Дата публикования: 2015-01-26; Прочитано: 52201 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.012 с)...