ВУЗ:
Составители:
136
пользуясь только этими тремя сосудами. Мы видим, что здесь нужно найти именно алгоритм, т. е.
последовательность переливаний из одного сосуда в другой. Задача для любого программиста
необычная. Программист, как правило, составляет алгоритм, а машина только выполняет его;
здесь же требуется, чтобы машина нашла алгоритм. Попробуем сформировать условия задачи на
языке Пролог. Информацию о емкости сосудов представим фактом
Объемы (10, 7, 3).
Основная и единственная операция, которую мы можем выполнять над сосудами, ~
переливание из одного в другой. Ясно, что перелить молоко можно только в неполный сосуд.
Количество молока, которое переливается, определяется так. Если в первом сосуде молока больше,
чем свободного места во втором, то переливается количество молока, равное свободному объему
во втором сосуде. В противном случае из первого сосуда выливается молоко. Иными словами,
количество переливаемого молока равно минимуму из его количества в первом сосуде и
свободного объема во втором. Что такое минимум, Пролог «не знает», поэтому нам придется
выразить это понятие в виде правила:
Минимум двух чисел А к В равен А, если А меньше В, если В меньше или равно А.
На Прологе это записывается так:
минимум (А, В, А):- А<В.
минимум (А, В, В):- В~ < А.
Теперь мы можем сформулировать правило переливания из одного сосуда в другой. Чтобы
перелить из одного сосуда в другой, надо, чтобы в первом сосуде было какое-то количество молока,
а во втором сосуде - свободное место. Переливаемое молоко по количеству равно минимуму из этих
величин. После переливания молока в первом сосуде станет меньше, а во втором увеличится на
столько же. Количество молока в третьем сосуде при таком переливании не изменится. После
выполнения переливания следует попытаться найти другую возможность переливания из нового
состояния так, чтобы в конце концов прийти к такому состоянию, когда в двух первых сосудах
молока станет ровно по 5 литров.
пользуясь только этими тремя сосудами. Мы видим, что здесь нужно найти именно алгоритм, т. е.
последовательность переливаний из одного сосуда в другой. Задача для любого программиста
необычная. Программист, как правило, составляет алгоритм, а машина только выполняет его;
здесь же требуется, чтобы машина нашла алгоритм. Попробуем сформировать условия задачи на
языке Пролог. Информацию о емкости сосудов представим фактом
Объемы (10, 7, 3).
Основная и единственная операция, которую мы можем выполнять над сосудами, ~
переливание из одного в другой. Ясно, что перелить молоко можно только в неполный сосуд.
Количество молока, которое переливается, определяется так. Если в первом сосуде молока больше,
чем свободного места во втором, то переливается количество молока, равное свободному объему
во втором сосуде. В противном случае из первого сосуда выливается молоко. Иными словами,
количество переливаемого молока равно минимуму из его количества в первом сосуде и
свободного объема во втором. Что такое минимум, Пролог «не знает», поэтому нам придется
выразить это понятие в виде правила:
Минимум двух чисел А к В равен А, если А меньше В, если В меньше или равно А.
На Прологе это записывается так:
минимум (А, В, А):- А<В.
минимум (А, В, В):- В~ < А.
Теперь мы можем сформулировать правило переливания из одного сосуда в другой. Чтобы
перелить из одного сосуда в другой, надо, чтобы в первом сосуде было какое-то количество молока,
а во втором сосуде - свободное место. Переливаемое молоко по количеству равно минимуму из этих
величин. После переливания молока в первом сосуде станет меньше, а во втором увеличится на
столько же. Количество молока в третьем сосуде при таком переливании не изменится. После
выполнения переливания следует попытаться найти другую возможность переливания из нового
состояния так, чтобы в конце концов прийти к такому состоянию, когда в двух первых сосудах
молока станет ровно по 5 литров.
136
Страницы
- « первая
- ‹ предыдущая
- …
- 134
- 135
- 136
- 137
- 138
- …
- следующая ›
- последняя »
