Таблица решений - Decision table
Таблицы решений представляют собой краткое визуальное представление для указания, какие действия выполнять в зависимости от заданных условий. Они есть алгоритмы выходом которого является набор действий. Информация, представленная в таблицах решений, также может быть представлена как деревья решений или в язык программирования как серия если-то-еще и выключатель заявления.
Обзор
Каждое решение соответствует переменной, отношению или предикату, возможные значения которых перечислены среди альтернативных условий. Каждое действие - это процедура или операция, которые необходимо выполнить, и записи указывают, должно ли (или в каком порядке) выполняться действие для набора альтернативных условий, которым соответствует запись.
Чтобы сделать их более краткими, многие таблицы решений включают в свои альтернативные условия все равно символ. Это может быть дефис[1][2][3] или пусто,[4] хотя использование бланка не рекомендуется, поскольку это может просто указывать на то, что таблица решений не завершена.[нужна цитата ] Одно из применений таблиц решений - выявить условия, при которых определенные входные факторы не имеют отношения к предпринимаемым действиям, позволяя пропустить эти входные тесты и тем самым упрощая процедуры принятия решений.[5]
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Вышеупомянутые таблицы содержат идентичную информацию, но во второй таблице для краткости используется дефис в качестве символа безразличия. |
Помимо базовой четырехквадрантной структуры, таблицы решений сильно различаются по способу представления альтернативных условий и записей действий.[6][7] В некоторых таблицах решений используются простые значения истина / ложь для представления альтернатив условию (аналогично if-then-else), другие таблицы могут использовать нумерованные альтернативы (аналогично switch-case), а некоторые таблицы даже используют нечеткую логику или вероятностные представления. для альтернативных условий.[8] Аналогичным образом записи действий могут просто представлять, должно ли действие быть выполнено (отметьте действия, которые нужно выполнить), или в более сложных таблицах решений, последовательность действий, которые необходимо выполнить (нумеровать действия, которые необходимо выполнить).
Таблица решений рассматривается сбалансированный[4] или же полный[3] если он включает все возможные комбинации входных переменных. Другими словами, сбалансированные таблицы решений предписывают действие в каждой ситуации, когда предусмотрены входные переменные.[4]
Пример
Таблицу решений с ограниченным входом описать проще всего. Альтернативы условий - это простые логические значения, а записи действий - это галочки, обозначающие, какие из действий в данном столбце должны быть выполнены.
Компания технической поддержки составляет таблицу решений для диагностики проблем с принтером на основе симптомов, описанных им по телефону от своих клиентов.
Ниже приводится таблица сбалансированных решений (создано Systems Made Simple).
Правила | |||||||||
---|---|---|---|---|---|---|---|---|---|
Условия | Печать на принтере | Нет | Нет | Нет | Нет | да | да | да | да |
Красный свет мигает | да | да | Нет | Нет | да | да | Нет | Нет | |
Принтер распознается компьютером | Нет | да | Нет | да | Нет | да | Нет | да | |
Действия | Проверьте шнур питания | — | |||||||
Проверьте кабель принтер-компьютер. | — | ||||||||
Убедитесь, что программное обеспечение принтера установлено | — | ||||||||
Проверить / заменить чернила | — | ||||||||
Проверьте, нет ли замятия бумаги | — |
Конечно, это всего лишь простой пример (и он не обязательно соответствует реальности устранения неполадок принтера), но даже в этом случае он демонстрирует, как таблицы решений могут масштабироваться для нескольких условий с множеством возможностей.
Преимущества программной инженерии
Таблицы решений, особенно в сочетании с использованием предметно-ориентированный язык, позволяют разработчикам и экспертам по политике работать с одной и той же информацией - с самими таблицами решений.
Инструменты для визуализации вложенных операторов if из традиционных языков программирования в таблицы решений также могут использоваться в качестве инструмента отладки.[9][10]
Таблицы решений оказались более легкими для понимания и проверки, чем код, и широко и успешно использовались для создания спецификаций для сложных систем.[11]
История
В 1960-х и 1970-х годах был разработан ряд языков, основанных на таблицах решений, таких как Filetab были популярны для бизнес-программирования.
Встроенные в программу таблицы решений
Таблицы решений могут быть и часто встраиваются в компьютерные программы и используются для «управления» логикой программы. Простым примером может быть Справочная таблица содержащий диапазон возможных входных значений и указатель на функцию в раздел кода для обработки этого ввода.
Вход | Указатель на функцию |
---|---|
"1" | Функция 1 (инициализация) |
"2" | Функция 2 (процесс 2) |
"9" | Функция 9 (завершение) |
Таблицы управления
Аналогичным образом можно закодировать несколько условий, чтобы инкапсулировать всю логику программы в виде «исполняемой» таблицы решений или таблица управления. На практике таких таблиц может быть несколько, работающих на разных уровнях и часто связанных друг с другом (либо указателями, либо значением индекса).
Реализации
- Filetab, изначально из NCC
- ДЕТАБ / 65, 1965, АКМ
- FORTAB от Rand в 1962 году, разработанный для встраивания в FORTRAN[12]
- А Рубин реализация существует с использованием Уменьшение карты чтобы найти правильные действия на основе определенных входных значений.[13]
Смотрите также
- Деревья решений
- Рассуждения на основе случая
- Причинно-следственный график
- Подход, основанный на доминировании
- ДРАКОН
- Диаграмма Карно-Вейча
- Многозначная логика
- Таблица семантических решений
Рекомендации
- ^ Ли Цзин (1 апреля 2015 г.). «Учебное пособие по SEEM 3430: таблицы решений» (PDF). п. 23. Получено 11 ноября 2017.CS1 maint: ref = harv (связь)
- ^ «Создание таблицы решений в бизнес-правилах». Справочный центр Oracle. 6 августа 2017 г.. Получено 11 ноября 2017.
- ^ а б Росс, Рональд Г. (2005). "Таблицы решений, часть 2 ~ Путь к завершению". Журнал бизнес-правил. 6 (8). Получено 11 ноября 2017.
- ^ а б c Сноу, Пол (19 июля 2012 г.). «Таблицы решений». DTRules: механизм правил таблицы решений на основе Java. Получено 11 ноября 2017.
- ^ Ли Цзин 2015, п. 24-25.
- ^ Роджерс, Уильям Т. «Примеры таблицы решений: медицинское страхование». Системный анализ и дизайн Университета Святого Ксавьера. Архивировано из оригинал 29 марта 2007 г.
- ^ «Архивная копия». Архивировано из оригинал на 2012-05-30. Получено 2010-07-07.CS1 maint: заархивированная копия как заголовок (связь)
- ^ Wets, Герт; Витлокс, Франк; Тиммерманс, Гарри; Вантиенен, Ян (1996). «Моделирование выбора местоположения с использованием нечетких таблиц решений». Новые рубежи в нечеткой логике и вычислениях: проводимая раз в два года конференция Североамериканского общества обработки нечеткой информации - NAFIPS, 1996 г.. Раз в два года конференция Североамериканского общества обработки нечеткой информации. Беркли, Калифорния: IEEE. С. 80–84. Дои:10.1109 / NAFIPS.1996.534708. ISBN 0-7803-3225-3.
- ^ "Настоящий пример CCIDE"
- ^ «Опыт работы с процессором таблицы решений Cope». Архивировано из оригинал на 2017-05-04. Получено 2010-07-07.
- ^ Удо В. Пуч, «Перевод таблиц решений», ACM Computing Surveys, том 6, выпуск 2 (июнь 1974 г.), Страницы: 125–151 ISSN 0360-0300
- ^ "FORTAB: язык таблиц решений для приложений научных вычислений", 1962, Рэнд
- ^ Александр Вильямс (2015). "Парсер таблицы решений Ruby"
дальнейшее чтение
- Дуайер, Б. и Хатчингс, К. (1977) «Оптимизация блок-схемы в Cope, таблица решений с множественным выбором» Aust. Комп. J. Vol. 9 № 3 стр. 92 (сентябрь 1977 г.).
- Фишер, Д. (1966) "Данные, документация и таблицы решений" Comm ACM Vol. 9 № 1 (январь 1966 г.) с. 26–31.
- General Electric Company (1962 г.) Справочное руководство GE-225 TABSOL и руководство по применению GF-224 TABSOL CPB-l47B (июнь 1962 г.).
- Гриндли, К. Б. Б. (1968) "Использование таблиц решений в систематике" Comp. J. Vol. 11 № 2 стр. 128 (август 1968 г.).
- Джексон, M.A. (1975) Принципы разработки программ Academic Press
- Майерс, Х.Дж. (1972) «Компиляция оптимизированного кода из таблиц решений» IBM J. Res. & Development (сентябрь 1972 г.) стр. 489–503.
- Поллак, С. (1962) «DETAB-X: улучшенный компьютерный язык, ориентированный на бизнес». Записка Rand Corp. RM-3273-PR (август 1962 г.)
- Шумахер, Х. и Севчик, К. (1976) "Синтетический подход к преобразованию таблицы решений" Comm. ACM Vol. 19 № 6 (июнь 1976 г.) с. 343–351
- CSA, (1970): Z243.1–1970 для таблиц решений, Канадская ассоциация стандартов
- Йоргенсен, Пол С. (2009) Моделирование поведения программного обеспечения: подход мастера. Публикации Ауэрбаха, CRC Press. Глава 5.
внешняя ссылка
- Программное обеспечение RapidGen Для версий Windows, Unix, Linux и OpenVMS инструментов программирования и компиляторов на основе таблиц решений
- Программное обеспечение LogicGem Для процессора таблиц решений Windows для совершенствования логики и бизнес-правил