IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Логическая игра Кэрролла!, Силлогизмы
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Руслан

Репутация: -  0  +


Ребяты, нужно написать программу, которая бы решала Силлогизмы, самые обыкновенные (хотя бы) с двумя посылками. Не могу разработать алгоритм! Может кто-нить может подсказать что по этому поводу, а то ощущаю себя полным дураком!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Michael_Rybak
*****

Группа: Пользователи
Сообщений: 1 046
Пол: Мужской
Реальное имя: Michael_Rybak

Репутация: -  32  +


Цитата
Сначала определяешь M, потом S и P. Сразу получаешь фигуру...


Это что касается классификации.

А вот что касается решения.

Силлогизм записываешь в терминах теории множеств.

Код

Все А суть В            -  A^B  = A    -   -A^ B      пусто
Все А не суть В         -  A^-B = A    -   -A^-B      пусто
Некоторые А суть В                     -    A^ B   не пусто
Некоторые А не суть В                  -    A^-B   не пусто
Некоторые А суть не В                  -    A^-B   не пусто
Ни один А не суть В                    -    А^ B      пусто
Ни один А не суть не В  -  А^-B = A    -    A^ B = не пусто



Записываешь обе предпосылки в такой форме.

Получается, у тебя есть утверждения для (M, P) и для (S, M), а тебе надо для (S, P).

Т.е. тебе нужно получить S ^ P, S ^ -P, -S ^ P, -S ^ -P. Для каждого из мы либо скажем, пусто ли оно, либо скажем, что сказать нельзя.

Для этого переберем все способы заполнения такой матрицы

Код
S M P ?
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1


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

Например, "не пусто", записанно в пятой строке (1 0 0) означает, что пересечение множеств S, -M и -P - не пусто.

Поскольку нас интересует результат сравнения S и P, то, если обе предпосылки выполняются, мы вычисляем S^P, S^-P, -S^P и -S^-P, постоянно накапливая результат.

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

Все люди смертны
Некоторые ученые люди
_______________
Некоторые ученые смертны.

S = ученые, M = люди, P = смертны

Пусть в переборе сейчас получена такая матрица:

Код
S M P ?
0 0 0 не пусто
0 0 1 пусто
0 1 0 пусто
0 1 1 не пусто
1 0 0 пусто
1 0 1 не пусто
1 1 0 не пусто
1 1 1 пусто

Проверим предпосылки


Все люди смертны = M ^ P = M = -М ^ P пусто
Некоторые ученые люди = S ^ M не пусто


Проверим, что -М ^ P пусто.

Выполняем операции так: V берет лучшее из двух ("пусто" хуже "не пусто").

-M ^ P = -M^P^S V -M^P^-S = S^-M^P V -S^-M^P = f(101) V f(001) = "пусто" V "пусто" = "пусто".

Проверим, что S ^ M не пусто.

S ^ M = S^M^P V S^M^-P = f(111) V f(110) = "пусто" V "не пусто" = "не пусто".

Предпосылки выполняются.

Вычисляем S^P, S^-P, -S^P и -S^-P. Рассмотрим, например, S^P.

S^P = S^P^M V S^P^-M = S^M^P V S^-M^P = f(111) V f(101) = "пусто" V "не пусто" = "не пусто".

Итак, только что получен результат: существует возможность того, что предпосылки выполняются, и S^P не пусто.

Если потом, для других вариантов заполнения матрицы (всего их 2^8), будет получен результат, существует возможность того, что предпосылки выполняются, и S^P пусто, это будет означать, что из данного силлогизма нельзя однозначно сказать, пусто ли S^P.

То же самое проделываем для S^-P, -S^P и -S^-P.

В результате получаем выводы, которые толкуем по той же таблице:

Код
Все А суть В            -  A^B  = A    -   -A^ B      пусто
Все А не суть В         -  A^-B = A    -   -A^-B      пусто
Некоторые А суть В                     -    A^ B   не пусто
Некоторые А не суть В                  -    A^-B   не пусто
Некоторые А суть не В                  -    A^-B   не пусто
Ни один А не суть В                    -    А^ B      пусто
Ни один А не суть не В  -  А^-B = A    -    A^ B = не пусто

Твой препод довольно крут, если ему это всё (с классификацией) писать часа 3 ;)

Может он все таки хочет чтобы ты просто всё if'ами расписал? Это будет проще.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Руслан   Логическая игра Кэрролла!   7.03.2007 21:41
Michael_Rybak   Формализовать их сначала надо. Ты ж не будешь сема…   7.03.2007 23:06
Руслан   Тебе наверное определенный вид силлогизмов надо р…   8.03.2007 10:54
Michael_Rybak   Перечитай мое сообщение и примени его к своему при…   9.03.2007 7:54
Руслан   Вот это я понимаю, Ввод ведеться следующим образом…   9.03.2007 12:57
Michael_Rybak   http://ru.wikipedia.org/wiki/%D0%A1%D0%B8%....83.D…   9.03.2007 17:59
Руслан   Спасибо, буквально открыл глаза, ща попробую и нап…   9.03.2007 18:55
Michael_Rybak   Это что касается классификации. А вот что касае…   9.03.2007 19:21
Руслан   ну ты мозг! я то и подумал описывать ифами, а …   9.03.2007 19:44
Michael_Rybak   Если ты недавно начал заниматься, то я думаю, преп…   9.03.2007 20:36
Руслан   парсило строки.. Че со строками делало? И мне н…   9.03.2007 21:51
Michael_Rybak   Парсило. Парсило :) Ну разбирало что там в строке …   10.03.2007 4:31
Руслан   Программу написал с тупим перебором по 19 верным м…   11.03.2007 21:34
Руслан   Пасибо!   10.03.2007 5:20


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 17.05.2024 13:07
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name