Программирование на языке Пролог для искусственного интеллекта
6ec30db9

Процедура проверки принадлежности списку дающая единственное решение



5. 2. 2.    Процедура проверки принадлежности списку, дающая единственное решение

Для того, чтобы узнать, принадлежит ли Х списку L, мы пользовались отношением

        принадлежит( X, L)

Программа была следующей:

        принадлежит( X, [X | L] ).

        принадлежит X, [Y | L] ) :- принадлежит( X, L).

Эта программа дает "недетерминированный" ответ: если Х встречается в списке несколько раз, то будет найдено каждое его вхождение. Исправить этот недостаток не трудно: нужно только предотвратить дальнейший перебор сразу же после того, как будет найден первый X, а это произойдет, как только в первом предложении наступит успех. Измененная программа выглядит так:

        принадлежит( X, [X | L] ) :-   !.

        принадлежит( X, [Y | L] ) :- принадлежит( X, L).

Эта программа породит только одно решение. Например:

        ?-  принадлежит( X, [а, b, с] ).

        Х = а;
        nо
                    (нет)



Содержание раздела