.: [предыдущая | оглавление | следующая] :.

17.4 Пример работы алгоритма решателя

Рассмотрим работу решателя на конкретном примере. Пусть дана следующая задача: Из пунктов А и Б навстречу друг другу вышли два пешехода. Известно расстояние 10 км, время в пути 2 часа. Известно также, что скорость второго пешехода на 1 км/ч больше, чем скорость первого. Необходимо найти скорость первого пешехода. Для решения этой задачи база знаний должна содержать следующие формулы:

Формализованная постановка задачи может быть получена с помощью генератора задач. Первым шагом поиска решения является построение дерева решений. Дерево решений для нашего примера показано на рис.16.1. Построение начинается с записи искомой переменной V1 (см. описание алгоритма построения дерева И-ИЛИ). Далее записываются формулы, с помощью которых определяется искомая переменная (это формулы S1/t1 и V2 ? K). Использование второй формулы приводит к решению через нахождение переменной V2. Для краткости этот вариант рассматриваться не будет. Рассмотрим ветвь для формулы S1/t1. Для данного узла будут записаны два сына - переменная S1 и переменная t1. Переменная t1 известна по условию задачи. Она становится листом. Далее рассматривается переменная S1. Для нее в базе знаний имеется две формулы S - S2 и V1 *t1. Использование второй формулы не приведет к решению, т.к. происходит сокращение переменных. Для формулы S - S2 необходимо найти S2, т.к. переменная S известна. Для переменной S2 в базе знаний имеется две формулы: V2 * t2 и S - S1. Использование второй формулы приводит к рекурсии, т.к. ранее подстановка для переменной S1 уже использовалась. Рассмотрим формулу V2 * t2. Здесь неизвестная переменная V2. Для нее производим подстановки. Это формулы S2/t2 и V1 + K. Первая формула приводит к рекурсии и вторая формула также приводит к рекурсии. Таким образом, процесс построения дерева заканчивается.

После построения дерева решений производится его анализ. Анализ включает: подсчет количества вариантов , анализ каждого варианта с использованием алгоритмов эквивалентных преобразований. Всего вариантов решений, без учета ветви V2 + k, будет 4. (см. рис.16.1). Решение будет получено при использовании варианта с номером 1 (см. алгоритм нумерации И-ИЛИ дерева). Этот вариант показан на рис.16.2 В этом дереве записаны подстановки формул, приводящие к построению уравнения.

Рассмотрим эти подстановки:

Тогда выражение, содержащее уравнение, будет следующего вида:
V1 = (S ? ((V1 + K) * t2))/t1.

Раскрывая скобки, подставляя конкретные значения для S, t1, t2 и K, производя сокращение подобных членов, получим следующее линейное уравнение:
2 * V1 ? 4 = 0. Отсюда решение: V1 = 2.

.: [предыдущая | оглавление | следующая] :.