Иван Братко - Программирование на языке Пролог для искусственного интеллекта

Здесь есть возможность читать онлайн «Иван Братко - Программирование на языке Пролог для искусственного интеллекта» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 1990, ISBN: 1990, Издательство: Мир, Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Программирование на языке Пролог для искусственного интеллекта: краткое содержание, описание и аннотация

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

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

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

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

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

счетчик( А, L, N)

где А — атом, L — список и N — количество вхождений этого атома. В качестве первой попытки можно было бы определить счетчиктак:

счетчик( _, [], 0).

счетчик( A, [A | L], N) :- !,

счетчик( A, L, N1),

% N1 - число вхождений атома в хвост

N is N1 + 1.

счетчик( А, [ _ | L], N) :-

счетчик( A, L, N).

Теперь на нескольких примерах посмотрим, как эта процедура работает:

?- счетчик( а, [а, b, а, а], N).

N = 3

?- счетчик( a, [a, b, X, Y], Na).

Na = 3

...

?- счетчик( b, [a, b, X, Y], Nb).

Nb = 3

...

?- L=[a, b, X, Y], счетчик( а, L, Na), счетчик( b, L, Nb).

Na = 3

Nb = 1

X = a

Y = a

...

В последнем примере как X, так и Y после конкретизации получили значение а, и поэтому Nb оказалось равным только 1, однако мы хотели не этого. Нас интересовало количество реальных появлений конкретного атома , а вовсе не число термов, сопоставимых с этим атомом. В соответствии с этим более точным определением отношения счетчикмы должны теперь проверять, является ли голова списка атомом. Усовершенствованная программа выглядит так:

счетчик( _, [], 0).

счетчик( А, [В | L], N) :-

atom( В), А = В, !, % B равно атому А?

счетчик( A, L, N1), % Подсчет в хвосте

N is N1 + 1;

счетчик( А, L, N).

% Иначе - подсчитать только в хвосте

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

7.1.2. Решение числового ребуса с использованием nonvar

Известным примером числового ребуса является

D O N A L D

+

G E R A L D

-----------

R O B E R T

Задача состоит в том. чтобы заменить буквы D, О, N и т.д. на цифры таким образом, чтобы вышеприведенная сумма была правильной. Разным буквам должны соответствовать разные цифры, иначе возможно тривиальное решение, например, все буквы можно заменить на нули.

Определим отношение

сумма( N1, N2, N)

где N1, N2 и N представляют три числа данного ребуса. Цель cyммa(N1, N2, N)достигается, если существует такая замена букв цифрами, что N1+N2 = N.

Первым шагом к решению будет выбор представления чисел N1, N2 и N в программе. Один из способов - представить каждое число в виде списка его цифр. Например, число 255 будет тогда представляться списком [2, 2, 5]. Поскольку значения цифр нам не известны заранее, каждая цифра будет обозначаться соответствующей неинициализированной переменной. Используя это представление, мы можем сформулировать задачу так:

[ D, O, N, A, L, D ]

+ [ G, E, R, A, L, D ]

= [ R, О, B, E, R, T ]

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

?- сумма( [D, O, N, A, L, D], [G, E, R, A, L, D],

[R, O, В, E, R, T ).

Рис 71Поразрядное сложение Отношения в показанном iм разряде такие D 3i - фото 44

Рис. 7.1.Поразрядное сложение. Отношения в показанном i-м разряде такие: D 3i = (C1 + D 1i + D 2i) mod 10; C = (C1 + D 1i + D 2i) div 10 (div — целочисленное деление, mod — остаток от деления).

Для определения отношения сумманад списками цифр нам нужно запрограммировать реальные правила суммирования в десятичной системе счисления. Суммирование производится цифра за цифрой, начиная с младших цифр в сторону старших, всякий раз учитывая цифру переноса справа. Необходимо также сохранять множество допустимых цифр, т.е. цифр, которые еще не были использованы для конкретизации уже встретившихся переменных. Поэтому, вообще говоря, кроме трех чисел N1, N2 и N в рассмотрении должна участвовать некоторая дополнительная информация, как показано на рис. 7.1:

• перенос перед сложением

• перенос после сложения

• множество цифр, доступных перед сложением

• оставшиеся цифры, не использованные при сложении

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

сумма1( N1, N2, N, C1, С, Цифры1, Цифры)

Здесь N1, N2 и N — наши три числа, как и в отношении сумма, C1 — перенос справа (до сложения N1 и N2), а С — перенос влево (после сложения). Пример:

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Программирование на языке Пролог для искусственного интеллекта»

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


Отзывы о книге «Программирование на языке Пролог для искусственного интеллекта»

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

x