Существует ли библиотека / методика сбора статистики для оптимального упорядочения предложений в Прологе?

Я пишу программу, в которой мне нужно посмотреть, соответствуют ли строки конкретному шаблону. Прямо сейчас я реализовал это в Прологе, как правило, соответствует Pattern(S), с более чем 20 различными определениями.

В итоге я запускаю все двоичные строки определенной длины через предикат проверки шаблона. Программа довольно медленная (как это часто бывает с Прологом), и, поскольку существует так много разных определений, я бы в идеале упорядочил их так, чтобы наиболее подходящие из них были самыми ранними в порядке упорядочения и, таким образом, сначала сопоставлялись Прологом, чтобы избежать возврата назад, так как насколько я могу.

Я сейчас использую SWI Prolog, но у меня есть доступ к SICStus, поэтому я готов использовать его или любого переводчика Prolog, который я могу получить бесплатно.

3 ответа

У SWI-Prolog есть профиль / 3 и show_profile / 2, которые могут помочь с вашей задачей.

Если вы оставите свои правила шаблона и примените сокращения, это может улучшить время выполнения, если между шаблонами есть общие части. Такой анализ должен сочетаться со статистикой.

Вы должны подумать об использовании DCG и сокращений.

Вы должны посмотреть на порезы. Синтаксис пролога для этого:

!
Другие вопросы по тегам