Каков типичный размер алфавита конечных автоматов?

Не совсем уверен, что это правильный форум, но в Theoretical Computer Science было предложено перенести его сюда...

Каков типичный размер алфавита конечных автоматов?

В настоящее время я занят реализацией высокопроизводительной библиотеки FA, и мне нужно высказать некоторые соображения по дизайну, прежде чем продолжить. Мое пространство состояния будет порядка 2 147 483 647 (Integer.MAX_VALUE), что, как мне кажется, более чем достаточно даже для нестандартного использования. Теперь осталось только пространство алфавита.

Есть ли смысл полагать, что алфавит обычно состоит только из всех отображаемых символов (в этом случае его можно сохранить как byte, что приведет к действительно хорошей производительности)? Или символы алфавита лучше перевести в Strings, чтобы у вас были метки алфавита? В этом случае мне нужно будет сохранить карту, которая переводит String в int, short или byte, в зависимости от того, насколько большим я хочу ее сделать.


person Nico Huysamen    schedule 17.03.2011    source источник


Ответы (1)


На самом деле алфавит конечного автомата представляет собой математическое «множество» любого типа. Содержимое набора ничем не ограничивается, это могут быть 1 и 0, A-Z или яблоки-апельсины. Не существует «типичного» размера алфавита FSM как такового. Вы имеете в виду пользователя для вашей библиотеки?

person Eric    schedule 17.03.2011
comment
Я осознаю теоретические границы алфавита. Я больше думаю с точки зрения оптимизации/производительности, насколько должен увеличиться алфавит. Пользователи в основном будут исследователями, ищущими эмпирические данные. - person Nico Huysamen; 17.03.2011
comment
@Nico - Все еще зависит от исследователей и задействованных данных. Почему бы не сделать несколько разных реализаций, основанных на разных приблизительных размерах наборов, на самом деле не может быть намного больше кода... - person Eric; 17.03.2011
comment
Поскольку эта тема, похоже, умерла, я отмечу это как правильный ответ. Я решил ограничить алфавит до 256 на данный момент, но спроектировал, чтобы его можно было легко изменить позже. - person Nico Huysamen; 24.03.2011