20
правок
Изменения
Нет описания правки
Сначала мы рисуем куб в системе отсчёта <tex>Oxyz</tex> (названия координатных осей соответствуют названиям переменных). Затем каждую вершину обрабатываем следующим образом:
{| border="0"
|*'''Описание алгоритма''' |'''Пример''' |- |Если у нас конъюнкт, переменные в котором равны соответствующим координатам вершины, то в эту вершину мы помещаем закрашенный чёрным кружок. |*dершине Вершине с координатами <tex>(0,1,1) </tex>соответствует конъюнкт <tex>(\neg X \wedge Y \wedge Z)</tex>, он равен единице при <tex>X=0, Y=1</tex> и <tex>Z=1</tex>) |}-* |В противном случае мы помещаем в вершину закрашенный белый кружок.
пока у нас есть незакрашенные вершины, мы выбираем грань, либо вершину, либо ребро, на которых больше всего закрашенных чёрным вершин и ещё не обработанных вершин.
В итоге нашу изначальную ДНФ можно записать как <tex>(Y) \vee (X \wedge Z)</tex>.
|
|}
Теперь для каждого конъюнкта мы помечаем соответствующую ему ячейку таблицы. Например, ДНФ
<br>
<br>
|}
<br>
Теперь покрываем прямоугольниками (длины сторон которых {{---}} степени двойки (1, 2, 4)) те ячейки карт Карно, которые содержат в себе единицу (на каждом ходу мы выбираем такой прямоугольник, чтобы он покрывал наибольшее количество ещё не покрытых клеток) до тех пор, пока не покроем все такие ячейки (для . Для карт Карно на примере это выглядело бы так):
<br>
{| border="1"
|}
<br>
После этого записываем каждый прямоугольник в виде конъюнкта, в котором будут указаны только те переменные, которые одинаковы для всех ячеек этого прямоугольника. То есть, в этом примере получаем: <tex>(\neg Z \wedge \neg X) \vee (\neg W \wedge \neg Y)</tex>
===Метод Квайна===