Контактная схема — различия между версиями
(→Задача о минимизации контактной схемы) |
|||
Строка 8: | Строка 8: | ||
==Принцип работы== | ==Принцип работы== | ||
[[Файл:contact.png||right||200px]] | [[Файл:contact.png||right||200px]] | ||
− | [[Файл:contactnot.png | + | [[Файл:contactnot.png |right|200px | Отрицание]] |
Зафиксируем некоторые значения переменным. Тогда '''замкнутыми''' называются ребра, на которых записана 1, ребра, на которых записан 0, называются '''разомкнутыми'''. Зафиксируем две вершины <tex>u</tex> и <tex>v</tex>. Тогда контактная схема вычисляет некоторую функцию <tex>f</tex> между вершинами <tex>u</tex> и <tex>v</tex>, равную 1 на тех наборах переменных, на которых между <tex>u</tex> и <tex>v</tex> есть путь по замкнутым ребрам. | Зафиксируем некоторые значения переменным. Тогда '''замкнутыми''' называются ребра, на которых записана 1, ребра, на которых записан 0, называются '''разомкнутыми'''. Зафиксируем две вершины <tex>u</tex> и <tex>v</tex>. Тогда контактная схема вычисляет некоторую функцию <tex>f</tex> между вершинами <tex>u</tex> и <tex>v</tex>, равную 1 на тех наборах переменных, на которых между <tex>u</tex> и <tex>v</tex> есть путь по замкнутым ребрам. | ||
Строка 14: | Строка 14: | ||
Любую булеву функцию можно представить в виде контактной схемы. Для этого необходимо привести её к ДНФ или КНФ, а затем построить, используя комбинации 3 логических элементов: | Любую булеву функцию можно представить в виде контактной схемы. Для этого необходимо привести её к ДНФ или КНФ, а затем построить, используя комбинации 3 логических элементов: | ||
− | * '''Конъюнкция''' [[Файл:multiply.png | 200px | right ]] | + | * '''Конъюнкция''' [[Файл:multiply.png | 200px | right | Конъюнкция]] |
Результат конъюнкции равен 1 тогда и только тогда, когда оба операнда равны 1. В применении к контактным схемам это означает, что | Результат конъюнкции равен 1 тогда и только тогда, когда оба операнда равны 1. В применении к контактным схемам это означает, что | ||
последовательное соединение полюсов соответствует операции конъюнкции. | последовательное соединение полюсов соответствует операции конъюнкции. | ||
− | * '''Дизъюнкция''' [[Файл:disjunction.png | 200 px | right]] | + | * '''Дизъюнкция''' [[Файл:disjunction.png | 200 px | right | Дизъюнкция]] |
Результат дизъюнкции равен 0 только в случае, когда оба операнда равны 0. Несложно догадаться, что в контактных схемах эта операция соответствует параллельному соединению полюсов. | Результат дизъюнкции равен 0 только в случае, когда оба операнда равны 0. Несложно догадаться, что в контактных схемах эта операция соответствует параллельному соединению полюсов. | ||
− | * '''Отрицание''' | + | * '''Отрицание''' |
Отрицание - это унарная операция, поэтому, чтобы показать её на контактной схеме достаточно написать над контактом знак отрицания. | Отрицание - это унарная операция, поэтому, чтобы показать её на контактной схеме достаточно написать над контактом знак отрицания. | ||
+ | |||
+ | === Примеры построения некоторых функций === | ||
+ | * '''Xor''' [[Файл:xor.png |200 px| right| xor]] | ||
+ | <tex>x \oplus y = (\neg x \land y) \lor (x \land \neg y)</tex> | ||
+ | |||
+ | |||
+ | * '''Медиана трех''' [[Файл:median.png |200 px| right| медиана]] | ||
+ | <tex> <xyz> = (x \land y) \lor (x \land z) \lor (y \land z) \lor (x \land y \land z) = (x \land y) \lor (x \land z) \lor (y \land z)</tex> | ||
+ | |||
==Задача о минимизации контактной схемы== | ==Задача о минимизации контактной схемы== | ||
Строка 35: | Строка 44: | ||
ее контактов. | ее контактов. | ||
}} | }} | ||
+ | |||
+ | {{Определение | ||
+ | |definition='''Минимальная контактная схема''' - схема, имеющая наименьшую сложность среди эквивалентных ей схем. | ||
+ | }} | ||
+ | |||
Задача минимизации контактных схем состоит в том, чтобы по данной схеме <tex>S</tex> найти схему <tex>T</tex> , эквивалентную <tex>S</tex> и имеющую наименьшую сложность. | Задача минимизации контактных схем состоит в том, чтобы по данной схеме <tex>S</tex> найти схему <tex>T</tex> , эквивалентную <tex>S</tex> и имеющую наименьшую сложность. | ||
Один из путей решения этой задачи состоит в следующем: | Один из путей решения этой задачи состоит в следующем: | ||
Строка 40: | Строка 54: | ||
* Упрощаем <tex>F(S)</tex>, то есть отыскиваем функцию <tex>G</tex> (на том же базисе, что и <tex>F(S)</tex>), равносильную <tex>F(S)</tex> и содержащую меньше вхождений операций дизъюнкции и конъюнкции. Для этой операции удобно использовать [http://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%9A%D0%B0%D1%80%D0%BD%D0%BE карты Карно]. | * Упрощаем <tex>F(S)</tex>, то есть отыскиваем функцию <tex>G</tex> (на том же базисе, что и <tex>F(S)</tex>), равносильную <tex>F(S)</tex> и содержащую меньше вхождений операций дизъюнкции и конъюнкции. Для этой операции удобно использовать [http://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%9A%D0%B0%D1%80%D0%BD%D0%BE карты Карно]. | ||
* Строим схему <tex>T</tex>, реализующую функцию <tex>G</tex>. | * Строим схему <tex>T</tex>, реализующую функцию <tex>G</tex>. | ||
+ | |||
+ | {{Теорема | ||
+ | |statement = Любой булеву функцию можно представить контактной схемой, сложностью <tex>O(2^n)</tex> | ||
+ | |proof=Построим дерево конъюнктов для n переменных и их отрицаний. Это дерево будет содержать <tex>O(2^n)</tex> контактов. Внизу дерева получится <tex>2^n</tex> вершин. Очевидно, что каждая вершина соответствует одному конъюнкту. Если соединить часть из этих вершин с вершиной <tex>v</tex> ребрами, на которых написана <tex>1</tex>, то сложность полученной схемы не изменится. | ||
+ | |||
+ | Поэтому любую булевую функцию можно представить контактной схемой, сложностью <tex>O(2^n)</tex> | ||
+ | }} | ||
+ | |||
==Ссылки== | ==Ссылки== |
Версия 20:28, 15 октября 2014
Для математического описания электротехнических устройств, состоящих из контактов и промежуточных реле, функционирующих в дискретные моменты времени применяются контактные схемы.
Определение: |
Контактная схема (англ. contact sheme) представляет собой ориентированный ациклический граф, на каждом ребре которого написана переменная или ее отрицание (ребра в контактных схемах называют контактами, а вершины - полюсами). |
Содержание
Принцип работы
Зафиксируем некоторые значения переменным. Тогда замкнутыми называются ребра, на которых записана 1, ребра, на которых записан 0, называются разомкнутыми. Зафиксируем две вершины
и . Тогда контактная схема вычисляет некоторую функцию между вершинами и , равную 1 на тех наборах переменных, на которых между и есть путь по замкнутым ребрам.Построение контактных схем
Любую булеву функцию можно представить в виде контактной схемы. Для этого необходимо привести её к ДНФ или КНФ, а затем построить, используя комбинации 3 логических элементов:
- Конъюнкция
Результат конъюнкции равен 1 тогда и только тогда, когда оба операнда равны 1. В применении к контактным схемам это означает, что последовательное соединение полюсов соответствует операции конъюнкции.
- Дизъюнкция
Результат дизъюнкции равен 0 только в случае, когда оба операнда равны 0. Несложно догадаться, что в контактных схемах эта операция соответствует параллельному соединению полюсов.
- Отрицание
Отрицание - это унарная операция, поэтому, чтобы показать её на контактной схеме достаточно написать над контактом знак отрицания.
Примеры построения некоторых функций
- Xor
- Медиана трех
Задача о минимизации контактной схемы
Определение: |
Две контактные схемы называются эквивалентными, если они реализуют одну и ту же булеву функцию. |
Определение: |
Сложностью контактной схемы называется число ее контактов. |
Определение: |
Минимальная контактная схема - схема, имеющая наименьшую сложность среди эквивалентных ей схем. |
Задача минимизации контактных схем состоит в том, чтобы по данной схеме найти схему , эквивалентную и имеющую наименьшую сложность.
Один из путей решения этой задачи состоит в следующем:
- Осуществляем переход от контактной схемы к её булевой функции .
- Упрощаем карты Карно. , то есть отыскиваем функцию (на том же базисе, что и ), равносильную и содержащую меньше вхождений операций дизъюнкции и конъюнкции. Для этой операции удобно использовать
- Строим схему , реализующую функцию .
Теорема: |
Любой булеву функцию можно представить контактной схемой, сложностью |
Доказательство: |
Построим дерево конъюнктов для n переменных и их отрицаний. Это дерево будет содержать Поэтому любую булевую функцию можно представить контактной схемой, сложностью контактов. Внизу дерева получится вершин. Очевидно, что каждая вершина соответствует одному конъюнкту. Если соединить часть из этих вершин с вершиной ребрами, на которых написана , то сложность полученной схемы не изменится. |
Ссылки
Литература
- Гаврилов Г.П., Сапоженко А.А. Задачи и упражнения по дискретной математике — М.:"ФИЗМАТЛИД", 2009 — стр. 312