Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Книга, учебник » Представлення знань в інтелектуальних системах

Реферат Представлення знань в інтелектуальних системах





изначений таким чином фрейм називається функціональним. br/>

36. Мова Prolog. Подання списків


Список - це послідовність, складена з довільного числа елементів, наприклад, енн, теніс, тому, лижі. На Пролозі це записується так

[енн, теніс, тому, лижі]

Однак таке лише зовнішнє уявлення списку. Як ми вже бачили, всі структурні об'єкти Прологу - це дерева. Списки не є виключенням з цього правила. p align="justify"> Яким чином можна представити список у вигляді стандартного прологовского об'єкта? Ми повинні розглянути два випадки: порожній список і не порожній список. У першому випадку список записується як атом []. У другому випадку список слід розглядати як структуру, що складається з двох частин:

1) перший елемент, званий головою списку;

2) інша частина списку, звана хвостом.

Наприклад, для списку

[енн, теніс, тому, лижі]

енн - це голова, а хвостом є список

[теніс, тому, лижі]

У загальному випадку, головою може бути що завгодно (будь прологовскій об'єкт, наприклад, дерево або змінна); хвіст же повинен бути списком. Голова з'єднується з хвостом за допомогою спеці ального функтора. Вибір цього функтора залежить від конкретної реалізації Прологу; ми будемо вважати, що це точка:

. (Голова, Хвіст)

Оскільки Хвіст - це список, він або порожній, або має свої власні голову і хвіст. Таким чином, обраного способу подання списків достатньо для подання списків будь-якої довжини. Наш список представляється наступним чином:

. (енн,. (теніс,. (тому,. (лижі, []))))

На наступному малюнку зображено відповідна деревоподібна структура.

В 

Зауважимо, що показаний приклад містить порожній список []. Справа в тому, що самий останній хвіст є Одноелементний списком:

[лижі]

Хвіст цього списку порожній

[лижі] =. (лижі, [])

Розглянутий приклад показує. Як загальний принцип структуризації об'єктів даних можна застосувати до списків будь-якої довжини. З нашого прикладу також видно, що такий примітивний спосіб представлення у випадку великої глибини укладення піделементи в хвостовій частині списку може призвести до досить заплутаним виразами. Ось чому в Пролозі передбачається більш лаконічний спосіб зображення списків, при якому вони записуються як послідовності елементів, укладені в квадратні дужки. Програміст може використовувати обидва способи, але уявлення з квадратними дужками, звичайно в більшості випадків користується перевагою. Ми, однак, завжди будемо пам'ятати, що це всього лише косметичне поліпшення і що у внутрішньому поданні наші списки виглядають як дерева. При виведенні ж вони автоматично перетворюються в більш лаконічну форму представлення. Так, наприклад, можливий наступний діалог:

? - список1 = [a, b, c],

список2 = (а,. (b,. (c, [])))

список1 = [a, b, c],

список2 = [a, b, c]

? - Увлеченія1 =. (теніс,. (музика, [])),

Увлеченія2 = [лижі, їжа]

L = [енн, Увлеченія2, тому, Увлеченія2].

Увлеченія1 = [теніс, музика]

Увлеченія2 = [лижі, їжа]

L = [енн, [теніс, музика], тому, [лижі, їжа]]


Наведений приклад нагадує нам про те, що елементами списку можуть бути будь-які об `єкти, зокрема теж списки.

На практиці часто буває зручним трактувати хвіст списку як самостійний об'єкт. Наприклад, нехай

= [a, b, c]


Тоді можна написати:


Хвіст = [b, c] і L =. (a, Хвіст)


Для того, щоб виразити це за допомогою квадратних дужок, в Пролозі передбачено ще одне розширення нотації для подання списку, а саме вертикальна риса, яка відокремлює голову від хвоста.


L = [a | Хвіст]


Насправді вертикальна риса має більш загальний сенс: ми можемо перерахувати будь-яку кількість елементів списку, потім поставити символ В«|В», а після цього - список інших елементів. Так, тільки що розглянутий приклад можна представити наступними різними способами:


[a, b, c] = [a, | [b, c]] = [a, b, | [c]] = [a, b, c | []]

Підсумуємо:

В· Список - це структура даних, ...


Назад | сторінка 30 з 35 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Організація списку за допомогою двійкового дерева
  • Реферат на тему: Зв'язний список футболістів
  • Реферат на тему: Програма &Список комерційних банків& на мові Сі
  • Реферат на тему: Анотований список гедзів Костанайської області
  • Реферат на тему: Список загроз безпеки для території проживання