My-library.info
Все категории

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

На электронном книжном портале my-library.info можно читать бесплатно книги онлайн без регистрации, в том числе Иван Братко - Программирование на языке Пролог для искусственного интеллекта. Жанр: Программирование издательство -, год 2004. В онлайн доступе вы получите полную версию книги с кратким содержанием для ознакомления, сможете читать аннотацию к книге (предисловие), увидеть рецензии тех, кто произведение уже прочитал и их экспертное мнение о прочитанном.
Кроме того, в библиотеке онлайн my-library.info вы найдете много новинок, которые заслуживают вашего внимания.

Название:
Программирование на языке Пролог для искусственного интеллекта
Издательство:
-
ISBN:
-
Год:
-
Дата добавления:
17 сентябрь 2019
Количество просмотров:
301
Читать онлайн
Иван Братко - Программирование на языке Пролог для искусственного интеллекта

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

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

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

Программирование на языке Пролог для искусственного интеллекта - читать книгу онлайн бесплатно, автор Иван Братко

разбиениесписка( [X], [X], []).

 % Разбиение одноэлементного списка

разбиениесписка( [X, Y | Список], [X | Список1],

 [Y | Список2]) :-

 разбиениесписка( Список, Список1, Список2).

3.10

можетзавладеть( состояние( _, _, _, имеет), [] ).

  % Ничего не надо делать

можетзавладеть( Состояние, [Действие | Действия]):-

 ход( Состояние, Действие, НовоеСостояние),

  % Первое действие

 можетзавладеть( НовоеСостояние, Действия).

  % Оставшиеся действия

3.11

линеаризация( [Голова | Хвост], ЛинейныйСписок ) :-

  % Линеаризация непустого списка

 линеаризация( Голова, ЛинейнаяГолова ),

 линеаризация( Хвост, ЛинейныйХвост ),

 конк( ЛинейнаяГолова, ЛинейныйХвост,

 ЛинейныйСписок ).

линеаризация( [], [] ). % Линеаризация пустого списка

линеаризация( X, [X] ).

 % Линеаризация объекта, не являющегося списком


% Замечание: при попытке получить от этой программы более

% одного варианта решения выдается бессмыслица

3.12

Терм1 = играет_в( джимми, и( футбол, сквош) )

Терм2 = играет_в( сьюзан, и( теннис,

 и( баскетбол, волейбол) ) )

3.13

:- op( 300, xfx, работает)

:- op( 200, xfx, в)

:- op( 100, xfx, нашем)

3.14

(a) А = 1 + 0

(b) В = 1 + 1 + 0

(c) С = 1 + 1 + 1 + 1 + 0

(d) D = 1 + 1 + 0 + 1

3.15

:- op( 100, xfx, входит_в)

:- op( 300, fx, конкатенация_списков)

:- op( 200, xfx, дает)

:- op( 100, xfx, и)

:- op( 300, fx, удаление_элемента)

:- op( 100, xfx, из_списка) % Принадлежность к списку


Элемент входит_в [Элемент | Список].

Элемент входит_в [Первый | СписокОстальных] :-

 Элемент входит_в СписокОстальных.


% Конкатенация списков

конкатенация_списков [] и Список дает Список.

конкатенация_списков [X | L1] и L2 дает [X | L3] :-

 конкатенация_списков L1 и L2 дает L3.


% Удаление элемента из списка

удаление_элемента Элемент из_списка

 [Элемент | ОстальныеЭлементы]

 дает ОстальныеЭлементы.

удаление_элемента Элемент из_списка

 [Первый | ОстальныеЭлементы]

 дает [Первый | НовСписОстЭлементов] :-

 удаление_элемента Элемент из_списка

 ОстальныеЭлементы дает НовСписОстЭлементов.

3.16

max( X, Y, X) :-

 X >= Y.

max( X, Y, Y) :-

 X <Y.

3.17

максспис( [X], X).

  % Максимум в одноэлементном списке

максспис( [X, Y | Остальные], Мах) :-

  % В списке есть по крайней мере два элемента?

максспис( [Y | Остальные], МаксОстальные),

 mах( X, МаксОстальные, Мах).

  % Мах наибольшее из чисел X и МаксОстальные

3.18

сумспис( [], 0).

сумспис( [Первый | Остальные], Сумма) :-

 сумспис( Остальные, СуммаОстальных),

 Сумма is Первый + СуммаОстальных.

3.19

упорядоченный ([]).

  % Одноэлементный список является упорядоченным

