Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Velo(X,Y),not(rodom(leo,Z)),not(rodom(leo,Y))




Fact(grig,xarkov).

Студенти на велосипедах

Prizer(X1,Y1), prizer(X2,Y2),prizer(X3,Y3),

Mesto(Y1),mesto(Y2),mesto(Y3),

Mesto(odin). mesto(dva). mesto(tri).

Name(alex). name(pier). name(nike).

Solution(symbol,symbol,symbol,symbol,symbol,symbol)

Prizer(symbol,symbol)

Mesto(symbol)

CLAUSES

prizer(X,Y):-name(X),mesto(Y),X=pier,not(Y=dva),not(Y=tri);

name(X),mesto(Y),X=nike,not(Y=tri);

name(X),mesto(Y),not(X=pier),not(X=nike).

solution(X1,Y1,X2,Y2,X3,Y3):-name(X1),name(X2),name(X3),

Y1<>Y2,Y2<>Y3,Y1<>Y3,X1<>X2,X2<>X3,X1<>X3,!.

 

Звичайно, у наведеному прикладі для одержання розв'язку швидше використати таблицю, ніж програму.

 

Однак у складніших випадках таблиці стають багатовимірними і їхнє використання стає важчим, ніж програму. Розглянемо ще один приклад – логічну задачу (“Наука й життя ” №3, 1968).

Постановка задачі. П'ятеро студентів їдуть на велосипедах.

· Їх кличуть Сергій, Борис, Леонід, Григорій і Віктор.

· Велосипеди зроблені в п'ятьох містах: Ризі, Пензі, Львові, Харкові й Москві.

· Кожен із студентів народився в одному із цих міст, але жоден з них не їде на велосипеді, зробленому на його батьківщині.

· Сергій їде на велосипеді, зробленому в Ризі.

· Борис родом з Риги, у нього велосипед з Пензи.

· У Віктора велосипед з Москви.

· У Григорія велосипед з Харкова.

· Віктор родом з Львова.

· Уродженець Пензи їде на велосипеді, зробленому на батьківщині Леоніда.

Хто зі студентів родом з Москви?

Розв'язком цієї проблеми є наступна програма.

 

DOMAINS

name=simbol

 

PREDICATES

student(name) % ім'я студента

gorod(name) % назва міста

velo(name,name) %власник і «батьківщина» велосипеда fact(name,name) %факти про приналежність велосипедів fact1(name,name) % факти про місце народження rodom(name,name) % опис місця народження студента

rodom_penza(name) % опис для уродженця Пензи

 

CLAUSES

% 1 % student(X):- X=serg; X=boris; X=vict; X=grig; X=leo.

 

% 2 % gorod(Y):-Y=penza;Y=lvov;Y=moskva;Y=xarkov;Y=riga.

 

% 3 % fact(serg, riga). fact(boris,penza). fact(vict,moskva).

 

% 4 % velo(X,Y):- student(X),gorod(Y), fact(X,Y),!;

student(X),gorod(Y), not(fact(X, _)),not(fact(_, Y)).

 

% 5 % fact1(boris,riga). fact1(vict,lvov).

 

% 6 % rodom_penza(X):- student(X), Z=penza,not(fact1(X,_)),

gorod(U),not(U=Z),velo(X,U),rodom(leo,U).

 

% 7.1 % rodom(X,Z):- student(X),gorod(Z),fact1(X,Z),!;

%7.2 % student(X),not(X=leo),Z=penza,rodom_penza(X),!;

%7.3 % student(X),gorod(Z),not(fact1(_,Z)),X=leo,

not(Z=penza),student(K),not(fact1(K,_)),velo(K,Z);

%7.4 % student(X),not(X=leo),gorod(Z),not(Z=penza),

not(fact1(_,Z)), not(fact1(X,_)), gorod(Y),not(Y=Z),

 

Розглянемо опис фактів і правил у цій програмі:

1. Перші два правила описують можливі обмеження на значення предикатів student і gorod. Це необхідно, щоб здійснювати припустимі підстановки при пошуку рішення.

2. Факти, позначені цифрою три, описують відомі дані про те, де зроблено велосипеди деяких студентів.

3. Цифрою 4 позначене правило, що описує приналежність деякого велосипеда деякому студентові. Правило складається із двох альтернатив, розділених знаком “;”. Перша частина правила говорить, що студент X володіє велосипедом Y, якщо такий факт є. Друга частина правила дозволяє робити будь-які підстановки, які не суперечать відомим фактам. Предикат відсікання “!” тут зупиняє пошук нових варіантів, якщо виконано всі попередні йому умови.

4. Цифрою 5 позначено відомі факти про місце народження студентів.

5. Цифрою 6 описано знання про те, хто зі студентів може бути родом з Пензи. Це не можуть бути Борис або Віктор, оскільки відомо, що вони народились в інших містах, і має бути студент, велосипед якого зроблений на батьківщині Леоніда.

6. Правило 7, що складене з чотирьох частин, описує загальні знання про батьківщину кожного зі студентів:

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

b. Друга частина правила описує, хто може бути родом з Пензи.

c. Третя частина правила описує можливе місце народження Леоніда.

d. І, нарешті, четверта частина правила описує, з якого міста, окрім Пензи, можуть бути інші студенти, крім Леоніда.

Завантаживши цю програму, можна одержати шукане рішення.

 

9. Складання розкладів є однією з практичних задач, що часто зустрічаються.

Постановка задачі. П'ять студентів повинні відвідувати лекції весь тиждень, але за власними правилами, а саме:

1. Якщо прийшли Андрій і Дмитро, то Бориса бути не повинно, але якщо Дмитро не прийшов, то Борис повинен бути, а Віктор бути не повинен.

2. Якщо Віктор прийшов, то Андрія бути не повинно й навпаки.

3. Якщо Дмитро прийшов, то Григорія бути не повинно.

4. Якщо Бориса нема, то Дмитро повинен бути, коли нема також і Віктора, а якщо Віктор є, то Дмитра бути не повинно, але має бути Григорій.

5. Щодня студенти повинні приходити в різних комбінаціях.

Які це комбінації?

Для розв'язку цієї проблеми може бути використана програма.

DOMAINS

s=symbol

PREDICATES




Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 289; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.