Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.08;
Скачать: CL | DM;

Вниз

Опять задачка :-)   Найти похожие ветки 

 
Колдун ©   (2006-09-13 22:37) [0]

Странно как-то: неужели так просто:

Упростить:

f(x;y;z) = not ( not(x)  or y or z and x and not(y) )

Получится x and not(y) and  (not(z) or not(x) or y) ?


 
default ©   (2006-09-13 22:39) [1]

в чём вопрос?
протестируй, благо вариантов входных данных всего 8


 
Колдун ©   (2006-09-13 22:43) [2]

вопрос в том, верно ли я сделал


 
default ©   (2006-09-13 22:44) [3]

протестируй, я навскидку не могу сказать да и всматриваться лень если честно


 
Колдун ©   (2006-09-13 22:45) [4]

Лень-матушка.


 
guav ©   (2006-09-13 22:49) [5]

> x and not(y) and  (not(z) or not(x)or y )

подчёркнутое явно лишнее, т.к. противоречит жирному . всматриваться подробнее лень.


> Лень-матушка.

Тогда не упрощай.


 
Колдун ©   (2006-09-13 22:50) [6]

1. Может, поможешь с решением?
2. Это я про дефолта=)


 
guav ©   (2006-09-13 22:58) [7]

x and not y and  not z вроде


 
Alx2 ©   (2006-09-13 23:00) [8]

>guav ©   (13.09.06 22:58) [7]

Ага. Это минимум.


 
default ©   (2006-09-13 23:06) [9]

у меня вышло
not (x and not(y))
это если операции слева направа выполняются


 
Alx2 ©   (2006-09-13 23:12) [10]

>default ©   (13.09.06 23:06) [9]

Это записать короче можно: not (x) or y
Но оно не эквивалентно [0]


 
default ©   (2006-09-13 23:14) [11]

Alx2 ©   (13.09.06 23:12) [10]
операции слева направо идут или учитывается приоритет and над or?


 
Alx2 ©   (2006-09-13 23:17) [12]

>default ©

C приоритетом, кажется.


 
guav ©   (2006-09-13 23:22) [13]

кстати, даже [7] не эквивлентно 0. т.к. возможен сайд-эффект при оценивании x и y :-)


 
Mike Petrichenko   (2006-09-13 23:22) [14]


> guav ©   (13.09.06 22:58) [7]
> x and not y and  not z вроде

x and not y and z


 
Alx2 ©   (2006-09-13 23:26) [15]

>Mike Petrichenko   (13.09.06 23:22) [14]
x and not y and not z


 
default ©   (2006-09-13 23:29) [16]

Alx2 ©   (13.09.06 23:17) [12]
я не учитывал приоритет


 
Alx2 ©   (2006-09-13 23:31) [17]

>default ©   (13.09.06 23:29) [16]
Тогда
not(x) or y or not(z)
:)


 
Pavia ©   (2006-09-13 23:33) [18]

Неа
x and y and not(z)


 
palva ©   (2006-09-13 23:36) [19]


> guav ©   (13.09.06 22:58) [7]
> x and not y and  not z вроде

Голосую "за".


 
Pavia ©   (2006-09-13 23:37) [20]

x and not (y or z )


 
Alx2 ©   (2006-09-13 23:40) [21]

Выражение
not ( not(x)  or y or z and x and not(y) )
принимает значение true
при x = true, y = false, z=false.
Во всех остальных случаях принимает значение false.
Отсюда результат (ДНФ): x and not (y) and not (z)

C безприоритетным:
not ((((not(x)  or y) or z) and x ) and not(y) )
принимает false при
x = true y = false z=true
отсюда результат (КНФ): not (x ) or (y) or not(z)


 
default ©   (2006-09-13 23:41) [22]

Alx2 ©   (13.09.06 23:31) [17]
быть может, перепроверять не буду - лень
думал типа если x ложь в скобке всегда будет нуль значит в итоге 1
если х истина...
z остался неудел


 
guav ©   (2006-09-13 23:41) [23]

