У вас вопросы?
У нас ответы:) SamZan.net

варианта проанализировать эффективность безопасность и непротиворечивость решения

Работа добавлена на сайт samzan.net: 2016-03-30

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 4.3.2025

Цель работы: 

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

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

Задача:

Отец дал каждой из своих дочерей по 8 рублей на покупки. – Я хочу, чтобы к Восьмому марта каждая из вас, - сказал он,- купила подарки для тети Нади, тети Дины, тети Розы и тети Сони. Но при этом постарайтесь выполнить три условия. Каждый подарок должен стоить целое число рублей. Каждая из вас должна по-разному распределить восемь рублей на четыре подарка. Подарки для каждой женщины должны в сумме стоить одинаково. Девушки точно выполнили наказ своего отца. Люся истратила на подарок для тети Нади больше денег, чем на подарки для всех остальных женщин вместе. Клара израсходовала на подарок для тети Сони и Тети Розы столько же денег, сколько Люся истратила на покупку для двух других женщин. Самы дорогой подарок Марины предназначался для тети Дины, а Наташа самый дорогой из своих подарков преподнесла тете Розе. Пятую дочь звали Светлана. Как израсходовала каждая из девушек свои деньги?

Вариант задания: 26

Реализация данных условий логической задачи:

 

f(A,A,_).

f(I,A,B):-A<B,A1 is A+1,f(I,A1,B).

p(X,1,[X]):-!.

p(X,N,[I|Tail]):-X>0,f(I,1,X),X1 is X-I,N1 is N-1,p(X1,N1,Tail).

member(H,[H|_]).

member(H,[_|Tail]):-member(H,Tail).

 

dif(A,B):-member(X,A),not(member(X,B)),!.

 

solve(Lyusya,Klara,Marina,Natasha,Svetlana):-

%Условия Люси:

   p(8,4,Lyusya),

   Lyusya=[Nadya1,Dina1,Roza1,Sonya1],

   Nadya1>4,

%Условия Клары:

   p(8,4,Klara),

                   dif(Lyusya,Klara),

   Klara=[Nadya2,Dina2,Roza2,Sonya2],

   Sonya2+Roza2=:=Nadya1+Dina1,

%Условия Марины:

   p(8,4,Marina),

                   dif(Lyusya,Marina),

                   dif(Klara,Marina),

   Marina=[Nadya3,Dina3,Roza3,Sonya3],

   Dina3>Nadya3,

   Dina3>Roza3,

   Dina3>Sonya3,

%Условия Наташи:

   p(8,4,Natasha),

                   dif(Lyusya,Natasha),

                   dif(Klara,Natasha),

                   dif(Marina,Natasha),

   Natasha=[Nadya4,Dina4,Roza4,Sonya4],

   Roza4>Nadya4,

   Roza4>Dina4,

   Roza4>Sonya4,

%Условия Светланы:

   p(8,4,Svetlana),

                   dif(Lyusya,Svetlana),

                   dif(Klara,Svetlana),

                   dif(Marina,Svetlana),

                   dif(Natasha,Svetlana),

   Svetlana=[Nadya5,Dina5,Roza5,Sonya5],

%Глобальное 3-е условие Отца

   Nadya1+Nadya2+Nadya3+Nadya4+Nadya5=:=10,

   Dina1+Dina2+Dina3+Dina4+Dina5=:=10,

   Roza1+Roza2+Roza3+Roza4+Roza5=:=10,

   Sonya1+Sonya2+Sonya3+Sonya4+Sonya5=:=10.

?-solve(A,B,C,D,E),

write(' Lyusya: '),write(A),

write(' Klara: '),write(B),

write(' Marina: '),write(C),

write(' Natasha: '),write(D),

write(' Svetlana: '),write(E),nl,!.

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

Ответ:

   Lyusya: [5,1,1,1]

   Klara: [1,1,2,4]

   Marina: [1,3,2,2]

   Natasha: [2,2,4,0]

   Svetlana: [1,3,1,3]

Так как в лабораторной требовалось одно решение, то я просто решил отсечь 14 остальных возможных решений.

Выводы:

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

Логическое Программирование

Лабораторная работа №2: Язык Пролог и его применение для решения логических задач

   

 

      Группа:  8(О)-206(Б)

Студент:  Дорофеев Артем

Вариант задания:  14

9 декабря 2012 г.




1. Мы разные и мы вместе Воспитание доброты и терпимости как основы взаимоотношений в детском коллективе
2. вампиром Кейдом Иссаксоном
3. Контрольная работа- Ценные бумаги кредитных организаций, государственные и муниципальные ценные бумаг
4. прежнему не доверяя знатным людям он приблизил к себе придворного священника Благовещенского собора Сильв
5. наиболее близкие к человеку существа на Земле
6. КОНСПЕКТ ЛЕКЦИЙ Учебное пособие Под редакцией Н
7. Введение в профессию Управление персоналом
8. Фердинанд Брюнетьер
9. История инквизиции
10. Контрольная работа- Построение базы данных боксерской организации