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


         

Можно обобщить этот селектор для


        второйребенок( Семья, Второй) :-

              дети( Семья, [ _, Второй | _ ]).

        . . .


Можно обобщить этот селектор для выбора N-го ребенка:

        nребенок( N, Семья, Ребенок) :-

              дети( Семья, СписокДетей),

              n_элемент( N, СписокДетей, Ребенок)


                                                       % N-й элемент списка

Другим интересным объектом является "член семьи". Вот некоторые связанные с ним селекторы, соответствующие рис. 4.1:

        имя( членсемьи( Имя, _, _, _ ), Имя).

        фамилия( членсемьи( _, Фамилия, _, _ ), Фамилия).

        датарождения( членсемьи( _, _, Дата), Дата).


Какие преимущества мы можем получить от использования отношений-селекторов? Определив их, мы можем теперь забыть о конкретном виде структуры представления информации. Для пополнения и обработки этой информации нужно знать только имена отношений-селекторов и в оставшейся части программы пользоваться только ими. В случае, если информация представлена сложной структурой, это легче, чем каждый раз обращаться к ней в явном виде. В частности, в нашем примере с семьей пользователь не обязан знать, что дети представлены в виде списка. Например, предположим, мы хотим сказать, что Том Фокс и Джим Фокс принадлежат к одной семье и что Джим - второй ребенок Тома. Используя приведенные выше отношения-селекторы, мы можем определить двух человек, назовем их Человек1 и Человек2, и семью.

Содержание  Назад  Вперед