Таблицы истинности в коде? Как структурировать конечный автомат?

для Django 1,9

from django.conf.urls import url

см. это

10
задан IAdapter 12 March 2009 в 21:00
поделиться

7 ответов

Никакая потребность в многомерной таблице. С 4 битами => 4 побитовых отображения, у Вас может быть единственное отображение массива u8[16] исходные данные к выводам. Поиски состояния будут намного более дешевыми, и можно извлечь отдельные биты с некоторой операцией в секунду shift-and-mask.

Если алгоритм для заполнения строк легко шифровать, Вы могли #define макрос для заполнения каждой строки индексом.

3
ответ дан 3 December 2019 в 22:39
поделиться

Я предложил бы любого (предпочтенные подходы сначала):

  • Используйте макрос для инициализирования каждой "строки" - это скроет фигурные скобки в макро-вызове.
  • Используйте комментарии для разбивания строк.
  • Используйте функцию init для инициализации контекста явно - возможно, используют функции для инициализации каждого раздела. Это подобно первой опции выше, но имеет недостаток, что функция init должна быть вызвана, прежде чем конечный автомат может использоваться.
4
ответ дан 3 December 2019 в 22:39
поделиться

Лично, я считал его из конфигурационного файла. CSV, возможно, в который легко экспортировать от Excel. Или Вы могли просто скопировать и вставить от Excel в простой текст, который дает Вам разделенные пробелом значения, который одинаково легко импортировать.

Это также означает, учитывая, что Вы работаете с C, что Вы не должны будете перекомпилировать свой код каждый раз изменения таблицы решений.

3
ответ дан 3 December 2019 в 22:39
поделиться

если Ваша таблица истинности является всеми булевскими переменными, Вы могли бы просто свернуть ее к списку пар, например.

1111,0000
1110,0110
...

для сжатия данных представьте значения как байты (два откусывания)...

где/как сохранить его для мягкого кодирования в Вашей конкретной конфигурации встроенной системы, только можно сказать ;-)

2
ответ дан 3 December 2019 в 22:39
поделиться

Если бы таблица истинности действительно только 4x4x4x4 затем, я использовал бы макросы. Если бы это когда-либо собирается вырасти, мимо которого, я использовал бы Ragel. Возможности - это, сделает меньшим, быстрее C код, чем Вы будете.

1
ответ дан 3 December 2019 в 22:39
поделиться

Я не вижу ссылки на текущее состояние для получения состояния вывода. Это означает, что это не конечный автомат, но только таблица истинности. Существует четыре исходных данных, таким образом, существует только 16 возможных входных комбинаций. Так, таблица с 16 положениями должна сделать это.

1
ответ дан 3 December 2019 в 22:39
поделиться

Обычно, когда у Вас есть проблема как это, каждый пытается уменьшить ее до простой булевой формулы. Я не вижу, почему это не было бы лучшим подходом здесь. Это было бы намного более компактным и более читаемым, плюс он имеет потенциал, чтобы быть быстрее (я воображаю горстку ANDs, и ORs выполнился бы более быстро, чем набор умножается/смещает + доступ к памяти, необходимый для подхода справочной таблицы). Самый легкий способ уменьшить эту таблицу до булевой формулы с K-картой.

1
ответ дан 3 December 2019 в 22:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: