powered by simpleCommunicator - 2.0.19     © 2024 Programmizd 02
Map
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Найдите д.н.ф. и к.н.ф. для :
25 сообщений из 88, страница 2 из 4
Найдите д.н.ф. и к.н.ф. для :
    #40116026
Wlr-l
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Когда vikkiv привел ссылки, я подумал, что это конец обучению.

Подставил формулу из задания и получил все, что нужно: таблицу истинности, минимальные формы представления функции в разных базисах, логическую схему, к счастью только в одном базисе, и диаграмму Венна.

Однако, пока ещё для получения совершенной ДНФ придется пошевелить извилинами и пальцами.
Да и карта Карно (или её разновидность диаграмма Вейча) не строится; не на чём выделить импликанты. Для математиков и программистов это может быть не важным, так как им достаточно получить любую минимальную ДНФ. А для схемотехников важно, так как кроме минимизации булевой функции она позволяет выбирать "безгоночную" ДНФ, которая может быть далеко не минимальной ДНФ.

" вся эта производная муть ... "

- Это не производная муть, это совсем даже не производная муть, дружище Биттнер, - сказал бы Мюллер и объяснил почему:

Имеется четыре функции от одной переменной:

Код: plaintext
1.
2.
3.
x  f0(x)  f1(x)  f2(x)  f3(x)
0   0      0      1      1
1   0      1      0      1

Наиболее важной из них является функция f2(x) - отрицание (¬). Индекс функции соответствует двоичному числу в колонке этой функции.

Для двух переменных будет уже 16 различных функций. Функции, играющие важную роль в булевой алгебре и не только в ней, получили названия. Например, функции из задания ТС называются:

↓ f8(x) стрелка Пирса (другое название: функция Вебба)
≡ f9(x) эквивалентность
→ f13(x) импликация
| f14(x) штрих Шеффера

Могут использоваться другие значки, ГОСТа здесь нет.

" вся эта производная муть сводится к трём простым операциям: AND,OR,NOT "

Да, точно так же, как умножение может быть сведено к сложению в арифметике или tg может быть выражен через sin и cos в тригонометрии, любая булева функция может быть представления с помощью функций конъюнкции, дизъюнкции и отрицания. Т.е. эти три функции образуют функционально полную систему функций (не математики говорят образуют "базис"). Функциональной полнотой обладают и другие наборы функций, например, набор, состоящий из всего лишь одной функции штрих Шеффера.

Цель задания состоит в том, чтобы заданные функции представить в виде ДНФ и СНФ или, другими словами, представить их с помощью функций конъюнкции, дизъюнкции и отрицания, или, иными словами, разложить эти функций по переменным (ссылку на учебник я уже приводил). А упрощение - это уже другая песня.

Странно, что для программистов - это представляет трудность. Одни получают сведения из учебников по конкретному языку программирования, другие сдают (правда не говорят, что сдали) курс дискретной математики в МГУ и не помнят. Интересно, как у них там, например, в Стэнфордском университете? Ведь программы обучения радикально не отличаются.
...
Рейтинг: 0 / 0
Найдите д.н.ф. и к.н.ф. для :
    #40116169
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то так должн быть. Сделайте 4-eyes check.
xyzf1f2f30 0 0 0 1 00 0 1 1 1 00 1 0 0 1 10 1 1 0 1 11 0 0 1 1 01 0 1 1 1 11 1 0 1 1 01 1 1 0 1 1
...
Рейтинг: 0 / 0
Найдите д.н.ф. и к.н.ф. для :
    #40116250
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Функция F2 какая-то вырожденная получается. Или я ошибся?
...
Рейтинг: 0 / 0
Найдите д.н.ф. и к.н.ф. для :
    #40116276
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

У мну только F1 совпало. Смотреть под "Proof (F1 F2 и F3)" (справа промежуточные формулы, для проверки)
¬(A & B) (¬A & ¬B)ABShefferPeers0011011010101100

maytonproof(x ∨ z)(¬y ∨ ¬z)XYZF1F2F3F1F2F3(¬x→z)(x|y)¬(z≡(x|y))(y→¬z)((y→¬z)|x)00001001001111001110100110110100110100111101101100011001100110111111101011111101101011011011010010
...
Рейтинг: 0 / 0
Найдите д.н.ф. и к.н.ф. для :
    #40116279
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всё-таки источника разнятся. В Мендельсоне и в Яблонском наоборот определены Шеффер и Пирс. По ним здесь и сделал.
Я же помню эту фразу про Шеффера "отрицание конъюнкции". Значит не там смотрел, или другая школа была.
В моей первой рабочей машине не жигули наряду с И ИЛИ был и встроенный Шеффер, оттуда и запомнил, но ни разу не пользовался.

