Юный техник 1984-10, страница 17только программы подавай!.. Но... программы-то -все равно писать приходится людям. Несмотря на все усилия, затраты иа создание программ уже превышают стоимость компьютеров и продолжают стремительно расти. Все, о чем мы здесь до сих пор говорили, можно оказать, было своеобразным прологом к принципиальной, качественно новой задаче: научить ЭВМ саму себя программировать, основываясь на заложенных в электронную память знаниях. Как это можно делать, как заложить в машину способность к самообучению, поясним иа простом примере. (Смотри также «Подробности для любознательных».) Допустим, что по жакой-то причине нас заинтересовали прямоугольники, и нам то и дело приходится решать про них всевозможные расчетные задачи. Программировать каждую из них мы не хотим, требуя вместо этого, чтоб машина самостоятельно находила их решения. Что такое прямоугольник, мы отлично знаем. Договоримся обозначать длины его сторон через а и Ь, причем так, что а<Ь. Длину диагонали прямоугольника ббо-значим через Л, площадь через удлинение (отношение большей стороны к меньшей) — через с. С помощью этих обозначений наши знания о прямоугольниках выражаются в виде простых формул. «Площадь прямоугольника равна произведению длин его сторон» — эту теорему мы можем записать как S=a • Ь. Если вспомнить теорему Пифагора, получим: d=Vra2+b2. По определению удлинения с=» —. Задачи о прямоугольниках можно задавать в таком виде: ДАНО: а=10 см, с=2,5. НАЙТИ S. Давайте теперь заложим эти обозначения и формулы в программу, которую мы назовем «Решатель задач о прямоугольниках». Кроме них, по требуется еще «умение» выполнять алгебраические преобразования, например, из формул с=— а решатель должен будет вывести b b=c • а и а= ~. Все эти формулы, как исходные, так и выведенные из них, составляют «базу знаний» решателя. Заметим, что это знания не о пути решения отдельных задач, как это бывает в обычных программах, а обо всем предмете — прямоугольнике — в целом: они годятся для решения любых задач в данной области. Вот, наконец, решатель создан, отлажен, загружен в ЭВМ и ждет от нас задач. (Диалог с ним проще всего вести через дисплей — экран с клавиатурой: человек нажимает клавиши, как на машинке печатает, а ответ машины читает на эраие.) Наберем на клавиатуре нашу задачу: «Меньшая сторона прямоугольника имеет длину 10 см, удлинение равно 2,5. Найти его площадь». Что делает решатель? Он пытается найти в своей «базе знаний» такую цепочку формул, которая начиналась бы с а и с, а заканчивалась бы S. Ведь такая цепочка — это не что иное, как правило вычисления площади по стороне и удлинению, иными словами — программа решения поставленной задачи! Выходит, наш решатель программирует сам себя. Трудно ли найти такую цепочку? Разумеется, нет: благо формул мало, искать особенно не приходится. b=ac, S=ab — вот и все. Затем решатель подставляет заданные числа, выполняет арифметические Действия, и на экране появляется ответ: S = 250 см2. Как ни прост был путь к ответу, стоит, наверное, запомнить его, чтобы в следующий раз решить аналогичную задачу еще быстрее. И решатель объединяет 15 |