
Днф, сднф, кнф, скнф
Простой конъюнкцией называется конъюнкция одной или нескольких переменных, при этом каждая переменная встречается не более одного раза (либо сама, либо ее отрицание).
Например,
является простой конъюнкцией,
Дизъюнктивной нормальной формой (ДНФ) называется дизъюнкция простых конъюнкций.
Например,
выражение
является ДНФ.
Совершенной дизъюнктивной нормальной формой (СДНФ) называется такая дизъюнктивная нормальная форма, у которой в каждую конъюнкцию входят все переменные данного списка (либо сами, либо их отрицания),причем в одном и том же порядке.
Например,
выражение
является ДНФ, но не СДНФ. Выражение
является СДНФ.
Аналогичные определения (с заменой конъюнкции на дизъюнкцию и наоборот) верны для КНФ и СКНФ. Приведем точные формулировки.
Простой дизъюнкцией называется дизъюнкция одной или нескольких переменных, при этом каждая переменная входит не более одного раза (либо сама, либо ее отрицание).
Например, выражение
– простая дизъюнкция,
Конъюнктивной нормальной формой (КНФ) называется конъюнкция простых дизъюнкций (
например выражение
– КНФ).
Совершенной конъюнктивной нормальной формой (СКНФ) называется такая КНФ, у которой в каждую простую дизъюнкцию входят все переменные данного списка (либо сами, либо их отрицания), причем в одинаковом порядке.
Например,
выражение
является СКНФ.
Решение
Робот поворачивает, если датчики регистрируют свободный проход. В лабиринте может быть несколько возможных ходов, поэтому зададим приоритет поворота мыши.
Приоритеты поворота:
Л
ево
П
рямо
П
раво
Н
азад
Зададим лабиринт и положение робота.
Возьмем произвольный лабиринт и поместим туда мышь.
Теперь, представляя вид лабиринта и зная положение мыши, напишем алгоритм движения робота. Мышь определяет с помощью датчиков свободные направления движения, затем делает, если нужно поворот. После чего совершает один шаг.
Алгоритм движения.
Пункт характеризует:
Свободный ход по порядку приоритетности.
Поворот мыши, если необходим.
Движение.
Алгоритм:
Робот находится в начальной точке пути
Шаг 1:
Налево – свободно
Поворот 90˚
Движение вперед
Шаг 2:
Налево – тупик
Прямо – свободно
Движение вперед
Шаг 3:
Налево – тупик
Прямо – свободно
Движение вперед
Шаг 4:
Налево – тупик
Прямо – свободно
Движение вперед
Шаг 5:
Налево – тупик
Прямо – тупик
Направо – свободно
Поворот 90˚
Движение вперед
Шаг 6:
Налево – тупик
Прямо – свободно
Движение вперед
Шаг 7:
Налево – тупик
Прямо – тупик
Направо – свободно
Поворот 90˚
Движение вперед
Шаг 8:
Налево – тупик
Прямо – тупик
Направо – тупик
Назад – свободно
Поворот 180˚
Движение вперед
Шаг 9:
Налево – свободно
Поворот 90˚
Движение вперед
Шаг 10:
Налево – свободно
Поворот 90˚
Движение вперед
Шаг 11:
Налево – тупик
Прямо – свободно
Движение вперед
Шаг 12:
Налево – свободно
Поворот 90˚
Движение вперед
Шаг 13:
Налево – тупик
Прямо – свободно
Движение вперед
Шаг 14:
Налево – свободно
Поворот 90˚
Движение вперед
Шаг 15:
Налево – тупик
Прямо – свободно
Движение вперед
Шаг 16:
Налево – тупик
Прямо – тупик
Направо – свободно
Поворот на 90˚
Движение вперед
Шаг 17:
Налево – свободно
Поворот 90˚
Движение вперед
Выход! Робот выехал за пределы лабиринта.
Изобразим движение мыши в лабиринте:
Зададим переменные соответствующие сигналу принимаемому датчиком:
Лево – свободно = X1
Прямо – свободно = X2
Право – свободно = X3
Назад – свободно = X4
Теперь зададим переменные соответствующие направлению движения:
Лево = A
Прямо = B
Право = C
Назад = D
Составим таблицы истинности.
Приоритетность сигнала датчика: Движение в зависимости от сигнала:
X1 X2 X3 X4 - - - - 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1
A B C D - - - - 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0
На основе данных в таблицах, составим функции управления движением:
A = X1˅(X2˄X̅2)˅(X3˄X̅3)˅(X4˄X̅4) = X1
B = X2˅(X3˄X̅3)˅(X4˄X̅4) = X2
C = X3˅(X4˄X̅4) = X3
D = X4
Заключение
Размышляя над выходом робота из лабиринта, можно заключить, что решение этой задачи не ограничивается каким - то единственным способом. Выход робота из лабиринта в данной курсовой работе основан на определенной последовательности определения свободных проходов. Имея приоритет движения – лево, робот тем самым, как – бы постоянно касается стены, в результате чего находит выход.
Список литературы
«Дискретная математика» Ф.А. Новиков
«Дискретная математика и комбинаторика» Джеймс А. Андерсон
«Дискретная математика в примерах и задачах» В.В. Тишин