Составители:
Рубрика:
20
дет пытаться сопоставить второй объект цели с соответствующим объектом
в правиле, даже если они и сопоставимы. Затем Турбо-Пролог осуществляет
поиск следующей точки входа и находит правило
likes(beth,X) if likes(mary,X).
Первая часть этого правила likes(beth,X) называется головой правила.
Пролог пытается сопоставить цель с головой правила точно также
, как он со-
поставляет цель с фактом. Если Турбо-Пролог сможет сопоставить предикат
и все его объекты, то он попытается выполнить часть правила, которая сле-
дует за условием if (эта часть называется телом правила).
Сейчас Турбо-Пролог пытается сопоставить цель likes(beth, apples) и
голову правила likes(beth, X) :
likes(beth, apples).
likes(beth
, X).
Цель и голова правила имеют сопоставимые предикатные термы и
первые объекты. Строго говоря, apples и X не сопоставимы. Но прежде чем
заключить, что сопоставление опять неуспешно, вспомните, что X работает
как местоимение "это". Являясь переменной, X, может быть сопоставлен с
чем угодно.
В русском языке значение для "это" определяется
контекстом. Всякий
раз, когда Турбо-Пролог встречает переменную, пытаясь сопоставить объ-
екты, он присваивает переменной значение, полученное из контекста для
этой переменной. Так как позиция объекта X в голове правила точно такая
же, как позиция apples в цели, то Турбо-Пролог присваивает значение apples
переменной X. Теперь X и apples означают
для Турбо-Пролога одно и то же.
Это связывание используется до тех пор, пока либо цель не будет вычислена,
либо нельзя будет выполнить никакого другого сопоставления с учетом этого
связывания.
Так как теперь X имеет значение apples, то предикат likes(beth, X)
имеет "значение" likes(beth, apples). Турбо-Пролог успешно сопоставил голо
-
ву правила и цель, присвоив значение apples переменной X.
Теперь Турбо-Пролог пытается выполнить условие if likes(mary,
X). Так как переменной X присвоено значение aplles, то Турбо-Пролог дол-
жен доказать или опровергнуть условие "если Мэри любит яблоки" для то-
го, чтобы доказать действительно ли истинна голова правила "Бет
любит яб-
локи". Таким образом, новая задача состоит в том, что бы проверить, что Мэ-
ри любит яблоки. Эта "подзадача", или подцель, была создана самим Турбо-
Прологом как шаг, направленный на решение задачи, содержащейся в цели.
Подцелью теперь является
likes(mary, aplles).
Турбо-Пролог пытается выполнить эту подцель для
того, чтобы дока-
зать или опровергнуть условие головы правила likes(beth, apples).
Анализируя факты и правила программы, Турбо-Пролог находит факт
likes(mary, apples).
и пытается сопоставить его слева направо с целью likes(mary,apples).
дет пытаться сопоставить второй объект цели с соответствующим объектом в правиле, даже если они и сопоставимы. Затем Турбо-Пролог осуществляет поиск следующей точки входа и находит правило likes(beth,X) if likes(mary,X). Первая часть этого правила likes(beth,X) называется головой правила. Пролог пытается сопоставить цель с головой правила точно также, как он со- поставляет цель с фактом. Если Турбо-Пролог сможет сопоставить предикат и все его объекты, то он попытается выполнить часть правила, которая сле- дует за условием if (эта часть называется телом правила). Сейчас Турбо-Пролог пытается сопоставить цель likes(beth, apples) и голову правила likes(beth, X) : likes(beth, apples). likes(beth, X). Цель и голова правила имеют сопоставимые предикатные термы и первые объекты. Строго говоря, apples и X не сопоставимы. Но прежде чем заключить, что сопоставление опять неуспешно, вспомните, что X работает как местоимение "это". Являясь переменной, X, может быть сопоставлен с чем угодно. В русском языке значение для "это" определяется контекстом. Всякий раз, когда Турбо-Пролог встречает переменную, пытаясь сопоставить объ- екты, он присваивает переменной значение, полученное из контекста для этой переменной. Так как позиция объекта X в голове правила точно такая же, как позиция apples в цели, то Турбо-Пролог присваивает значение apples переменной X. Теперь X и apples означают для Турбо-Пролога одно и то же. Это связывание используется до тех пор, пока либо цель не будет вычислена, либо нельзя будет выполнить никакого другого сопоставления с учетом этого связывания. Так как теперь X имеет значение apples, то предикат likes(beth, X) имеет "значение" likes(beth, apples). Турбо-Пролог успешно сопоставил голо- ву правила и цель, присвоив значение apples переменной X. Теперь Турбо-Пролог пытается выполнить условие if likes(mary, X). Так как переменной X присвоено значение aplles, то Турбо-Пролог дол- жен доказать или опровергнуть условие "если Мэри любит яблоки" для то- го, чтобы доказать действительно ли истинна голова правила "Бет любит яб- локи". Таким образом, новая задача состоит в том, что бы проверить, что Мэ- ри любит яблоки. Эта "подзадача", или подцель, была создана самим Турбо- Прологом как шаг, направленный на решение задачи, содержащейся в цели. Подцелью теперь является likes(mary, aplles). Турбо-Пролог пытается выполнить эту подцель для того, чтобы дока- зать или опровергнуть условие головы правила likes(beth, apples). Анализируя факты и правила программы, Турбо-Пролог находит факт likes(mary, apples). и пытается сопоставить его слева направо с целью likes(mary,apples). 20
Страницы
- « первая
- ‹ предыдущая
- …
- 18
- 19
- 20
- 21
- 22
- …
- следующая ›
- последняя »