авторОднако, пока ещё для получения совершенной ДНФ придется пошевелить извилинами и пальцами. Выеденного яйца не стоит. Тем более, что мы ждали, когда ТСу это уже не надо, жирно было бы подсказывать. Оставшееся можно устно либо регулярками, здесь нет функций - констант.
...
Рейтинг: 0 / 0
Найдите д.н.ф. и к.н.ф. для :
    #40116280
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Меня совершенно сбила с толку эта вертикальная палочка. Выглядит как битовая дизъюнкция в С++.

Переписал. Давай еще раз сверим часы.

xyx ⟶ y (Implication) x ↓ y (Pierce arrow) x | y (Sheffer-stroke)0 0 1 1 10 1 1 0 11 0 0 0 11 1 1 0 0

И сами функции.

xyzf1f2f30 0 0 0 1 00 0 1 1 0 00 1 0 0 1 00 1 1 0 0 01 0 0 1 1 11 0 1 1 1 01 1 0 1 1 01 1 1 0 0 1
...
Рейтинг: 0 / 0
Найдите д.н.ф. и к.н.ф. для :
    #40116282
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98

Я же помню эту фразу про Шеффера "отрицание конъюнкции". Значит не там смотрел, или другая школа была.

Да. Если смотреть русские и английские вики и статьи - то определение операции Шеффера может быть
просто переписано через Де-Моргана. Есть такое

Код: sql
1.
not(A and B)



и такое

Код: sql
1.
not A or not B
...
Рейтинг: 0 / 0
Найдите д.н.ф. и к.н.ф. для :
    #40116284
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мои сорц.

Я специально форматирую как FIXED чтобы сохранить математические символы. Ибо это самая вкусная часть сорца.
Дурацкий движок портит их если заворачивать в SRC.

XBoolean
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
// 30/11/2021 : mayton

class XBoolean(val value : Boolean) extends AnyVal {

  def ∪(that : XBoolean) : XBoolean = new XBoolean(value || that.value)
  def ∩(that : XBoolean) : XBoolean = new XBoolean(value && that.value)

  // Implication
  def ⟶(that : XBoolean) : XBoolean = new XBoolean(!value || that.value)
  // Pierce arrow
  def ↓(that : XBoolean) : XBoolean = new XBoolean(!(value || that.value))
  // NAND, Sheffer-stroke
  def |(that : XBoolean) : XBoolean = new XBoolean(!(value && that.value))

  def ==(that : XBoolean) : XBoolean = new XBoolean(value == that.value)
  def unary_! : XBoolean = new XBoolean(!value)

  override def toString: String = if (value) "1" else "0"

}

main
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
  implicit def fromInt(x: Int) : XBoolean = new XBoolean(if (x == 1) true else false)
  implicit def fromBoolean(x: Boolean) : XBoolean = new XBoolean(x)

  def main(args : Array[String]) : Unit = {

    def f1(x : XBoolean, y : XBoolean, z : XBoolean) : XBoolean = !x ∪ z == (y ↓ !z)
    def f2(x : XBoolean, y : XBoolean, z : XBoolean) : XBoolean = (!x ⟶ z) | ((y ⟶ !z) | x)
    def f3(x : XBoolean, y : XBoolean, z : XBoolean) : XBoolean = !(z == (x | y)) ∩ (!x ⟶ z)

    println("[C S V=,]")
    println("x,y,x ⟶ y (Implication), x ↓ y (Pierce arrow), x | y (Sheffer-stroke)")
    for(xx <- 0 to 1 ; yy <- 0 to 1) {
      val x : XBoolean = xx
      val y : XBoolean = yy
      println(s"${x}, ${y}, ${x ⟶ y}, ${x ↓ y}, ${x | y}")
    }
    println("[/CSV]")

    println("[C S V=,]")
    println("x,y,z,f1,f2,f3")
    for(xx <- 0 to 1 ; yy <- 0 to 1 ; zz <- 0 to 1) {
      val x : XBoolean = xx
      val y : XBoolean = yy
      val z : XBoolean = zz
      println(s"${x}, ${y}, ${z}, ${f1(x,y,z)}, ${f2(x,y,z)}, ${f3(x,y,z)}")
    }
    println("[/CSV]")
  }
