Ограниченная таблица

Совсем недавно я начал экспериментировать с таблицами в Прологе; некоторые эксперименты, которые я провел с b-prolog и xsb можно найти в этом вопросе.

Столы становились все больше и больше, и я понял, что мне нужно найти некоторые опции/параметры таблиц, которые позволили бы мне ограничить объем памяти, выделяемый для таблиц.

Пока что я не нашел ничего подходящего в руководствах yap, b-prolog и xsb.

Не могли бы вы указать мне какую-нибудь полезную информацию?


person repeat    schedule 04.05.2015    source источник
comment
B-Prolog разделяет виртуальную машину с Picat, так что, возможно, он поддерживает режимы для аргументов...   -  person CapelliC    schedule 04.05.2015
comment
@КапеллиК. Я пробовал объявления :- table posInt_CollatzSteps/2., :- table posInt_CollatzSteps(+,-). и :- table posInt_CollatzSteps(+,-):10000., но ни одно из них не оказало заметного влияния на потребление памяти.   -  person repeat    schedule 04.05.2015
comment
Что касается Yap, возможно, вы захотите связаться с [email protected], который является автором расширения его таблицы.   -  person migfilg    schedule 04.05.2015
comment
Интересный вопрос. В чем должен быть смысл ограниченной таблицы. На процедурном языке с побочными эффектами можно было бы просто использовать ограниченный кеш с некоторой стратегией вытеснения. Например, это много раз встречается в коде Java. Но в Прологе, где вы можете вернуться назад, как это будет работать, если табулирование связано с трейлингом?   -  person Mostowski Collapse    schedule 16.05.2016


Ответы (1)


В случае YAP есть несколько публикаций, в которых подробно рассматривается реализация таблиц. Одним из наиболее важных из них, вероятно, является Таблицы, управляемые режимом, и приложения в системе YapTab:

http://cracs.fc.up.pt/node/4962

У меня есть некоторые примеры из этой статьи, адаптированные в Logtalk (я работаю в той же исследовательской группе - CRACS - что и авторы):

https://github.com/LogtalkDotOrg/logtalk3/blob/master/examples/tabling/table.lgt

(см. код, начинающийся со строки 63).

На веб-сайте CRACS (http://cracs.fc.up.pt) вы можете штрафовать несколько других бумаг. на столе.

person Paulo Moura    schedule 04.05.2015