упорядоченный( [X, Y | Остальные] :-

 X =< Y,

 упорядоченный( [Y | Остальные] ).

3.20

подсумма( [], 0, []).

подсумма( [N | Список], Сумма, [N | Подмн]) :-

  % N принадлежит подмножеству


Сумма1 is Сумма - N,

 подсумма( Список, Сумма1, Подмн).


подсумма( [N | Список], Сумма, Подмн) :-

  % N не принадлежит подмножеству

 подсумма( Список, Сумма, Подмн).

3.21

между( N1, N2, N1) :-

 N1 =< N2.

между( N1, N2, X) :-

 N1 < N2,

 HoвoeN1 is N1 + 1,

 между( HoвoeN1, N2, X).

3.22

:- op( 900, fx, если).

:- op( 800, xfx, то).

:- op( 700, xfx, иначе).

:- op( 600, xfx, :=).


если Вел1 > Вел2 то Перем := Вел3

 иначе ЧтоУгодно :-

 Вел1 > Вел2,

 Перем = Вел3.

если Вел1 > Вел2 то ЧтоУгодно

 иначе Перем := Вел4 :-

 Вел1 =< Вел2,

 Перем = Вел4.

Глава 4

4.1

(a) ?- семья(членсемьи( _, Фамилия, _, _ ), _, []).

(b) ?- ребенок( членсемьи( Имя, Фамилия, _,

    работает( _, _ ) )).

(c) семья(членсемьи( _, Фамилия, _, неработает),

    членсемьи( _, _, _, работает( _, _ ) ),_ ).

(d) ?- семья( Муж, Жена, Дети),

    датарождения( Муж, дата( _, _, Год1) ),

    датарождения( Жена, дата( _, _, Год2) ),

    ( Год1 - Год2 >= 15;

      Год2 - Год1 >= 15 ),

    принадлежит( Ребенок, Дети).

4.2

близнецы( Ребенок1, Ребенок2) :-

 семья( _, _, Дети),

 удалить( Ребенок1, Дети, ДругиеДети),

  % Выделить первого ребенка

 принадлежит( Ребенок2, ДругиеДети),

 принадлежит( Ребенок1, Дата),

 принадлежит( Ребенок2, Дата).

4.3

n_элемент( 1, [X | L], X).

  % X - первый элемент списка [X | L]

n_элемент( N, [Y | L], X) :-

  % X - n-й элемент [Y | L]

 N1 is N - 1,

 n_элемент( N1, L, X).

4.4

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

4.5

допускается( S, [], _ ) :-

 конечное( S).

допускается( S, [X | Остальные], Макс_переходов) :-

 Макс_переходов > 0,

 переход( S, X, S1),

 НовыйМакс is Макс_переходов - 1,

 допускается( S1, Остальные, НовыйМакс).

допускается( S, Цепочка, Макс_переходов) :-

 Макс_переходов > 0,

 спонтанный( S, S1),

 НовыйМакс is Макс_переходов - 1,

 допускается( S1, Цепочка, НовыйМакс).

4.7

(а) ходконя( X/Y, X1/Y1) :-

     % Ход коня с поля X/Y на поле X1/Y1

    ( dxy( DX, DY);

     % Расстояния по направлениям X и Y

    dxy( DY, DX) ),

     % Или расстояния по направлениям Y и X

    X1 is X + DX,

     % X1 расположен в пределах шахматной доски

    надоске( X1),

    Y1 is Y + DY,

     % Y1 расположен в пределах шахматной доски

    надоске( Y1).


   dxy( 2, 1).   % 2 поля вправо, 1 поле вперед

   dxy( 2, -1).  % 2 поля вправо, 1 поле назад

   dxy( -2, 1).  % 2 поля влево, 1 поле вперед

   dxy( -2, -1). % 2 поля влево, 1 поле назад


   надоске( Коорд) :-

     % Координаты в пределах доски

    0 < Коорд,

    Коорд < 9.

(b) путьконя( [ Поле]). % Конь стоит на поле Поле

   путьконя( [S1, S2 | Остальные] ) :-

    ходконя( S1, S2),

    путьконя( [S2 | Остальные]).

(c) ?- путьконя( [2/1, R, 5/4, S, X/8] ).

Глава 5

5.1

(a) X = 1;

   X = 2

(b) X = 1;

   Y = 1;


   X = 1;

   Y = 2;


   X = 2;

   Y = 1;


   X = 2;

   Y = 2;

(c) X = 1;

   Y = 1;


   X = 1;

   Y = 2;

5.2

класс( Число, положительное) :-

 Число > 0, !.

класс( 0, нуль) :- !.

класс( Число, отрицательное).

5.3

разбить( [], [], []).

разбить( [X | L], [X | L1], L2) :-

 X >= 0, !,

 разбить( L, L1, L2).

разбить( [X | L], L1, [X | L2]) .

 разбить( L, L1, L2).

5.4

принадлежит( Некто, Кандидаты),

 not принадлежит( Некто, Исключенные)

5.5

разность( [], _, []).

разность( [X | L1], L2, L):-

 принадлежит( X, L2), !,

 разность( L1, L2, L).

разность( [X | L1], L2, [X | L]) :-

 разность( L1, L2, L).

5.6

унифицируемые( [], _, []).

унифицируемые( [Первый | Остальные], Терм, Список) : -

 not( Первый = Терм), !,

 унифицируемые( Остальные, Терм, Список).

унифицируемые( [Первый | Остальные], Терм,

 [Первый | Список] ) :-

 унифицируемые( Остальные, Терм, Список).

Глава 6

6.1

найтитерм( Терм) :-

  % Пусть текущий входной поток - это файл f

 read( Терм), !,


Иван Братко читать все книги автора по порядку

Иван Братко - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки My-Library.Info.


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

Отзывы читателей о книге Программирование на языке Пролог для искусственного интеллекта, автор: Иван Братко. Читайте комментарии и мнения людей о произведении.

Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*
Все материалы на сайте размещаются его пользователями.
Администратор сайта не несёт ответственности за действия пользователей сайта..
Вы можете направить вашу жалобу на почту librarybook.ru@gmail.com или заполнить форму обратной связи.