...
Рейтинг: 0 / 0
Найдите д.н.ф. и к.н.ф. для :
    #40116310
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У нас ф-ции совпадают (я при вставке сюда последнюю строку потерял, но там то же самое, смотрел).
mayton
Выглядит как битовая дизъюнкция в С++.
Переписал. Давай еще раз сверим часы.
Меня тоже, причём сначала я только стрелку заметил, а палка с галкой как-то слиплись в одно. Позже вспоминаю, что Ш. обозначался палкой, а тут стрелка, в общем проехали...

Я в эксе посчитал, а здесь что? какая-то смесь С с Хаскелем или это уже С++футуристический такой?
...
Рейтинг: 0 / 0
Найдите д.н.ф. и к.н.ф. для :
    #40116315
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Мои сорц.
а здесь мой "сорц"
...
Рейтинг: 0 / 0
Найдите д.н.ф. и к.н.ф. для :
    #40116326
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это Scala.

Ну что? У нас - консенсус по таблице истинности.

Можно переходить ко 2 части.
...
Рейтинг: 0 / 0
Найдите д.н.ф. и к.н.ф. для :
    #40116340
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДНФ рисовать неинтересно.

Любой дурак нарисует по табличке.
Давайте сразу совершенную и минимизированную ДНФ.
...
Рейтинг: 0 / 0
Найдите д.н.ф. и к.н.ф. для :
    #40116346
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Она же будет и совершенной. А вот минимальную или, там, тупиковую, надо методы читать, конъюнкции удалять например , ни разу не интересовался. И меру взять.
Тут недавно вроде про NP=P писалось, там днф были ... да только я не верю.

Даже усиливаю написанное: не занимался вообще все прошлые десятилетия и не приходилось. Только в начале века читал про категоризацию простых чисел чрез спец. многозначные логические системы.
...
Рейтинг: 0 / 0
Найдите д.н.ф. и к.н.ф. для :
    #40116356
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для трёх аргументов - легко рисовать.

Можно в уме. Можно на карточках Карно-Вейча.

Карточки перестают эффективно работать где-то после 8 аргументов.

Потому-что запрашиваемые области перестают быть связными.

Дальше - я только помню метод Квайн-макласска и то со словарем.
...
Рейтинг: 0 / 0
Найдите д.н.ф. и к.н.ф. для :
    #40116357
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Закрашиваемые.
...
Рейтинг: 0 / 0
Найдите д.н.ф. и к.н.ф. для :
    #40116363
Wlr-l
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Относительно штрих Шеффера и стрелки Пирса. Я нигде не видел разногласий. Штрих Шеффера всегда был отрицанием конъюнкции, а стрелка Пирса – отрицанием дизъюнкции. Ссылку на книгу Яблонского я уже приводил. Шеффер и Пирс (а может быть Вебб) впервые описали эти функции. Стрелку Пирса я рекомендую понимать именно как отрицание дизъюнкции. Так будет проще работать с формулами.

Относительно выеденного яйца. Я так понимаю, что по ссылкам vikkiv не ходили.

Относительно регулярок и прочих реализаций логики в языках программирования. Они не являются составной частью булевой алгебры.

Поскольку поезд для ТС ушел, то приведу пример получения ДНФ для первой функции из задания. Остальные решаются аналогично. И не имеет смысла давать решение всех задач, чтобы не затруднять работу преподавателей.

Левая часть равнозначности:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
x	Z	¬X	Z	¬X ∨ Z
0	0	1	0	1
0	1	1	1	1
1	0	0	0	0
1	1	0	1	1

Правая часть равнозначности
y	Z	Y	¬Z	Y ↓ ¬Z
0	0	0	1	0
0	1	0	0	1
1	0	1	1	0
1	1	1	0	0

Объединяем левую и правую части:
x	y	z	¬X ∨ Z	Y ↓ ¬Z	≡
0	0	0	1	0	0
0	0	1	1	1	1
0	1	0	1	0	0
0	1	1	1	0	0
1	0	0	0	0	1
1	0	1	1	1	1
1	1	0	0	0	1
1	1	1	1	0	0

Совершенная ДНФ: ¬x¬yz \/ x¬y¬z \/ x¬yz \/ xyz

Строим карту Карно (диаграмму Вейча) или применяем алгоритм Квайна, или применяем законы булевой алгебры, или есть еще десяток других способов и находим три импликанты: ¬yz, x¬z и x¬y.

Тупиковые ДНФ:
¬yz \/ x¬z \/ x¬y
¬yz \/ x¬z

Вторая ДНФ будет минимальной ДНФ.

Первая тупиковая ДНФ будет свободной от "гонок".