procedure Test(F: TF; S: string);
var I: Integer; T: DWORD; Valid: Boolean;
begin
 Valid := (N0_a(X, Y, Z) = F(X, Y, Z));
 T := GetTickCount();
 for I := 0 to 20000000 do
   F(X, Y, Z);
 T := GetTickCount() - T;
 Form1.Memo1.Lines.Add(Format(
   "%s :  Valid:%s Ticks: %d", [S, BoolToStr(Valid, True), T]));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 Test(N0_a, "N0_a");
 Test(N0_b, "N0_b");
 Test(N7, "N7");
 Test(N9, "N9");
 Test(N14, "N14");
 Test(N15, "N15");
 Test(N17, "N17");
 Test(N18, "N18");
end;

Memo1
N0_a :  Valid:True Ticks: 281
N0_b :  Valid:True Ticks: 188
N7 :  Valid:True Ticks: 250
N9 :  Valid:False Ticks: 172
N14 :  Valid:False Ticks: 203
N15 :  Valid:True Ticks: 172
N17 :  Valid:False Ticks: 156
N18 :  Valid:False Ticks: 219


 
Alx2 ©   (2006-09-13 23:45) [24]

>guav ©   (13.09.06 23:41) [23]

Еще [20] - верный и самый шустрый, кажется


 
default ©   (2006-09-13 23:45) [25]

Alx2 ©   (13.09.06 23:40) [21]
да, невнимательность
лабуда всё это:) рутина)


 
DiamondShark ©   (2006-09-13 23:45) [26]

ну, уже голосовать пошли ;)

а ведь фунция для упрощения в уме.

легко видеть, что для x=false функция обращается  в false, а для x=true функция от x не зависит.

осталось протабулировать 4 значения.

легко видеть, что для y=true функция обращается  в false, а для y=false функция от y не зависит.

осталось два варианта: x=true, y=false, z in [true, false], из которых функция обращается в true только при z=false, откуда автоматически получается

x and not(y) and not(z)

задачка на 30 секунд.


 
default ©   (2006-09-13 23:47) [27]

DiamondShark ©   (13.09.06 23:45) [26]
это есть рутина:) не интересно


 
guav ©   (2006-09-13 23:49) [28]


> [24] Alx2 ©   (13.09.06 23:45)


var
 X: Cardinal = $0000FFFF;
 Y: Cardinal = $00FF00FF;
 Z: Cardinal = $0F0F0F0F;


function N20(X, Y, Z: Cardinal): Cardinal;
begin
 Result :=x and not (y or z )
end;


N0_a :  Valid:True Ticks: 203
N0_b :  Valid:True Ticks: 203
N7 :  Valid:True Ticks: 187
N9 :  Valid:False Ticks: 172
N14 :  Valid:False Ticks: 172
N15 :  Valid:True Ticks: 172
N17 :  Valid:False Ticks: 172
N18 :  Valid:False Ticks: 156
N20 :  Valid:True Ticks: 188


 
palva ©   (2006-09-13 23:54) [29]

> задачка на 30 секунд.
Тупо раскрываем скобки и приводим подобные (подобных не оказалось). Четыре строчки на клочке туалетной бумаги.


 
Колдун ©   (2006-09-14 10:32) [30]

1. Решение идёт без ДНФ, только с помощью законов алгебры логики.
2. В таком случае можете его расписать?


 
palva ©   (2006-09-14 11:57) [31]


> Колдун ©   (14.09.06 10:32) [30]
> 2. В таком случае можете его расписать?

f(x;y;z) = not ( not(x)  or y or z and x and not(y) ) = // убираем первый not
x and not y and not(z and x and not y) = // убираем not перед скобками
x and not y and (not z or not x or y) = // раскрываем скобки. Члены ДНФ я выделяю скобками
(x and not y and not z) or (x and not y and not x) or (x and not y and y) = // вторая и третья скобки равны false. Остается первая
x and not y and not z



Страницы: 1 вся ветка

Текущий архив: 2006.10.08;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.062 c
8-1142157100
DJSynth
2006-03-12 12:51
2006.10.08
Генератор сигналов в Delphi


2-1159095853
Серый
2006-09-24 15:04
2006.10.08
Функция Int(n)


2-1158425181
PSPF2003
2006-09-16 20:46
2006.10.08
StrToHex?


2-1158325089
misskio
2006-09-15 16:58
2006.10.08
формирование таблицы из выражения Execute


15-1158157573
oldman
2006-09-13 18:26
2006.10.08
Надо купить комп. Все новые камни уже 64.