Вопросы по теме 'prolog-cut'

нужен совет по сокращению пролога?
в этой задаче у меня есть база данных Prolog, заполненная, например, край (1,0) край (2,0) край (1,3) ребро означает, что две точки соединены. Меня просят написать функцию под названием «достичь (i, j, k)», где i - начальная точка, j - конечная...
327 просмотров
schedule 28.07.2023

Переполнение рекурсии Пролога
fact(1,1):-!. fact(N,F):- N1=N-1, fact(N1,F1), F=F1*N. Это приводит к переполнению стека (не сайту)! Это не должно из-за разреза (!). Работает ли это в SWI-Prolog?
226 просмотров
schedule 17.05.2023

Что такое SLD-дерево для этого запроса?
Рассмотрим следующую программу на Прологе (из "Искусство Пролога"): natural_number(0). natural_number(s(X)) :- natural_number(X). plus(X, 0, X) :- natural_number(X). plus(X, s(Y), s(Z)) :- plus(X, Y, Z). и запрос: ?- plus(s(s(s(0))),...
2651 просмотров

Удаление повторяющихся решений
Мой код объединяет два списка списков, элемент за элементом, следующим образом: mergeL([[a,b],[c,d]], [[1,2],[3,4]], Result). Result = [[a,b,1,2],[c,d,3,4]] И это код, который я использую: mergeL([],[],[]). mergeL(List, [], List)....
769 просмотров
schedule 05.03.2022

Пролог - понимание использования сокращения
Я не могу четко понять использование сокращения. Например, в этом случае: сглаживание , действительно ли это нужно? У меня это работает даже без обоих предикатов cut (я пробовал удалить). В каких случаях может происходить возврат к разрезу?...
362 просмотров
schedule 18.11.2022

Читаем отрывок! в Прологе
Я читаю Изучите Пролог прямо сейчас! глава о сокращениях и в то же время Программирование на языке Prolog для искусственного интеллекта Братко, глава 5: Управление обратным отслеживанием. Сначала казалось, что сокращение - это простой способ...
2679 просмотров

Как предотвратить рекурсию после зацикливания один раз
Я только что понял, что это глупый вопрос. Любопытно, может ли кто-нибудь еще найти лазейку. Исходный код: married(trump,obama). married(trump,goat). married(pepee,pepper). married(X,Y) :- married(Y,X),!. % not awesome because of infinite...
77 просмотров
schedule 19.04.2023

Какая разница в исполнении, если вырез '!' настоящее?
counter([],[]). counter([H|T],[[H,C1]|R]) :- counter(T,[[H,C]|R]),!, C1 is C+1. counter([H|T],[[H,1]|R]) :- counter(T,R). Каков эффект "!" поскольку я получаю один и тот же вывод для ввода как в приведенном выше, так и в приведенном ниже коде?...
346 просмотров
schedule 13.09.2022

! / 0 должен прорезать (\ +) / 1 или нет?
С одной стороны: $ sicstus SICStus 4.6.0 (x86_64-linux-glibc2.17): Mon Apr 6 09:23:37 PDT 2020 [...] | ?- \+ (!,false) ; X = 1. yes ... с другой стороны ... $ gprolog GNU Prolog 1.4.5 (64 bits) [...] | ?- \+ (!,false) ; X = 1. true ? ; X...
53 просмотров
schedule 24.01.2023

Вырезать в начале предложения
Рассмотрим предикат Prolog p(integer),q(integer),r(integer) с потоковой моделью (o) и предикатом s : p(1). q(1). r(1). p(2). q(2). r(2). s:-!,p(X),q(Y),r(Z),write(X,Y,Z),nl. Дайте результат следующей цели: s . Обоснуйте ответ....
61 просмотров
schedule 25.07.2022