WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!


Pages:     | 1 |   ...   | 3 | 4 ||

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

ментов) релевантного отношения.

Если у нескольких объектов совпадают характеристики, то будет найден первый объект на этой дороге. Пролог ищет "первую исти5.4. Управление поиском ну".

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

ждения (цели, подцели, вспомогательной теоремы) с целью нахо- 1. Операторы сравнения и альтернатива (или: or|;).

ждения иного пути (способа доказательства). 2. Множественность правил для одного предиката.

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

Основной механизм проверки истинности утверждений за- 4. Рекурсия, или самовызов, предиката.

ключается в подстановке. 5. Комбинация отсечения и искусственного отката.

Подстановкой, или конкретизацией, называется всякое 6. Использование предиката типа repeat. repeat:-repeat множество присваиваний вида x = t, где x – переменная, а t – терм.

Каждой переменной присваевается только одно значение. Пример Результат подстановки иногда называют подстановочным predicates примером. Если применение подстановки к утверждениям (вы- searchражениям) E1, E2 дает один и тот же подстановочный пример, та- search кая подстановка называется унификатором, сам подстановочный searchпроцесс – унификацией, а утверждения (предикаты) – унифици- f1(integer,string) руемыми. f2(integer,string) goal 5.3. Что такое шаблоны % Если search3 успешен, то write и выполнить search, % search2, иначе выполнить search, search2.

Шаблон на поток параметров – шаблон, формирующийся в % используется метод ОО – отсечение и откат.

зависимости от того, используются ли параметры в предикатном search3,!,write("Два первых факта удовлетворяют условызове для ввода данных (т. е. данные известны), либо для вывода вию"),fail;

данных (т. е. данные неизвестны).

search, Поточный вариант: если предикат ассоциируется с нескольsearch2;

кими различными шаблонами, то для каждого шаблона будет реа!.

лизована самостоятельная внутренняя программа, относящаяся к clauses 55 f1(1,"String1").

Заключение f1(2,"String2").

Со времени первой реализации (1973) Пролог проделал огf1(3,"String3").

ромный путь и к настоящему времени в ипостаси PDC Visual f1(4,"String4").

Prolog v.5.2 стал одним из наиболее технологичных средств разраf2(1,"String1").

ботки программного обеспечения для различных областей человеf2(0,"String2").

ческой деятельности. Тем не менее (многое зависит от мощности f2(-5,"String3").

конкретного компьютера), на нем не стоит писать ПО для систем, f2(4,"String4").

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

цели обратитесь к вечно молодому прадедушке – Фортрану – или % Используется "естественный откат – бэктрегинг" пакету MathLab).

% для поиска единственного успешного решения.

Достаточно сосредоточиться на логической стороне задачи, search:- и тут же станет очевидной истинная сила Пролога, заключающаяf1(X1,S1), ся в наглядности, красоте и простоте программ. Основываясь на f2(X2,S2), естественных для человеческого мышления логических принциX2

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

% удовлетворяющих условию Начните писать программы в среде PDC Visual Prolog v.5.2 и % Используется ОПН – откат после неудачи.

вряд ли вы захотите сменить это средство на какое-либо другое.

search2:- f1(X1,S1), f2(X2,S2), X2

search2:-!.

% Удовлетворяют ли условию 1-е 2 разных факта % Здесь важно, в каком месте использован откат. Если он % был бы поставлен после сравнения, то было бы найдено % единственное решение, как в предикате search.

search3:- f1(X1,S1), f2(X2,S2),!, X2

57 8. При помощи единственного невстроенного предиката (но Контрольные вопросы и задания использующего предикат типа repeat) откройте файл и читайте строки до появления некоторой определенной строки. Запомните 1. 32_DATA есть атом смещение до этой строки.

2. Что является переменной в структуре summer_time(июнь, 9. Найдите ошибку в программе перезаписи файла f1.txt в июль,август) файл f2.txt:

3. Сопоставимы ли термы date(D,M,Y) и date2(D1,M1,Y1) domains 4. Какая из последовательностей строк является правильным file=fIn;fOut фрагментом Пролог-программы:

predicates а) facts rewrite_file f1(string,integer,integer) goal f2(list1):-f3(list3) openread(fIn,"f1.txt"), б) clauses openwrite(fOut,"f2.txt"), p(X,Y,Z,S):-S1=X+Y,S2=S1+Z,S=S1+S2.

rewrite_file, q(вася).

closefile(fIn),closefile(fOut).

5. Является ли приведенный ниже фрагмент законченной clauses программой rewrite_file:-readln(fIn,S),!,write(fOut,S), rewrite_file;!.

goal 10. Пусть "modul.exe text.txt -1 pars" – командная строка.

comline(Koef), %Чтение параметра из командной строки Используя встроенный предикат fronttoken напишите фрагмент Z=Koef*sin(17), программы, берущий командную строку и выделяющий ее отwrite(Z).

