Отслеживание зависимостей. Релаксация в сети.
Во всех экспертных системах мы тем или иным образом стремимся представить модель окружающего нас мира или, по крайней мере, какой-либо предметной области этого мира. Думаю, не следует тратить время на доказательство того очевидного факта, что программе нельзя позволять выполнять произвольные манипуляции над представлением мира, которое в ней имеется. Как правило, предположения в таком представлении влияют друг на друга, и существуют ограничения, которым должно удовлетворять любое множество предположений.
Если такое влияние и ограничения игнорировать, то могут возникнуть серьезные расхождения между представлением мира в программе и реальностью. Системы, располагающие механизмом отслеживания зависимостей между предположениями и выявления их несовместимости, получили название систем отслеживания истинности предположений (truth maintenance systems). В литературе можно встретить и аналогичный по смыслу термин система отслеживания причинности (reason maintenance systems).
В этой главе мы в общих чертах представим вычислительные методы, которые используются для отслеживания зависимостей между представлением в программе состояний, действий и предположений. Начнем мы с относительно простых систем, затем перейдем к более сложным. Там, где без этого можно обойтись, мы будем пренебрегать строгими математическими формулировками и заменять их менее формальным описанием того, что делается в системе, почему делается именно так и какую пользу из этого можно извлечь.
В главе 15 рассказывалось о том, что в экспертной системе VT для фиксации зависимостей между решениями, принимаемыми в процессе проектирования, используется сеть зависимостей. В такой сети узлы соответствуют присвоению значений конструктивным параметрам, причем между узлами существуют два вида связей– связи содействия (contributes-to) и связи принуждения (constrains). Узел А содействует узлу В, если значение параметра А появляется в результате вычисления значения В, а узел А принуждает узел В, если значение параметра A запрещает параметру В принимать определенные значения. В дальнейшем для некоторой формализации изложения будем обозначать узлы прописными буквами, а строчными– значения соответствующих параметров. Например, значение, присваиваемое узлу (параметру) А в какой-либо момент времени, будем обозначать как а.
Релаксация в сети
Основное назначение связей в сети зависимостей состоит в том, чтобы, во-первых, показать, как изменение значения какого-либо параметра распространяется от узла к узлу, а во-вторых, выявить противоречия между значениями, присвоенными разным узлам.
Пусть, например, в сети имеются узлы А и М. Узел А представляет ускорение некоторой детали механизма, а М – массу этой детали. Оба узла, А и М, содействуют узлу F, который представляет силу, действующую на деталь. Более того, учитывая знакомую всем со школьной скамьи формулу f = mа, узлы А и М также и принуждают узел F, поскольку если а и т известны, то значение f определяется этой формулой и не может быть произвольным, т.е. если а -2 и от = 3, то мы можем присвоить узлу F только значение f = 6. Если же этому узлу уже ранее было присвоено значение f = 7, то сеть переходит в состояние противоречия.
Формула f= та играет роль принудительного ограничения для сети, описанной в этом примере. Если все ограничения в сети удовлетворяются, то она пребывает в состоянии релаксации. Рассмотрим варианты сетей, представленные на рис. 19.1. Сеть а) находится в промежуточном состоянии, поскольку узлу F не присвоено какого-либо определенного значения, сеть б) находится в состоянии релаксации, а сеть в) – в состоянии противоречия.