Нечеткая силлогистика

Рассмотрим силлогизм, который содержит следующие посылки:

1. Среди тех, кто носит цилиндр, почти все ходят с тросточкой.

2. Среди тех, кто ходит с тросточкой, почти все пьют мартини.

Возможно два варианта вывода в этом силлогизме:

1. Среди тех, кто носит цилиндр, многие пьют мартини.

2. Среди тех, кто носит цилиндр, почти все пьют мартини.

Силлогизм содержит нечеткие квантификаторы «почти все» и «многие». Возникает вопрос, какой из двух возможных выводов верный? Для ответа на этот вопрос рассмотрим население городка, относительно жителей которого сделаны утверждения, и введем следующие понятия.

Пусть а – количество тех людей, которые ходят в цилиндре;

b – количество тех людей, которые ходят с тросточкой;

с – количество тех людей, которые пьют только мартини;

Р(b/a) – доля тех, кто ходит с тросточкой, среди тех, кто носит цилиндр;

P(c/b) – доля тех, кто пьет только мартини, среди тех, кто ходит с тросточкой;

P(c/a) – доля тех, кто пьет только мартини, среди тех, кто носит цилиндр;

P(a) – доля тех, кто ходит в цилиндре, среди всех жителей городка;

P(b) – доля тех, кто ходит с тросточкой, среди всех жителей городка;

P(c) – доля тех, кто пьет мартини, среди всех жителей городка.

Построим таблицу сопряжений между а, b, с в долях от единицы.

 

  bc Øb Øc b Øc Øbc
а z1 z2 z3 z4
Øа z5 z6 z7 z8

 

Отобразим эти доли на диаграмме:

 
 

 
 

Сформулируем ограничения на z, вытекающие из условия задачи:

 
 

Обозначим мощности множеств a, b, c через |a|, |b|, |c|.

Введем величину ω = min{|a|, |b|, |c|}>0. Теперь можем ввести дополнительные ограничения на zi:

для множества а: z1 + z3 + z2 + z4 ≥ ω;

для множества b: z1 + z3 + z5 + z7 ≥ ω;

для множества с: z1 + z4 + z5 + z8 ≥ ω.

Запишем, чему равны доли P(b/a), P(с/b), P(c/a):

P(b/a) = (z1 + z3) / (z1 + z2 + z3 + z4);

P(с/b) = (z1 + z5) / (z1 + z3 + z7 + z5);

P(c/a) = (z1 + z4) / (z1 + z2 + z3 + z4).

Введем величину g = min {P(b/a), P(c/b), P(c/a)} ³ 0 и сформулируем еще одно ограничение: Адоли ³ g ³ 0.

Введем нечеткие квантификаторы К1 – «почти все»; К2 – «многие», тогда К1 соответствует P(b/a), и g < P(b/a) < 1.

«Почти все» ~ Р(с/а), «многие» по смыслу меньше, чем почти все, следовательно, Р(с/а) Î{b, g}, где b – число, меньшее g, которое соответствует квантификатору «многие».

Для того, чтобы узнать, какой из двух возможных выводов верен, нужно определить параметры ω, g, b (статистическая информация о жителях городка). Затем определить, в какой интервал попадает Р(с/а). В результате для определения Р(с/а) получается следующая задача нелинейного программирования:

max (P(c/a) = (z1 + z4) / (z1 + z2 + z3 + z4) ®min), где min берется по тем zi, которые используются в формуле, а max – по всем zi. Решением этой задачи является некоторая величина a, от значения которой и зависит ответ.

Если g £ a £ 1, то верен вывод, содержащий квантификатор «почти все», если b £ a £ g, то верен вывод, содержащий квантификатор «многие», если a < b, то не верен ни один из выводов.