дельные компоненты.

6. Пусть zi1,…,ziN – некоторые конкретные значения и на11. Как известно, продукционная модель представления значальное значение B равно 0. Внутренняя БД задана в виде ний есть набор продукций,каждая из которой представляется пяfacts теркой P(A,B,C,D,E), где f(z11,…,z1N) A – идентификатор продукции (любого типа: число, лексеf(z21,…,z2N) ма, выражение);

…………..

B – область действия продукции;

Верно ли определены правила суммирования первых элеC – условия выполнения ("запуска") продукции;

ментов фактов f D – собственно продукция, в данном случае понимаемая как P(B,S):-f(A,_,…,_),B1=B+A,P(B1,S).

некоторое множество операций, выполняемых над объектами, P(B,S):-S=B.

принадлежащими множеству B;

Соберите значения ziN в список, используя встроенный преE – множество операций, завершающих выполнение продикат findall.

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

растания значений.

Задание: напишите программу, которая 7. Создайте в программе некоторое множество фактов и сохраните их в файле. • моделирует предметную область при помощи множества фактов типа объект(имя_объекта,список_свойств), 59 Напишите программу, которая:

• генерирует события, относящиеся, к некоторому подмножеству объектов, • выделяет лексемы, • обрабатывает эти события при помощи соответствующих • подсчитывает частоту их повторения в тексте, продукций.

• классифицирует по признакам: лексема кириллическая, Например, игровой вариант: имеется командный пункт, лексема в латинице, лексема буквенно-цифровая, подходы к которому на фиксированных направлениях перекрыты • для каждой лексемы определяет их позиции в тексте в ко- дистанционно управляемыми минами, на других направлениях ординатах "строка, позиция в строке".

подходы контролирует артиллерия, в резерве находятся мобильСловарь представьте в виде фактов следующей структуры:

ные группы истребителей танков. Опишите различные варианты лексема(сама_лексема,призак_лексемы,частота_повторения, список_ отражения танковой атаки противника.

позиций).

12. Предположим, в некотором текстовом файле строки огПодберите тексты различных объемов (200 Кб, 500 Кб, лавления рубрик имеют следующую структуру:

1 Мб, 2 Мб) и постройте таблицу зависимости времени анализа от <4_пробела><римское_число>.<пробел><слово_с_большой объема текста.

_буквы>[<пробел><слово>] Преобразуйте текстовый файл в HTML-формат с лидирующим оглавлением. Каждый элемент оглавления оформите как гипертекстовую ссылку.

Пояснение: простенькая структура HTML-файла.

5 ББК 32.973 – 018я73 Изд-во Омск © Чанышев О.Г., 2004 ОмГУ 2004 ISBN 5-7779-0510-3 © Омский госуниверситет, 2004 2 ОГЛАВЛЕНИЕ Введение В средние века знание латинского и

Оглавление

%Элементы оглавления Здесь строка оглавления 1 Здесь строка оглавления 2 ……………………………………………….

%Возможно, некотрый текст Строка оглавления 1 %Текст рубрики Строка оглавления 2 …………………………………………..

13. Некоторый файл содержит текст на русском языке. Кроме слов русского языка (лексем), в нем содержатся целые и десятичные числа, а также лексемы, набранные латиницей (например, Windows XP, HTML, TM75 и т. п.).

61 Список используемой литературы 1. Братко И. Программирование на языке Пролог для искусственного интеллекта: Пер. с англ. М.: Мир, 1990.

2. Стерлинг Л., Шапиро Э. Искусство программирования на языке Пролог: Пер. с англ. М.: Мир, 1990.

3. Мартин Дж. Надежность программного обеспечения:

Учебное издание Пер. с англ. М.: Мир, 1986.

4. Построение экспертных систем. М.: Мир, 1987.

5. Лорьер Ж.-Л. Системы искусственного интеллекта: Пер. с фр. М.: Мир, 1991.

6. Швыркин И. Пролог. Генезис // Мир ПК. 2000. № 5.

7. Ин Ц., Соломон Д. Использование Турбо-Пролога: Пер. с Олег Георгиевич Чанышев англ. М.: Мир, 1993.

8. Логическое программирование и Visual Prolog. СПб.: БХВПРОграммирование в ЛОГике Петербург, 2003.

Учебное пособие Технический редактор Н.В. Москвичёва Редактор Е.В. Коськина Подписано в печать 11.11.04. Формат бумаги 60х84 1/16.

Печ. л. 4,0. Уч.-изд. л. 4,0. Тираж 100 экз. Заказ 582.

Издательство Омского государственного университета 644077, г. Омск-77, пр. Мира, 55а, госуниверситет 63

Pages:     | 1 |   ...   | 3 | 4 ||










© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.