КАТЕГОРИИ: Архитектура-(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; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |