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

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

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

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

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

textual
Листинг программы
  1. % automat(+State, +Input, +Stack)
  2.  
  3. % состояние 0
  4. automat(0, [H|T], S) :-
  5.     % какие-то проверки H
  6.     automat(0, T, [H|S]).   % - в том же состоянии, стек растет
  7. automat(0, [H|T], [HS|TS]) :-
  8.     % какие-то другие проверки H и HS
  9.     automat(1, T, TS).   % - в новом состоянии, стек снимается
  10.  
  11. % состояние 1
  12. automat(1, [H|T], [HS|TS]) :-
  13.     % какие-то третьи проверки H и HS
  14.     automat(1, T, TS).   % - в прежнем состоянии, стек снимается
  15. automat(1, [], []).  % - в этом состоянии возможен успешный выход        
  16.                           % при исчерпании входной строки и стека

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

Код представляет собой реализацию автомата (часто именуемого «машинным автоматом» или «автоматом ввода-вывода») на основе языка программирования 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут