Чтение онлайн

на главную - закладки

Жанры

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

Братко Иван

Шрифт:

обращение( [a, b, c, d], [d, c, b, a] ).

3.5. Определите предикат

палиндром( Список).

Список называется палиндромом, если он читается одинаково, как слева направо, так и справа налево. Например, 

[м, а, д, а, м]
.

3.6. Определите отношение

сдвиг( Список1, Список2)

таким образом, чтобы

Список2
представлял собой
Список1
, "циклически сдвинутый" влево на один символ. Например,

?- сдвиг( [1, 2, 3, 4, 5], L1),

 сдвиг1( LI, L2)

дает

L1 = [2, 3, 4, 5, 1]

L2 = [3, 4, 5, 1, 2]

3.7. Определите

отношение

перевод( Список1, Список2)

для перевода списка чисел от 0 до 9 в список соответствующих слов. Например,

перевод( [3, 5, 1, 3], [три, пять, один, три] )

Используйте в качестве вспомогательных следующие отношения:

означает( 0, нуль).

означает( 1, один).

означает( 2, два).

...

3.8. Определите отношение

подмножество( Множество, Подмножество)

где

Множество
и
Подмножество
 — два списка представляющие два множества. Желательно иметь возможность использовать это отношение не только для проверки включения одного множества в другое, но и для порождения всех возможных подмножеств заданного множества. Например:

?- подмножество( [а, b, с], S ).

S = [a, b, c];

S = [b, c];

S = [c];

S = [];

S = [a, c];

S = [a];

...

3.9. Определите отношение

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

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

Список1
и
Список2
и чтобы эти списки были примерно одинаковой длины. Например:

разбиениесписка( [а, b, с, d, e], [a, с, e], [b, d]).

3.10. Перепишите программу об обезьяне и бананах из главы 2 таким образом, чтобы отношение

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

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

Действия
будет такой последовательностью, представленной в виде списка ходов:

Действия = [ перейти( дверь, окно),

передвинуть( окно, середина),

залезть, схватить ]

3.11. Определите отношение

линеаризация( Список, ЛинейныйСписок)

где

Список
может быть списком списков, а
ЛинейныйСписок
 — это тот же список, но "выровненный"
таким образом, что элементы его подсписков составляют один линейный список. Например:

?- линеаризация( [а, d, [с, d], [], [[[e]]], f, L).

L = [a, b, c, d, e, f]

3.3. Операторная запись (нотация)

В математике мы привыкли записывать выражения в таком виде:

2*a + b*с

где + и * — это операторы, а 2, а, b, с — аргументы. В частности, + и * называют инфиксными операторами, поскольку они появляются между своими аргументами. Такие выражения могут быть представлены в виде деревьев, как это сделано на рис. 3.6, и записаны как прологовские термы с + и * в качестве функторов:

+( *( 2, а), *( b, с) )

Рис. 3.6. Представление выражения 2*а+b*с в виде дерева.

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

2*а + b*с

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

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

а + b
, Пролог поймет эту запись, как если бы написали
+(а, b)
. Для того, чтобы Пролог правильно воспринимал выражения типа
а + b*с
, он должен знать, что
*
связывает сильнее, чем
+
. Будем говорить, что
+
имеет более низкий приоритет, чем
*
. Поэтому верная интерпретация выражений зависит от приоритетов операторов. Например, выражение
а + b*с
, в принципе можно понимать и как

+( а, *( b, с) )

и как

*( +( а, b), с)

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

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

Поделиться:
Популярные книги

Курсант: Назад в СССР 10

Дамиров Рафаэль
10. Курсант
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Курсант: Назад в СССР 10

Вернуть невесту. Ловушка для попаданки 2

Ардова Алиса
2. Вернуть невесту
Любовные романы:
любовно-фантастические романы
7.88
рейтинг книги
Вернуть невесту. Ловушка для попаданки 2

Законы Рода. Том 3

Flow Ascold
3. Граф Берестьев
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 3

Любимая учительница

Зайцева Мария
1. совершенная любовь
Любовные романы:
современные любовные романы
эро литература
8.73
рейтинг книги
Любимая учительница

Девятый

Каменистый Артем
1. Девятый
Фантастика:
боевая фантастика
попаданцы
9.15
рейтинг книги
Девятый

Вперед в прошлое 2

Ратманов Денис
2. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 2

Калибр Личности 1

Голд Джон
1. Калибр Личности
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Калибр Личности 1

Совпадений нет

Безрукова Елена
Любовные романы:
любовно-фантастические романы
5.50
рейтинг книги
Совпадений нет

Кодекс Крови. Книга Х

Борзых М.
10. РОС: Кодекс Крови
Фантастика:
фэнтези
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга Х

Авиатор: назад в СССР 14

Дорин Михаил
14. Покоряя небо
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Авиатор: назад в СССР 14

Последний Паладин. Том 4

Саваровский Роман
4. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 4

Не грози Дубровскому!

Панарин Антон
1. РОС: Не грози Дубровскому!
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Не грози Дубровскому!

Кодекс Охотника. Книга XXIV

Винокуров Юрий
24. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XXIV

Средневековая история. Тетралогия

Гончарова Галина Дмитриевна
Средневековая история
Фантастика:
фэнтези
попаданцы
9.16
рейтинг книги
Средневековая история. Тетралогия