Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите упростить логическое выражение
Форум «Всё о Паскале» > Образование и наука > Математика
Shmanich
A + notA & (B+C) + (not A + D + not G) & (B+D) & (C + notD + G&H)

"+" - логическое сложение.

"&" - логическое умножение.

"not" - отрицание

Для решения понадобится основные законы алгебры логкики (прикрепил).
Также прикрепил файл, в котором я писал решить это чудо, blink.gif Расписал некоторые свои мысли.
Бъюсь над ним уже две недели. sad.gif.


Lapp
В принципе, тут же все видно невооруженным глазом..
Я не вполне понял, что ты называешь левыми/правыми/средними частями, но первые два слагаемых это просто в натуре первые три из ответа. Остальное тоже смахивает на правду, учитывая наличе B во втором..
А что, вычитания в природе пока нет? не выросло?.. Впрочем, я еще не смотрел файл с законами - мож и есть..
volvo
"Надо выйти на ответ..." Может, и надо, а не получится. Минимизация картой Карно дает
A + notA(B+C) + DGH
, что никак не равно тому, что ты хочешь получить... Карты Карно редко ошибаются smile.gif
Lapp
Цитата(volvo @ 10.06.2010 11:06) *
"Надо выйти на ответ..." Может, и надо, а не получится. Минимизация картой Карно дает
A + notA(B+C) + DGH
, что никак не равно тому, что ты хочешь получить... Карты Карно редко ошибаются smile.gif

Стоп, стоп, стоп... но это же оно и есть smile.gif)

A+\A(B+C) sure is A+B+C

smile.gif она просто не доработала до конца ))
Shmanich
Цитата(Lapp @ 10.06.2010 14:00) *

В принципе, тут же все видно невооруженным глазом..


А я вот не вижу. sad.gif 15 подобных примеров упростил, а этот никак.

Цитата(Lapp @ 10.06.2010 14:00) *

Я не вполне понял, что ты называешь левыми/правыми/средними частями


Это я для удобства обозначил

Цитата(Lapp @ 10.06.2010 14:00) *

А что, вычитания в природе пока нет? не выросло?.. Впрочем, я еще не смотрел файл с законами - мож и есть..


Вчитайся, там все просто smile.gif

Прикрепил еще один вариант решения.

PS: Ответ задачи указан верно. Это проверяеся по таблице истинности. Таблицу можно составить в программе
Logi Table
Lapp
Цитата(Shmaniche @ 10.06.2010 11:52) *
Вчитайся, там все просто smile.gif
Спасибо за совет. Только я ему следовал, когда это мне было нужно, и с тех пор помню наизусть. Ничего нового не придумали..

Да, все действительно прозрачно..
Надеюсь, ты уже решил, пока я тут смотрел свои сериалы ))
Shmanich
Цитата(Lapp @ 10.06.2010 17:28) *

Надеюсь, ты уже решил, пока я тут смотрел свои сериалы ))


Увы нет sad.gif. Я этот пример мучаю две недели.

Посмотрите этот файл. Заметил странность sad.gif. Исходное выражение: 7 нулей, остальные единицы. Преобразованное: 4 нуля, остальные единицы. Куда подевалось 3 нуля? blink.gif

Короче, чтобы полученное выражение из файла 3 было равно исходному надо три единицы (после 4-х нулей) обнулить. Какую логическую переменную надо ввести, чтобы это сделать?
Lapp
Цитата(Shmaniche @ 10.06.2010 15:07) *
Увы нет sad.gif. Я этот пример мучаю две недели.

Кошмар. Тебе больше заняться нечем? Там же все сразу видно! smile.gif
Ладно, я разложу по полочкам. Для.. тебя лично )).

Во первых - обозначения.
Сами множества - это большие буквы.
Маленькие буквы - это их отрицания (типа a = not A)
Знак умножения опускаем (как обычно)).
Все, поехали..

Исходное выражение:
A+a(B+C)+(a+D+g)(B+D)(C+d+GH)

Сначала сделаем первые два слагаемых:
A+a(B+C)
=
A(1+B+C)+a(B+C)
=
A+AB+AC+aB+aC
=
A+(AB+aB)+(AC+aC)
=
A+(A+a)B+(A+a)C
=
A+1B+1C
=
A+B+C

Теперь займемся остальным:
(a+D+g)(B+D)(C+d+GH)=
=
((a+D+g)B+(a+D+g)D)(C+d+GH)=
=
(aB+DB+gB+aD+DD+gD)(C+d+GH)=
=
aB(C+d+GH)+DB(C+d+GH)+gB(C+d+GH)+aD(C+d+GH)+DD(C+d+GH)+gD(C+d+GH)=
=
(убираем все слагаемые, где множество и его отрицание входят как множители)
=
aBC +
aBd +
aBGH +
DBC +
DBd + (это)
DBGH +
gBC +
gBd +
gBGH + (это)
aDC + (это)
aDd + (это)
aDGH +
gDC +
gDd + (это)
gDGH (это)
=
(теперь убираем все слагаемые, которые содержат A или B или C как множитель, поскольку они входят в A+B+C)
=
aBC + (это)
aBd + (это)
aBGH + (это)
DBC + (это)
gBC + (это)
gBd + (это)
gDC + (это)
BDGH + (это)
aDGH +
=
aDGH

