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

> ВНИМАНИЕ!

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

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

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


Новичок
*

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

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


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


Michael_Rybak
*****

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

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


Формализовать их сначала надо. Ты ж не будешь семантику разбирать сам smile.gif

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

Например, фраза "все кролики любят морковку, если только на них не смотрят искоса" будет для юзера выглядеть как фраза "ALL x є С: NOT F(x) -> x є A", где С - множество кроликов, x - элемент множества кроликов, А - подмножество кроликов, которые любят морковку, F(x) - функция, возвращающая True тогда и только тогда, когда на кролика смотрят искоса.

Вот. И юзер должен сначала указать, что есть у нас множества A и C, что есть функция F из А в {True, False}, что между множествами А и С имеет место отношение "А - подмножество С", а дальше задавать формулы аналогичные той, которую я привел.

Вообще это все сложновато как для дз. Тебе наверное определенный вид силлогизмов надо решать. Какой?

Сообщение отредактировано: Michael_Rybak -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Цитата(Michael_Rybak @ 8.03.2007 2:06) *

Тебе наверное определенный вид силлогизмов надо решать. Какой?


Нужно решать силлогизмы следующего типа, например:

Все люди смертны
Все ученые люди

_______________
Все ученые смертны.

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


Michael_Rybak
*****

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

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


Перечитай мое сообщение и примени его к своему примеру.

Юзер не должен вводить "Все люди смертны". Юзер должен вводить ALL x: x in A -> x in B.

А точнее не вводить вот так прямо, а выбирать: задаю правило вида "все из А являются В". Понимаешь к чему я вообще это всё?

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


Новичок
*

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

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


Вот это я понимаю,
Ввод ведеться следующим образом: Все (Некоторые, Ни один) Х Суть (Не суть) (не) У
Вся проблема в том, каким образом мне из двух посылок получить заключение и как определить модус!!!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Michael_Rybak
*****

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

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


http://ru.wikipedia.org/wiki/%D0%A1%D0%B8%....83.D1.81.D1.8B

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

Теперь http://www.refstar.ru/data/r/id.9903_1.html

Код

      n общеутвердительные (А)
      n общеотрицательные (Е)
      n частноутвердительные (I)
      n частноотрицательные (O

  Первая фигура

           AAA   -    Barbara
           EAE   -     Celarent
           AII   -     Darii
           EAI   -     Ferio

           AAI   -     Barbari
           EAO   -     Celaront

      Вторая фигура

            EAE   -    Cesare
            AEE   -    Camestres
            EIO   -    Festino
            AOO   -    Baroco

           EAO   -     Cesaro
           AEO   -     Cameostro

      Третья фигура

            AAI   -    Darapti
            IAI   -    Disamis
            AII   -    Datisi
            EAO   -    Felapton
            OAO   -    Bocardo
            EIO   -    Ferison

      Четвертая фигура

            AAI  -     Bramantip
            AEE  -     Camenes
            IAI  -     Dimaris
            EAO  -     Fesapo
            EIO   -    Fresison

           AEO   -     Cameno
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

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

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


Спасибо, буквально открыл глаза, ща попробую и напишу чо получилось!
И вот еще вопросик!!!! Как определить, что силлогизм неверен или частично неверен?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

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

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


ну ты мозг! я то и подумал описывать ифами, а ща растерялся и не знаю, как закодить то что ты накатал! я не силен в программировании, недавно начал им заниматься!

Добавлено через 2 мин.
А препод действительно крут, он эту прогу писал на бэйсике, си++, прологе, паскале, а меня заставил на Делфи и красиво и тогда экзамен с отметкой олично! а при хорошем раскладе, сказал что на 5 курсе можно будет и диплом хороший написать, по этой теме!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Michael_Rybak
*****

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

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


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

Главное не запутаться ;)

Диплом - да, интересно повозиться. Хотя бы чтобы оно парсило строки. И там, окончания понимало ("ученый-ученые").
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

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

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


Цитата(Michael_Rybak @ 9.03.2007 23:36) *

парсило строки..

Че со строками делало?

И мне нужно определить к какому модусу относится силлогизм!! Отсюда вопрос: Как проверить что в Combo Box, выбран именно интересующий нас Items?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Michael_Rybak
*****

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

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


Парсило. Парсило smile.gif Ну разбирало что там в строке написано.

У комбобокса есть что-то типа SelectedItem или ItemIndex, я уже не помню. Посмотри.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Новичок
*

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

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


Пасибо!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Новичок
*

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

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


Программу написал с тупим перебором по 19 верным модусам, в дальнейшем буду работать над привидением ее в приемлимый вид! Спасибо тебе, Михаил! good.gif

Добавлено через 9 мин.
А я вот еще думаю, как реализовать саму игру придуманную Кэрроллом, с квадратами и диаграмами!
Книжка Кэрролла "Логическая игра" прикреплена, если будут идеи делитесь!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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