Собственно, и всё.
Схемотехники могут привести эту ДНФ к выбранному базису, например, штриху Шеффера.
...
Рейтинг: 0 / 0
Найдите д.н.ф. и к.н.ф. для :
    #40116406
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня получилось так:

f1 = !yz ∪ !yx ∪ x!z
f2 = !z ∪ !yx
f3 = x!y!z ∪ xyz
...
Рейтинг: 0 / 0
Найдите д.н.ф. и к.н.ф. для :
    #40116469
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не делал домашнее задание((((
Wlr-l
Относительно штрих Шеффера и стрелки Пирса. Я нигде не видел разногласий.
А я увидел, поэтому у меня по-разному написано вначале. И это тоже книга, и тоже компетентного автора, но голосованием 2 к 1 вкупе с собственными воспоминаниями...

И, да! для пущей полноты не хватает объявления, по какому критерию оптимизация.
...
Рейтинг: 0 / 0
Найдите д.н.ф. и к.н.ф. для :
    #40116474
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Корреляция показывает меру линейной зависимости каждой Fk от X Y Z
Код: sql
1.
2.
3.
4.
corr		
F1	0,50000	-0,50000	0,00000
F2	0,25820	-0,25820	-0,77460
F3	0,57735	 0,00000	0,00000
...
Рейтинг: 0 / 0
Найдите д.н.ф. и к.н.ф. для :
    #40116478
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Больший к-т можно трактовать как меньшую степень пересекаемости с другой переменной.
...
Рейтинг: 0 / 0
Найдите д.н.ф. и к.н.ф. для :
    #40116483
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Корреляции и прочие стат-методы КМК не работают в этой области.

У меня была идея как подбирать ключи симметричного шифра базируясь на известной шапке
двоичного файла который был зашифрован.
...
Рейтинг: 0 / 0
Найдите д.н.ф. и к.н.ф. для :
    #40116492
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Корреляции и прочие стат-методы КМК не работают в этой области.
Имеются публикации? Я не проверял, но на материале этого одного примера есть показания к применению как градиентное направление, чтобы отсечь неблагоприятные ветки перебора.
Например.
f1 = !yz + !yx + x!z
f2 = !z + !yx
f3 = x!y!z + xyz
Код: sql
1.
2.
3.
4.
corr		
F1	0,50000	-0,50000	0,00000
F2	0,25820	-0,25820	-0,77460
F3	0,57735	 0,00000	0,00000

F3 - Х можно вынести за скобки, Y и Z не сильно влияют, т.к. входят и с- "!", и без-.
F2 - Z входит в полной мере, причём даже знаки совпадают с отрицанием.
F1 - и X и Y можно одинаково вынести за скобки, и знак тоже совпадает.
Как сказать, эвристика, блин.
...
Рейтинг: 0 / 0
Найдите д.н.ф. и к.н.ф. для :
    #40116514
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем искать корреляции?

Если говорить о системотехнике, то F1,F2 очень похожи. И мы можем выход F1 использовать
для частичного расчёта F2 когда x = 0. Особенно если мы говорим о проектировании единого устройства
в каком-то базисе элементов.

Но поскольку в задаче не сказано ничего - то я рассматриваю все три функции как независимые.
...
Рейтинг: 0 / 0
Найдите д.н.ф. и к.н.ф. для :
    #40116530
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И если в AND или OR можно искать некое подобие монотонности
например можно представить как скалярное произведение с некой пороговой функцией
на выходе то чёртов XOR например ломает всю картинку.

Как его учитывать? Вот и получается криптография.
...
Рейтинг: 0 / 0
Найдите д.н.ф. и к.н.ф. для :
    #40116573
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Зачем искать корреляции?
... я рассматриваю все три функции как независимые.
Я их такими же рассматриваю. Конкретнее, они выведены в этом порядке
F1: corr(X, F1) corr(Y, F1) corr(Z, F1) Т.о., приведена связь между одной F() и каждой переменной
F2: corr(X, F2) corr(Y, F2) corr(Z, F2)
F3: corr(X, F3) corr(Y, F3) corr(Z, F3)
Да, отдаю себе отчёт, что переменные упорядочены по-разному.

Какая разница XOR или другое? Если переменная значимо влияет, то связь будет. Поменяй местами столбцы X Y Z, матрица корреляций не изменится, хотя переменные не взаимозаменяемы. Когда переменная доминирует, то F() следует за всеми её изгибами.
Зачем искать? никого не заставляю, заранее не знаешь, где найдёшь.
...
Рейтинг: 0 / 0
25 сообщений из 88, страница 2 из 4
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Найдите д.н.ф. и к.н.ф. для :
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]