Магазинный автомат SWI Prolog

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, стоит сложное задание, не могу сам справиться, даже не знаю с чего начать:
Определить недетерминированый магазинный автомат, распознающий язык, в котором за цепочкой из N символов A следует N символов B.
Помогите пожалуйста.

Решение задачи: «Магазинный автомат SWI Prolog»

textual
Листинг программы
% automat(+State, +Input, +Stack)
 
% состояние 0
automat(0, [H|T], S) :-
    % какие-то проверки H
    automat(0, T, [H|S]).   % - в том же состоянии, стек растет
automat(0, [H|T], [HS|TS]) :-
    % какие-то другие проверки H и HS
    automat(1, T, TS).   % - в новом состоянии, стек снимается
 
% состояние 1
automat(1, [H|T], [HS|TS]) :-
    % какие-то третьи проверки H и HS
    automat(1, T, TS).   % - в прежнем состоянии, стек снимается
automat(1, [], []).  % - в этом состоянии возможен успешный выход        
                          % при исчерпании входной строки и стека

Объяснение кода листинга программы

Код представляет собой реализацию автомата (часто именуемого «машинным автоматом» или «автоматом ввода-вывода») на основе языка программирования SWI Prolog. Ниже приведено описание работы автомата в виде списка:

  1. Состояние 0:
    • При входной строке [H|T] и стеке S, где H — символ, а T — список символов, и при выполнении некоторых проверок на H:
      • В том же состоянии, стек растет. То есть [H|S] добавляется в стек.
      • При выполнении других проверок на H и HS (где HS — верхний элемент стека):
        • Переход в новое состояние, стек снимается. То есть [HS|TS] становится новым стеком.
    • При входной строке [H|T] и пустом стеке [HS|TS], где H — символ, а T — список символов, и при выполнении некоторых проверок на H и HS:
      • В прежнем состоянии, стек снимается. То есть [HS|TS] становится новым стеком.
      • При исчерпании входной строки и стека:
        • Возможен успешный выход из автомата.
  2. Состояние 1:
    • При входной строке [H|T] и стеке [HS|TS], где H — символ, а T — список символов, и при выполнении некоторых проверок на H и HS:
      • В прежнем состоянии, стек снимается. То есть [HS|TS] становится новым стеком.
  3. Условие успешного выхода из автомата:
    • При входной строке [] (пустой строке) и стеке [HS|TS]:
      • Возможен успешный выход из автомата.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5