IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Вывод булевых функций, Подскажите, пожалуйста
Tri
сообщение 29.10.2008, 18:06
Сообщение #1


Студент
**

Группа: Продвинутые
Сообщений: 94
Регистрация: 26.10.2007
Город: Тюмень
Учебное заведение: ТГНГУ
Вы: студент



Здравствуйте.
Есть такое задание: вывести все значения всех булевых функций от трёх переменных(только с конъюнкцией и дизъюнкцией).
Также есть условие: значения равных функций вывести только один раз, и не выводить значения функций, которые при всех 1 на входе дают 1 и на выходе.

В задании сказано, что таких функций должно получиться 34, если я всё правильно поняла, но у меня получается 35:
xyz - 7 функций, x v y v z - 7, x v yz, y v xz, z v xy - ещё 21.
Подскажте, пожалуйста, в чём может быть ошибка. Или я неправильно поняла задание?

Ещё я попробовала реализовать программу, пока только для 2 функций:
Код
var
i,j,k,a:integer;
function con(i,j,k: integer): integer;
begin
CON:=i and j and k;
end;

function dis(i,j,k: integer): integer;
begin
DIS:= i or j or k;
end;

begin
Write('x y z    x^y^z');
Writeln;
  for i:=0 to 1 do
  begin
    for j:=0 to 1 do
      for k:=0 to 1 do
      begin
      if (i=1) and (j=1) and (k=1) then Break;
      Write(i,' ',j,' ',k);
      a:=CON(i,j,k);
      Write('      ', a);
      Writeln;
      end;
  end;
  Writeln;
  Write('x y z  x v y v z');
Writeln;
  for i:=0 to 1 do
  begin
    for j:=0 to 1 do
      for k:=0 to 1 do
      begin
      if (i=1) and (j=1) and (k=1) then Break;
      Write(i,' ',j,' ',k);
      a:=DIS(i,j,k);
      Write('      ', a);
      Writeln;
      end;
  end;
  Readln;
end.

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

Заранее огромное спасибо!
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
malk
сообщение 4.11.2008, 8:13
Сообщение #2


Школьник
*

Группа: Продвинутые
Сообщений: 24
Регистрация: 4.10.2007
Город: СПб



Цитата
Есть такое задание: вывести все значения всех булевых функций от трёх переменных(только с конъюнкцией и дизъюнкцией).
Также есть условие: значения равных функций вывести только один раз, и не выводить значения функций, которые при всех 1 на входе дают 1 и на выходе.

1. Если в булевой функции используется только конъюнкция и дизъюнкция, то при всех 1 на входе на выходе всегда будет 1.
2. Если же разрешена и инверсия, то получаем полный базис. У меня получилось что различных функций, которые зависят строго от 3 параметров и от всех 1 на выходе дают 0 имеется 109.
Цитата
В задании сказано, что таких функций должно получиться 34, если я всё правильно поняла, но у меня получается 35:
xyz - 7 функций, x v y v z - 7, x v yz, y v xz, z v xy - ещё 21.

Если правильно понял, вы путаете функции и значения функции от различных параметров.
xyz - это одна функция.

По программе:
1. В паскале есть логические функции: and, or, not, xor. И не нужно их переписывать.
2. Для второй функции вычисляется совсем не то, что указано.

Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Tri
сообщение 5.11.2008, 13:35
Сообщение #3


Студент
**

Группа: Продвинутые
Сообщений: 94
Регистрация: 26.10.2007
Город: Тюмень
Учебное заведение: ТГНГУ
Вы: студент



Цитата
Если правильно понял, вы путаете функции и значения функции от различных параметров.

Там, конечно, 7 значений функции, а не функции:)
По программе всё исправила.
Инверсия по заданию допускается.

А есть ли среди этих 109 полученных функций одинаковые равные функции? Может, если их убрать, то их меньше получится?
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
malk
сообщение 5.11.2008, 13:54
Сообщение #4


Школьник
*

Группа: Продвинутые
Сообщений: 24
Регистрация: 4.10.2007
Город: СПб



Для функции от 3-х переменных возможно 2^3=8 комбинаций переменных.
Следовательно, всего различных функций 2^8=256. Функций, которые от (1,1,1) дают 0 256/2=128.
Функция-константа 1. Функций, зависищих строго от одного переменного 3*1=3. Функций, зависищих строго от двух переменных 3*5=15. 128-1-3-15=109.
Может, если привести задание точно и полностью станет понятнее?
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 



- Текстовая версия Сейчас: 25.5.2025, 16:49

Книжки в помощь: "Сборник заданий по высшей математике" Кузнецов Л.А., "Сборник заданий по высшей математике" Чудесенко В.Ф., "Индивидуальные задания по высшей математике" Рябушко А.П., и другие.




Зеркало сайта Решебник.Ру - reshebnik.org.ru