Дизъюнктивная нормальная форма | это… Что такое Дизъюнктивная нормальная форма?
Дизъюнкти́вная норма́льная фо́рма (ДНФ) в булевой логике — нормальная форма, в которой булева формула имеет вид дизъюнкции конъюнкций литералов. Любая булева формула может быть приведена к ДНФ.[1] Для этого можно использовать закон двойного отрицания, закон де Моргана, закон дистрибутивности. Дизъюнктивная нормальная форма удобна для автоматического доказательства теорем.
Содержание
|
Формулы в ДНФ:
Формулы не в ДНФ:
Построение ДНФ
Алгоритм построения ДНФ
1) Избавиться от всех логических операций, содержащихся в формуле, заменив их основными: конъюнкцией, дизъюнкцией, отрицанием.
2) Заменить знак отрицания, относящийся ко всему выражению, знаками отрицания, относящимися к отдельным переменным высказываниям на основании формул:
3) Избавиться от знаков двойного отрицания.
4) Применить, если нужно, к операциям конъюнкции и дизъюнкции свойства дистрибутивности и формулы поглощения.
Пример построения ДНФ
Приведем к ДНФ формулу :
Выразим логические операции → и ↓ через :
В полученной формуле перенесем отрицание к переменным и сократим двойные отрицания:
Используя закон дистрибутивности, приводим формулу к ДНФ:
k-дизъюнктивная нормальной формой называют дизъюнктивную нормальную форму, в которой каждая конъюнкция содержит ровно k литералов.
Например, следующая формула записана в 2-ДНФ:
Переход от ДНФ к СДНФ
Если в какой-то простой конъюнкции недостает переменной, например, Z, вставляем в нее выражение :, после чего раскрываем скобки (при этом повторяющиеся дизъюнктные слагаемые не пишем, так как по закону Идемпотентности). Например:
Таким образом, из ДНФ получили СДНФ.
Формальная грамматика, описывающая ДНФ
Следующая формальная грамматика описывает все формулы, приведенные к ДНФ:
- <ДНФ> → <конъюнкт>
- <ДНФ> → <ДНФ> ∨ <конъюнкт>
- <конъюнкт> → <литерал>
- <конъюнкт> → (<конъюнкт> ∧ <литерал>)
- <литерал> → <терм>
- <литерал> → ¬<терм>
где <терм> обозначает произвольную булеву переменную.
См. также
- Конъюнктивная нормальная форма
- Дистрибутивность
- Нормальная форма (математика)
- Закон двойного отрицания
- Законы де Моргана
Примечания
- ↑ Поздняков С.Н., Рыбин С.В. Дискретная математика. — С. 303.
Литература
- Ю.И. Галушкина, А.Н. Марьямов: Конспект лекций по дискретной математике — 2-е изд., испр. — М.: Айрис-пресс, 2008. — 176 с. — (Высшее образование)
Ссылки
- ДНФ, СДНФ, КНФ, СКНФ
- Disjunctive Normal Form
- Дизъюнктивная и Конъюнктивная нормальные формы
Команда dnf | Linux FAQ
Команда dnf предназначена для работы с одноименной утилитой, которая используется для управлении пакетами программного обеспечения в дистрибутивах RHEL, CentOS, а также Fedora Workstation (в первых двух дистрибутивах она пока не используется по умолчанию). Данная утилита пришла на смену широко известной утилите yum из-за проблем с производительностью и потреблением памяти последней. На сегодняшний день утилита dnf обладает всеми возможностями утилиты yum и является ее полноценной заменой, менее требовательной к ресурсам системы.
Вы можете использовать dnf для установки и удаления пакетов программного обеспечения из вашей системы (группами или по одному), а также обновления системных списков пакетов программного обеспечения из подключенных на данный момент репозиториев.
Базовый синтаксис команды выглядит следующим образом:
# dnf [параметры] [команда] имена-пакетов-или-групп
Утилита поддерживает большое количество команд и параметров. Чаще всего используются такие параметры, как параметр —skip-broken
Команда | Назначение |
install |
Установка пакета с заданным именем |
reinstall |
Переустановка пакета с заданным именем |
|
Обновление пакета с заданным именем |
|
Удаление пакета с заданным именем |
autoremove |
Удаление осиротевших пакетов |
info |
Получение информации о пакете с заданным именем |
provides |
Получение имени пакета, в котором имеется файл с заданным именем |
search |
Поиск пакетов с заданным словом в имени |
list |
Вывод имен всех доступных и установленных пакетов |
list installed |
Вывод списка всех установленных пакетов |
list available |
Вывод списка всех доступных пакетов |
repolist |
Вывод списка подключенных репозиториев |
repolist all |
Вывод списка всех репозиториев |
clean all |
Удаление всех метаданных |
history |
Вывод истории использования dnf |
groupunstall |
Установка всех пакетов из группы с заданным именем |
groupupdate |
Обновление всех пакетов из группы с заданным именем |
groupremove |
Удаление всех пакетов из группы с заданным именем |
grouplist |
Вывод имен всех существующих групп пакетов |
Автоматическая загрузка обновлений
В дистрибутиве Fedora Workstation dnf используется также для автоматической загрузки обновлений системы. Если вам не нужна эта функция (например, вы привыкли устанавливать обновления вручную или используете сетевое соединение с ограничением по трафику), вы можете деактивировать ее следующим образом.
В первую очередь следует деактивировать соответствующие службу и таймер systemd:
# systemctl disable dnf-makecache.service
# systemctl disable dnf-makecache.timer
Далее нужно отключить механизм автоматической загрузки обновлений на уровне службы packagekitd:
$ gsettings set org.gnome.software download-updates false
После этого система не будет самостоятельно проверять наличие, загружать и предлагать устанавливать обновления. Не стоит отключать данный механизм без весомых оснований!
Примеры использования
Установка пакета программного обеспечения
Для установки пакета программного обеспечения достаточно просто использовать команду install:
# dnf install midori Последняя проверка окончания срока действия метаданных: 1:17:29 назад, Пн 31 июл 2017 17:36:45. Зависимости разрешены. ================================================================================ Пакет Архитектура Версия Репозиторий Размер ================================================================================ Установка: midori x86_64 0.5.12-0.2.fc26 fedora 1.3 M Результат транзакции ================================================================================ Установка 1 Пакет Объем загрузки: 1.3 M Объем изменений: 6.2 M Продолжить? [д/Н]: y Загрузка пакетов: midori-0.5.12-0.2.fc26.x86_64.rpm 621 kB/s | 1.3 MB 00:02 -------------------------------------------------------------------------------- Общий размер 277 kB/s | 1.3 MB 00:04 Проверка транзакции Проверка транзакции успешно завершена. Идет проверка транзакции Тест транзакции проведен успешно Выполнение транзакции Подготовка : 1/1 Установка : midori-0.5.12-0.2.fc26.x86_64 1/1 Запуск скриплета: midori-0.5.12-0.2.fc26.x86_64 1/1 Проверка : midori-0.5.12-0.2.fc26.x86_64 1/1 Установлено: midori.x86_64 0.5.12-0.2.fc26 Выполнено!
Удаление пакета программного обеспечения
Удаление пакета программного обеспечения осуществляется с помощью команды remove:
# dnf remove midori Зависимости разрешены. ================================================================================ Пакет Архитектура Версия Репозиторий Размер ================================================================================ Удаление: midori x86_64 0.5.12-0.2.fc26 @fedora 6.2 M Результат транзакции ================================================================================ Удаление 1 Пакет Освобожденное место: 6. 2 M Продолжить? [д/Н]: y Проверка транзакции Проверка транзакции успешно завершена. Идет проверка транзакции Тест транзакции проведен успешно Выполнение транзакции Подготовка : 1/1 Удаление : midori-0.5.12-0.2.fc26.x86_64 1/1 Запуск скриплета: midori-0.5.12-0.2.fc26.x86_64 1/1 Проверка : midori-0.5.12-0.2.fc26.x86_64 1/1 Удален: midori.x86_64 0.5.12-0.2.fc26 Выполнено!
Поиск пакета программного обеспечения
Поиск пакета программного обеспечения осуществляется с помощью команды search. Также вместе с ней может использоваться параметр -C для отказа от обновления метаданных:
# dnf -C search midori Последняя проверка окончания срока действия метаданных: 1:09:54 назад, Пн 31 июл 2017 17:36:45. ========================= Имя Exactly Matched: midori ========================== midori. x86_64 : A lightweight GTK+ web browser midori.i686 : A lightweight GTK+ web browser
Обновление пакетов программного обеспечения
Для установки всех обновлений системы достаточно использовать команду update:
# dnf update Последняя проверка окончания срока действия метаданных: 1:24:50 назад, Пн 31 июл 2017 17:36:45. Зависимости разрешены. Отсутствуют действия для выполнения Выполнено!Определение
в кембриджском словаре английского языка
Переводы DNF
на Китайский (традиционный) 、自行車選手或賽車手等)中途退賽的(не закончил 的縮寫)…
на Китайский (упрощенный)
车选手或赛车手等)中途退赛的(делал не закончить 的缩写)…
Узнать больше
Нужен переводчик?
Получите быстрый бесплатный перевод!
Как произносится DNF ?
Обзор
DM
ДМУ
ДНК
отпечаток ДНК
ДНФ
DNS
делать
идиомы делать (все) работу осла
сделай (кому-то) хорошую оборотную фразу
Проверьте свой словарный запас с помощью наших веселых викторин по картинкам
- {{randomImageQuizHook. copyright1}}
- {{randomImageQuizHook.copyright2}}
Авторы изображений
Пройди тест сейчас
Слово дня
эхолокация
Великобритания
Ваш браузер не поддерживает аудио HTML5
/ˌek.əʊ.ləʊˈkeɪt/
НАС
Ваш браузер не поддерживает аудио HTML5
/ˌek.oʊˈloʊ.keɪt/
(животных) найти путь с помощью эхолокации (= звуковые волны)
Об этом
Блог
Есть рыба покрупнее: разговоры о вещах, которые не важны
Подробнее
New Words
дофаминовый декор
В список добавлено больше новых слов
Наверх
Содержание
EnglishПереводы
Краткое руководство по DNF для пользователей yum
Dandified yum, более известный как DNF, представляет собой менеджер пакетов программного обеспечения для дистрибутивов Linux на основе RPM, который устанавливает, обновляет и удаляет пакеты. Впервые он был представлен в Fedora 18 в тестируемом состоянии (т. е. технической предварительной версии), но начиная с Fedora 22 он стал менеджером пакетов по умолчанию в Fedora.0005
Так как это версия традиционного менеджера пакетов yum следующего поколения, она имеет более продвинутые и надежные функции, чем вы найдете в yum. Некоторые функции, которые отличают DNF от yum:
- Расчет зависимостей на основе современной технологии решения зависимостей
- Оптимизированы операции с интенсивным использованием памяти
- Возможность запуска на Python 2 и Python 3
- Доступна полная документация по API Python
DNF использует библиотеки hawkey, которые разрешают зависимости RPM для выполнения запросов на клиентских машинах. Они построены на основе libsolv, решателя зависимостей пакетов, который использует алгоритм выполнимости. Вы можете найти более подробную информацию об алгоритме в репозитории libsolv на GitHub.
Команды CLI, отличающиеся в DNF и yum
Ниже приведены некоторые изменения в интерфейсе командной строки (CLI) yum, которые вы найдете в DNF.
Обновление dnf или Обновление dnf: Выполнение обновления dnf или обновления dnf имеет одинаковый эффект в системе: оба обновляют установленные пакеты. Тем не менее, обновление dnf предпочтительнее, так как оно работает точно так же, как yum — обновление устаревает.
resolvep: Эта команда не существует в DNF. Вместо этого выполните dnf предоставляет , чтобы узнать, какой пакет предоставляет конкретный файл.
deplist: Команда Yum deplist, которая выводит список зависимостей RPM, была удалена из DNF, так как она использует алгоритм решателя зависимостей пакетов для решения запроса зависимостей.
dnf remove
Откат истории dnf: Эта проверка, которая отменяет транзакции после указанной вами, была удалена, поскольку не все возможные изменения в RPM Database Tool сохраняются в истории транзакций.
—skip-broken: Эта команда установки, которая проверяет пакеты на наличие проблем с зависимостями, запускается в yum с параметром —skip-broken. Однако теперь он является частью обновления dnf по умолчанию, поэтому в нем больше нет необходимости.
-b, —best: Эти переключатели выбирают лучшие доступные версии пакетов в транзакциях. Во время обновления dnf, которое по умолчанию пропускает обновления, которые не могут быть установлены по причинам зависимости, этот переключатель заставляет DNF рассматривать только самые последние пакеты. Используйте обновление dnf —best .
—allowerasing: Позволяет удалять установленные пакеты для устранения зависимостей. Эту опцию можно использовать в качестве альтернативы команде yum swap X Y , в которой удаляемые пакеты явно не определены.
Например: dnf —allowerasing install Y .
—enableplugin: Этот переключатель не распознан и сброшен.
DNF Automatic
Инструмент DNF Automatic представляет собой альтернативу CLI для обновления dnf. Он может выполняться автоматически и регулярно из системных таймеров, заданий cron и т. д. для автоматического уведомления, загрузки или обновления.
Для начала установите dnf-automatic rpm и включите системный таймер (dnf-automatic.timer). Он ведет себя так, как указано в файле конфигурации по умолчанию (это /etc/dnf/automatic.conf).
# yum установить dnf-automatic # systemctl включить dnf-automatic.timer # systemctl запустить dnf-automatic.timer # статус systemctl dnf-automatic.timer
Другие таймеры, которые переопределяют конфигурацию по умолчанию, перечислены ниже. Выберите тот, который соответствует вашим системным требованиям.
- dnf -automatic- notifyonly .timer: Уведомляет о доступных обновлениях
- dnf-automatic-download. timer: Загружает пакеты, но не устанавливает их
- dnf -automatic-install.timer: Загружает и устанавливает обновления
Основные команды DNF, полезные для управления пакетами
# yum install dnf: Это устанавливает DNF RPM из менеджера пакетов yum.
# dnf –version: Указывает версию DNF.
# dnf список всех или # dnf list
# dnf check-update или # dnf check-update ядро: Просматривает обновления в системе.
# dnf search <имя-пакета>: Когда вы ищете определенный пакет через DNF, он будет искать точное совпадение, а также все поиски с подстановочными знаками, доступные в репозитории.
# dnf repolist all: Это загружает и выводит список всех включенных репозиториев в системе.
# список dnf —recent или # список dnf —recent <имя-пакета>: Опция —recent выводит все недавно добавленные пакеты в систему. Другие параметры списка: —extras , —upgrades и —obsoletes .
# dnf updateinfo list available или # dnf updateinfo list available sec: В этом списке перечислены все рекомендации, доступные в системе; включая параметр sec, будут перечислены все рекомендации с пометкой «исправление безопасности».
# dnf updateinfo list available sec —sec-severity Critical: В этом списке перечислены все рекомендации по безопасности в системе, отмеченные как «критические».