Форум » Логические выражения » № 376 » Ответить

№ 376

lucie: Р =x принадлежит {2, 4, 9, 10, 15} Q= x принадлежит {3, 8, 9, 10, 20} (А ~ P) V (A ~ Q) = 1 Но! К сожалению, в школьном курсе математики не изучают даже в физ-мат классах равномощность множеств.

Ответов - 12

PeerGynt: Проверьте условие задачи. мне кажется в условии ошибка.Результат - пустое множество. Прилагаю программный код: [pre2] begin var aset:set of integer; var good:boolean; for var a:=1 to 1000 do begin good:=true; for var x:=1 to 1000 do begin var ux1:=(x in [2,4,9,10,15]); var ux2:=(x in [3,8,9,10,20]); var uxa:=(x = a); if (ux1 = uxa)or(ux2=uxa) then else begin good:=false; break; end; end; if good then aset+=[a]; end; writeln(aset); end. [/pre2]

Поляков: PeerGynt пишет: Проверьте условие задачи. мне кажется в условии ошибка.Результат - пустое множество. Дело в том, что вы ищете одно число, при котором заданное условие истинно при всех x. А множество А состоит не из одного числа.[pre2] begin var aset: set of integer; var good: boolean; aset := [9, 10]; good := true; for var x := 1 to 1000 do begin var ux1 := (x in [2, 4, 9, 10, 15]); var ux2 := (x in [3, 8, 9, 10, 20]); var uxa := (x in aset); if (ux1 = uxa) or (ux2 = uxa) then else begin good := false; break; end; end; if good then writeln('OK'); end. [/pre2]

PeerGynt: тут так прокатывает? или надо отдельную тему создать?


PeerGynt: Цель задачи как раз получить искомое множество.Я ищу все значения А которые формируют множество подходящих решений. Для каждого значения А проверяется истинность условия для любых значений X. Каждое подходящее значение А добавляется в множество aset. Ваше решение уже предполагает найденное множество А. Мне все таки кажется, что условие должно быть сформулировано так, чтобы оно позволяло найти множество А. В данной ситуации представленное в задаче выражение истинно тогда и только тогда когда множество А уже известно, и представлено 2 элементами "9" и "10".

Поляков: PeerGynt пишет: Мне все таки кажется, что условие должно быть сформулировано так, чтобы оно позволяло найти множество А. Я просто показал вам, что решение есть. Но думаю, что способ его поиска (через программу) не самый лучший.

PeerGynt: Поляков пишет: Я просто показал вам, что решение есть. Но думаю, что способ его поиска (через программу) не самый лучший. У меня все задачи из 15 темы прекрасно решаются с помощью данной программы: и с множествами, и с отрезками, и с графиками, и с делителями, и как ни странно с побитовой конъюнкцией - в зависимости от вида задачи бывает приходится вносить косметические штрихи - но костяк программы остается неизменным. где то достаточно остановить цикл при первом найденом значении, где то приходится формировать множество решений, но везде эта программа работает. на данный момент я решил около 50 различных задач. и везде все работало. пока что это первая и единственная задача не решаемая с помощью данной программы именно поэтому я написал на форум.

PeerGynt: я все же остаюсь на позиции о том, что условие задачи сформулировано некорректно и логическое выражение, предложенное в задаче, должно иметь иной вид. оно должно позволять находить искомое множество элементов А. А уже найдя весь набор элементов множества - следует найти минимальные из них и вычислить необходимый ответ. Допустим программно эту задачу невозможно решить. Не могли бы Вы объяснить другой способ решения данной задачи. Я пытаюсь решить задачу на координатной оси, но я так же перебирая возможные значения А не могу получить элементов составляющих набор искомого множества.

Поляков: Вот здесь описано простое решение методом рассуждений.

PeerGynt: приношу извинения за собственное упрямство, действительно для большого количества задач на отрезки и множества программные решения подобные описанному мной - очень часто не работают (хотя, достаточно часто, прекрасно решаются программно и без ошибок). для множеств и отрезков лучше решать вручную.

ЕленаФом: Попробовала решить методом интервалов на коорд.оси. Пусть точки x лежат в 4-х интервалах: все вместе - все натуральные числа. [pre2] x P==A Q==A F= (P==A) or (Q==A) P^Q True==A True==A True ---> A:True на P^Q P\Q True==A False==A True всегда независимо от A Q\P False==A True ==A True всегда независимо от A not(PvQ) False ==A False ==A True ---> A: False на not(PvQ), A True внутри PvQ [/pre2] Отсюда A_min = P^Q = {9,10}, A_max = PvQ = {2, 3, 4, 8, 9, 10, 15, 20}. Но тогда встает вопрос об ответе в задаче: для A_min минимальное произведение элементов = 9*10=90 - OK, совпадает с ответом. Но для A_max минимальное произведение элементов = 2*3 = 6! Никак не 90. Получается, надо корректировать условие задачи: сначала найти A_min, и только потом произведение его элементов? Иначе возможны и ДРУГИЕ ответы!

Поляков: ЕленаФом пишет: Но для A_max минимальное произведение элементов = 2*3 = 6! По условию же имеется в виду произведение ВСЕХ элементов множества.

ЕленаФом: Логично! что произведение ВСЕХ элементов. Надо внимательнее читать условие. Но это " мелочи", главное показать было, что не нужно во всех задачах залезать в Python, отрезки на мат. логику прекрасно вручную решаются.



полная версия страницы