Теперь объединяем обе части
A+B+C+aDGH

и прибавляем сюда ADGH (это можно, поскольку оно входит в А)
A+B+C+aDGH+ADGH
=
A+B+C+(a+A)DGH
=
A+B+C+1DGH
=
A+B+C+DGH

Все, готово.
Видишь теперь? элементарно. Но писанины много. Глаза лучше справляются при хорошем взгляде на исходное выражение, чем руки с карандашом..

Если что неясно - спрашивай.
Shmanich
Цитата(Lapp @ 11.06.2010 10:38) *

Кошмар. Тебе больше заняться нечем? Там же все сразу видно! smile.gif


Заняться, конечно, есть чем. Только вот у меня хобби есть, взять какой-нибудь задачник и прорешивать все подряд, чтобы мозги не засохли smile.gif

Ладно, я разложу по полочкам. Для.. тебя лично )).

Цитата(Lapp @ 11.06.2010 10:38) *

Во первых - обозначения.
Сами множества - это большие буквы.
Маленькие буквы - это их отрицания (типа a = not A)
Знак умножения опускаем (как обычно)).
Все, поехали..


С этим все понятно

Цитата(Lapp @ 11.06.2010 10:38) *

Исходное выражение:
A+a(B+C)+(a+D+g)(B+D)(C+d+GH)

Сначала сделаем первые два слагаемых:
A+a(B+C)
=
A(1+B+C)+a(B+C)
=
A+AB+AC+aB+aC
=
A+(AB+aB)+(AC+aC)
=
A+(A+a)B+(A+a)C
=
A+1B+1C
=
A+B+C


Тоже все ясно. Хотя можно и короче:
A+a*(B+C) = (A+a)*(A+B+C) = 1*(A+B+C) = A+B+C.

Цитата(Lapp @ 11.06.2010 10:38) *

Теперь займемся остальным:
(a+D+g)(B+D)(C+d+GH)=
=
((a+D+g)B+(a+D+g)D)(C+d+GH)=
=
(aB+DB+gB+aD+DD+gD)(C+d+GH)=
=
aB(C+d+GH)+DB(C+d+GH)+gB(C+d+GH)+aD(C+d+GH)+DD(C+d+GH)+gD(C+d+GH)=
=
(убираем все слагаемые, где множество и его отрицание входят как множители)
=
aBC +
aBd +
aBGH +
DBC +
DBd + (это)
DBGH +
gBC +
gBd +
gBGH + (это)
aDC + (это)



Не понял с чем ты aDC сократил?

Цитата(Lapp @ 11.06.2010 10:38) *

aDd + (это)
aDGH +


Пропустил DD(C+d+GH)
Здесь раскладывается так: CDD + DDd + DDGH = CD + DGH.
В принципе выражение можно убрать, таблица истинности не изменится. Только согласно какому закону это можно сделать?

Цитата(Lapp @ 11.06.2010 10:38) *

gDC +
gDd + (это)
gDGH (это)
=


Тут все правильно!

Цитата(Lapp @ 11.06.2010 10:38) *


(теперь убираем все слагаемые, которые содержат A или B или C как множитель, поскольку они входят в A+B+C)


Согласно, какому закону интересно бы узнать?



Lapp
Цитата(Shmaniche @ 11.06.2010 11:39) *
Заняться, конечно, есть чем. Только вот у меня хобби есть, взять какой-нибудь задачник и прорешивать все подряд, чтобы мозги не засохли smile.gif
Да ну?? u kidding

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

Цитата
Пропустил DD(C+d+GH)
Снова извиняюсь. Но это дела не меняет тоже.

Цитата
Согласно, какому закону интересно бы узнать?
Согласно Лемме Lapp'а:

A + AX = A(1+X) = A (1) = A

Доказательства - доказательствами, но про здравый смысл тоже забывать не нужно: пересечение множества с чем угодно всегда представляет его подмножество, а сумма множества и его подмножества есть снова то же самое множество. Чтоб мозги не засохли, нужно не только значки рисовать, но и думать smile.gif.
Shmanich
Цитата(Lapp @ 11.06.2010 16:03) *

Доказательства - доказательствами, но про здравый смысл тоже забывать не нужно: пересечение множества с чем угодно всегда представляет его подмножество, а сумма множества и его подмножества есть снова то же самое множество. Чтоб мозги не засохли, нужно не только значки рисовать, но и думать smile.gif.


Однако ты класный прием показал! Спасибо smile.gif.
По ходу решил еще один пример! Выложу позже, обсудим smile.gif.
Lapp
Цитата(Shmaniche @ 11.06.2010 15:26) *
Однако ты класный прием показал! Спасибо smile.gif.
Я рад, что тебе понравилось )).
Shmanich
Привествую! smile.gif
Летом я обещал поделиться еще одним логическим выражением. Вот выбрал свободное время и выкладываю интересный пример (см. прикрепленный файл). Можно ли это выражение ещ больше упростить или это уже предел?
TarasBer
Ну можно написать A<=>B<=>C, но так, вроде, нельзя.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.