0 просмотров

Что означает частично нереализованный искусственный интеллект

Многие языки программирования включают списки в качестве одного из своих типов данных. Списки являются бесценной частью языков программирования искусственного интеллекта, а название основного языка ИИ, LISP, является сокращением от «обработка LISt». В разных языках программирования для выражения списков используются разные обозначения. Списки пролога выглядят так:

[м42, м40, м25, а21]

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

[[верблюд, эму, олень], [тигр, медведь, медведь]]

или списки структурированных объектов:

[дорога (m42, [j1, j2, j3, j3a]), дорога (m40, [j16, j15, j14, j13, j12, j11])]

или смесь типов данных:

[дорога(m42, [j1, j2, j3, j3a, j4, j5]), дорога(a42, [twycross]), зоопарк, [мартышка, тамарин, лемур]]

Список может быть даже пустым, в этом случае он выглядит так:

Зачем использовать списки?

Списки — это простой способ работать с непредсказуемыми ситуациями. Они бесценны в ситуациях, когда трудно, невозможно или нецелесообразно предсказывать данные, которые будут храниться и обрабатываться. Во многих программах искусственного интеллекта количество частичных решений задачи динамически изменяется во время вычислений.Например, в начале сеанса с пациентом система медицинской диагностики может рассматривать небольшое количество возможных заболеваний, которое расширяется до большего числа, когда обнаруживается больше симптомов, и, наконец, ограничивается одним или двумя возможными заболеваниями. Список был бы идеальной структурой данных для такого приложения.

Статья в тему:  Как запутать искусственный интеллект

Унификация и списки

Все рассмотренные до сих пор примеры унификации включали только предсказуемые, фиксированные структуры данных, такие как атомарные и структурированные объекты. Мы можем объединить один список с другим:

| ?- [a, b, c] = [Элем1,Элем2,Элем3]. Элемент1 = а, Элемент2 = b, Элемент3 = с?

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

| ?- Var = [a, b, c]. Вар = [а,б,с] ?

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

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

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

| ?- [a, b, c] = [Голова|Хвост]. Голова = а, Хвост = [b,c]?

В этом примере важно отметить, что конец списка сам по себе является списком. В этом примере перед конструктором списка был один элемент, но их может быть и больше:

| ?- [a, b, c] = [Голова1, Голова2|Хвост]. Хвост = [c], Head1 = a, Head2 = b?

Опять же, обратите внимание, что конец списка по-прежнему является самостоятельным списком, даже если он состоит только из одного элемента.Что произойдет, если мы расширим этот пример, включив в него три элемента перед конструктором списка?

| ?- [a, b, c] = [Hd1, Hd2, Hd3|Хвост]. Hd1 = a, Hd2 = b, Hd3 = c, Tail = [] ?

Все три элемента унифицированы с переменными перед конструктором списка, так что не с чем Хвост могут быть унифицированы. Это показано Хвост создается в пустой список '[]'.

Статья в тему:  Что такое представление знаний в искусственном интеллекте

Найдите время, чтобы пройти самопроверку 1.

Найдите время, чтобы пройти самопроверку 2.

Как обрабатываются списки?

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

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

  1. Голова = а, Хвост = [б, в]
  2. Голова = b, Хвост = [c]
  3. Голова = с, Хвост = []
  4. Список пустой ("[]«).

Обработку этого списка можно изобразить следующим образом:

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

Процедура обхода сети была следующей:

% 1 маршрут(Начало, Конец) :- путь(Начало, Конец). % 2 маршрут(Начало, Конец) :- путь(Начало, Через), маршрут(Через, Конец).

Первое, что нам нужно сделать, это записать форму заголовка правил. Первое правило будет иметь вид:

% 1 завершение dissect_list([]): -

Второе правило будет иметь вид:

% 2 рекурсивный dissect_list([Head|Tail]) :-

Далее нам нужно написать тело правил. Тело первого правила будет таким:

написать ([]), nl.

Тело второго правила будет таким:

запись (голова), nl, dissect_list (хвост).

Собрав это вместе, у нас есть процедура:

% 1 завершение dissect_list([]):- write([]), nl. % 2 рекурсивный dissect_list([Head|Tail]) :- write(Head), nl, dissect_list(Tail).

Найдите время, чтобы пройти самопроверку 3.

Эти страницы поддерживаются доктором Питером Хэнкоксом.

Статья в тему:  Как работает кодирование при создании искусственного интеллекта

Последнее обновление: октябрь 1998 г.

голоса
Рейтинг статьи
Ссылка на основную публикацию
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
Adblock
detector