A3^2 A3*B3
... ... ... ... ...
11 A11^2 A11*B11
формуле можно заполнить так, как показано в таблице 2.4; в ячейке Е1 вычисляется сопротивление R.
Вычисления с помощью электронной таблицы вы проведете, выполняя лабораторную работу 6. А сейчас обсудим один из возможных вариантов проведения эксперимента по измерению сопротивления.
Нередко для того, чтобы точнее установить результат эксперимента, его повторяют при одних и тех же условиях. Пусть и у нас проведено п опытов при одном и том же значении напряжения U. Показания амперметра при этом все равно могли получиться различными. Тогда для k мы получаем следующую формулу:
k =
nU^
А,
и
+
■*2
и
+
k. + k„ + .,.+ k
\ й п
где через обозначено отношение силы тока к падению напряжения, получаемое в опыте с номером т. Оказалось, что в этом случае коэффициент k равен среднему арифметическому коэффициентов, вычисленных по результатам каждого из опытов.
Общий же вывод можно сформулировать так: если в эксперименте не изменяются условия его проведения, то для измеряемой величины в качестве результата нужно взять среднее арифметическое результатов всех проведенных опытов.
По методу наименьших квадратов можно разыскивать и другие линии, которые будут достаточно удовлетворительно описывать экспериментально выявленные зависимости. Если речь идет о линейной, но не прямо пропорциональной зависимости, т. е. зависимости вида ах -Ь Ь, где Ь ^ 0, то коэффициенты а и Ь будут вычисляться как решение системы уравнений:
a'Lx^ + b'Zx^ = 'Lx^y.,
i—l t=l i=l
п п
а I л:. + пЬ = у .
1=1 1=1
71
Информационная деятельность человека и использование в ней компьютерных технологий
Если речь идет о квадратичной зависимости ах^ + Ьх + с, то коэффициенты а, Ь vi с получаются как решение следующей системы уравнений:
'Л. 71 п 71 п 71 п
a'Lxf + b'Lxf + c'Lxf -= Ixfy.,
i=l i—1 i=l i=l
aixf +btxf + cix, = Ijc.y.,
i—1 i=l i=l i—1
a X jcf + b X JCj + nc = X
i=l i=l i=l
Аналогично можно вычислять коэффициенты для представления экспериментальных данных многочленами более высоких степеней.
Преимущество метода наименьших квадратов перед другими методами состоит в том, что имеется простой вычислительный алгоритм для нахождения коэффициентов функции, приближающей таблично заданную функцию, — нужно решить легко составляемую систему уравнений. Есть и другая причина того, что метод наименьших квадратов активно используется при обработке экспериментальных данных. Она состоит в том, что ошибки измерений, как правило, подчинены так называемому закону больших чисел: ошибки с большими значениями встречаются намного реже ошибок с маленькими значениями. Можно математически доказать, что в этом случае именно метод наименьших квадратов дает ту теоретическую кривую, которая должна была бы получиться, если бы измерения производились абсолютно точно.
ВОПРОСЫ и ЗАДАНИЯ
О
Q
0
в чем состоит метод наименьших квадратов? В каких случаях целесообразно его применение?
Как должна выглядеть формула для нахождения сопротивления некоторого фиксированного проводника, если бы в эксперименте задавали силу тока, а соответствующее падение напряжения на концах проводника измеряли?
Во время подъема на воздушном шаре производились измерения температуры с целью установления зависимости температуры от высоты над уровнем моря. Вот данные этих измерений:
Высота, км 1,2 1,8 2,2 2,5 3,0 3,3 3,8
Температура, °С 15 11 8 6 3 1 -2
Предполагая, что зависимость задается линейной функцией ах + Ь, подготовьте заполнение электронной таблицы для нахождения коэффициентов а и & по методу наименьших квадратов.
72
Попытайтесь обосновать метод наименьших квадратов для нахождения коэффициентов в случае гипотезы о линейной зависимости между измеряемыми величинами.
Алгоритм как форма организо14ии процедурной информации
В § 11 мы обсудили, что информация, которой располагает человек, может быть декларативной или процедурной. Напомним, что процедурная информация указывает, как именно получить требуемый результат. Наиболее простой способ представления такой информации — это указание тому, кто будет решать задачу, последовательности действий, приводящих к достижению цели. В § 7 мы вам напомнили, что организованную последовательность допустимых для исполнителя действий, приводящую к определенному результату, называют алгоритмом.
Вот пример представления процедурной информации, списанный нами с упаковки чая:
Как приготовить хороший чай:
® Вскипятите свежую воду.
» Ополосните заварочный чайник крутым кипятком.
- ® Положите чай в заварочный чайник из расчета одна чайная : ложка на чашку и сразу же залейте кипятком.
^ Через 3 минуты размешайте.
® Добавьте сахар по вкусу.
Посмотрев на пачку чая с другой стороны, мы обнаружили тот же алгоритм, записанный на английском языке:
How to make а good tea:
Bring fresh water to boil.
Warm teapot by rinsing out with hot water.
Put one teaspoonful of tea per cup into the teapot and pour immediately the boiling water into the tea.
Stir the tea after 3 minutes.
Add sugar to taste.
Ни у кого не возникает сомнений, что это один и тот же алгоритм. Только одна его запись сделана для исполнителя, понимающего английский язык, а другая — для русскоговорящего испол-
73
Информационная деятельность человека и использование в ней компьютерных технологий
нителя. Ясно, что каждый из исполнителей будет выполнять одни и те же действия, и поэтому, наблюдая за их работой, мы не сможем отличить одного от другого. Более того, можно снять на видеокассету все манипуляции при исполнении алгоритма, а затем показать любому жителю Земли, и ему будет ясно, как заваривать чай. И совершенно не важно, какой язык понимает этот житель! Для нас же важен вывод, что один и тот же алгоритм может быть записан разными способами: в виде текста, схемой алгоритма, функциональной схемой для машины Тьюринга и т. п. Запись алгоритма на языке, понятном формальному исполнителю, называется программой.
Ясно, что алгоритм, записанный на пачке чая, предназначен для человека. Человеку вообще нередко приходится исполнять различные алгоритмы. Но гораздо приятнее поручить такую работу какому-нибудь автоматическому устройству, т. е. формальному исполнителю. Более того, нередко формальный исполнитель справится с алгоритмом гораздо лучше человека — человек может отвлечься и неточно выполнить предписанное действие, может вообще задуматься, стоит ли исполнять данный алгоритм, а может начать его модифицировать, и тогда есть риск, что исполнение алгоритма вообще никогда не закончится. А все потому, что человек, напомним, является не формальным, а эвристическим исполнителем.
Зато в умении составлять алгоритмы на сегодняшний день никакой формальный исполнитель не может превзойти человека. Существуют алгоритмы, позволяющие для некоторых классов задач автоматически строить алгоритмы решения, но эти классы задач весьма узкие. Люди придумали методы, облегчающие создание алгоритмов. Одним из таких методов является метод пошаговой детализации. Продемонстрируем этот метод на следующей задаче.
Еще с 5 класса вы знаете, что любое натуральное число, большее 1, можно представить в виде произведения степеней различных простых чисел. Скажем, 720 = 2^-3^-5^, 32 = 2®, 71 = 71^. Требуется составить алгоритм, который для каждого натурального п > 1 указывал бы все простые множители, входящие в такое разложение, и показатели степеней, с которыми они присутствуют в этом разложении. Первым шагом должно быть определение хотя бы одного простого множителя, делящего данное число п. Дальше путь раздваивается: можно попытаться определить показатель степени, в которой уже найденный простой множитель входит в разложение числа п, или попытаться найти следующий простой множитель, а только потом, когда будут найдены все простые множители, для каждого из них найти показатель степени, с которым он входит в разложение числа п. На рисунке 2.4 в виде схемы изображены два способа решения этой задачи.
Теперь проведем детализацию полученных алгоритмов. Для решения поставленной задачи нужно научиться решать две другие:
74
Рис. 2.4 Поиск разложения натурального числа на произведение простых множителей: а) 1-й вариант пошаговой детализации; б) 2-й вариант пошаговой детализации
находить простои множитель заданного натурального числа п и вычислять показатель степени, с которой он входит в разложение числа п. А поскольку количество различных простых множителей заранее неизвестно, то придется воспользоваться конструкцией цикла в форме Делать пока. Будем далее рассматривать первый способ решения. Преобразуем уже созданный алгоритм (рис. 2.4, а) в схему, изображенную на рисунке 2.5. В этой схеме алгоритма дважды употреблен блок, изображенный на рисунке 2.6.
Из курса информатики, который вы изучали в предшествующих классах, вам известно, что так обозначается обращение к вспомогательному алгоритму или подпрограмме. И в нашем случае для того, чтобы данная схема алгоритма приобрела полноценный вид, в каждый такой блок надо записать имя вспомогательного алгоритма и указать его формальные параметры: аргументы и результаты. Поиск наименьшего простого множителя натурального числа п можно записать следующим вспомогательным алгоритмом:
75
Информационная деятельность человека и использование в ней компьютерных технологий
Алгоритм Простой_множитель (арг: п; рез: р) цел: п, р;
{
}
р := 2;
Делать пока п mod р ^ О
{ р := р + 1;
}
Чтобы обратиться к вспомогательному алгоритму, надо в команде вызова указать имена фактических переменных (или значения), с которыми будет исполняться вспомогательный алгоритм. Например, по команде
Вызвать Простой множитель (15, т);
переменной т будет присвоено значение 3.
Нередко вспомогательный алгоритм, имеющий в качестве результата только один формальный параметр, удобно оформить в виде подпрограммы-функции. Для написанного выше вспомогательного алгоритма это будет выглядеть так:
Функция Простой_множитель faor: п): цел цел: р;
{
}
р := 2;
Делать пока п mod р ^ О
{ р := р + 1;
}
знач := р;
Здесь знач — имя внутренней переменной, предназначенной для хранения значения фзшкции. А чтобы воспользоваться подпрограммой-функцией, достаточно написать
т := Простой множитель (15); .
Чтобы завершить составление алгоритма, нужно еще составить алгоритм нахождения показателя степени, в которой данный множи-
Рис. 2.5
76
тель входит в разложение числа п. Вы составите этот алгоритм, выполняя задание 3.
Умение решать многие задачи эвристически, т. е. не имея никакого алгоритма, — чрезвычайно важная способность человека. Например, задачу определения, кто изображен на фотографии — собака или кошка, человек решает с высоким процентом правильных ответов. Однако никакого алгоритма, позволяющего решить такую задачу, на сегодняшний день нет. Слишком слабы наши возможности формализации этой задачи, и построение адекватной информационной модели пока невозможно.
Может показаться, что проблема создания алгоритма для решения задачи упирается именно в неумение до поры до времени формализовать стоящую перед нами задачу. Речь, конечно, идет о так называемой массовой задаче, т. е. о целом множестве однотипных задач, для решения которых применяется один и тот же алгоритм. Оказывается, что это не так.
Нетрудно доказать, что не существует алгоритма, пригодного для решения любой задачи. Доказательство проведем в два этапа.
Первый этап. Докажем, что для любого исполнителя существует задача, которую он решить не может. Предположим, что это не так: пусть есть исполнитель, который может посредством своих допустимых действий решить любую задачу. Поставим перед ним задачу создать камень, который он не может поднять. А теперь, когда он этот камень создал, поставим перед ним другую задачу — поднять этот камень. Налицо противоречие. Значит, наше предположение неверно, и, следовательно, для любого исполнителя (в том числе формального) существует задача, которую он решить не может.
Приведенное рассуждение — перефразированный аргумент великого немецкого философа И. Канта, жившего в г. Кенигсберге с 1724 по 1804 год, который он привел в доказательство того, что Бог не может быть всемогущим.
Второй этап. Предположим, что существует алгоритм, пригодный для решения любой задачи. Тогда этот алгоритм предназначен для некоторого формального исполнителя. Но исполнитель, вооруженный данным алгоритмом, способен решить любую задачу, что невозможно. Полученное противоречие показывает, что сделанное предположение неверно.
Итак, не существует алгоритма, решающего любые задачи. Но это еще не дает ответа на сформулированный выше вопрос: не в том ли причина отсутствия алгоритма для решения той или иной массовой задачи, что мы не можем ее формализовать? Отрицательный ответ мы уже анонсировали. Теперь мы можем привести пример другой задачи.
Рассмотрим множество алгоритмов, предназначенных для обработки символьной переменной х (т. е. в качестве входного данного для алгоритма выступает некоторый текст). Представим все эти алгоритмы записанными на каком-либо языке програм-
77
Информационная деятельность человека использование в ней компьютерных технологий
мирования. Задача состоит в том, чтобы по тексту алгоритма и значению X узнать, закончит ли алгоритм работу за конечное число шагов.
Оказывается, что для этой задачи не существует алгоритма ее решения. Докажем это, рассуждая и на этот раз от противного.
Пусть существует алгоритм решения этой задачи. Назовем его алгоритмом А. Через В обозначим произвольный алгоритм из указанного множества алгоритмов. Входными данными для алгоритма А служат текст алгоритма В и значение символьной переменной X. Договоримся, что в результате своей работы алгоритм А присваивает некоторой переменной z значение 1, если алгоритм В заканчивает работу на тексте х за конечное число шагов, и значение О в противном случае.
Иными словами, алгоритм А выглядит так:
Алгоритм А (арг: В, х; рез: z) сим: В, х\ цел: Z-,
{ Запросить В;
Запросить х;
Если (алгоритм В заканчивает работу на тексте х за конечное число шагов) то
{ 3 := 1; }
иначе
{ 2 := О; }
}
Рассмотрим множество алгоритмов, которые в качестве допустимого значения х берут свое описание на указанном языке программирования. Построим алгоритм С, принадлежащий этому классу:
Алгоритм С сим: В, Х-, цел; Z-,
{ Запросить Б;
Запросить х;
Z := 1;
Делать пока 2 = 1
Вызвать А{В, х, 2);
}
}
Запустим составленный нами алгоритм С на исполнение. На запрос значений В w. х введем текст алгоритма С. На следующем шаге переменной z будет присвоено значение 1, поэтому затем начнется исполнение тела цикла. Что же произойдет после обращения к вспомогательному алгоритму А?
Допустим, что алгоритм С конечен. Тогда после исполнения алгоритма А значение 2 = 1. Поэтому начнет исполняться тело цик-
I 78
ла. Однако в результате исполнения в теле цикла того же вспомогательного алгоритма значение переменной г не изменится. Поэтому тело цикла будет исполняться бесконечное число раз, и, следовательно, алгоритм С конечным не является. Значит, такая ситуация невозможна.
Допустим теперь, что алгоритм С конечным не является. Тогда после исполнения алгоритма А значение г = 0. В этом случае тело цикла не будет исполняться ни разу, и, следовательно, алгоритм С прекратит работу за конечное число шагов. Тем самым и в этом случае получилось противоречие. Значит, предположение, что существует алгоритм А, было ложным.
Задачи, для которых не существует алгоритма решения, называются алгоритмически неразрешимыми. Сегодня известно уже много алгоритмически неразрешимых задач. И как правило, доказательство их алгоритмической неразрешимости отнюдь не такое простое, как для рассмотренного нами примера. Одна из самых знаменитых задач была сформулирована в 1900 году Давидом Гильбертом на Всемирном математическом конгрессе. Всего он сформулировал 23 проблемы, решение которых, как он считал, определит лик математики XX века. И действительно, решение, даже частичное, любой из его проблем рассматривается как высшее математическое достижение. Проблема под номером 10 звучит так: «Дано произвольное уравнение х^, ..., х^) = 0, где Р{х^^, JCg, ..., л:„) —
многочлен с целыми коэффициентами от указанных переменных. Существует ли алгоритм, позволяющий выяснить, имеет ли это уравнение решение в целых числах?» Лишь спустя 70 лет наш соотечественник Ю. В. Матиясевич доказал, что такого алгоритма не существует.
Пришла пора немного отвлечься и попить чайку. Например, того, что приготовили по написанным выше алгоритмам какой-нибудь русский школьник Ваня и его английский приятель Джонни. К нашему величайшему изумлению, чаек оказался разным: от Ваниного чая язык прилипает к губам, а чай Джонни почти несладкий. Почему один и тот же алгоритм в разном исполнении привел к столь различным результатам?
Все дело в последнем действии: добавлении сахара по вкусу. Это, конечно, допустимое действие для каждого исполнителя. Просто у каждого свой вкус. А мы можем сделать важный вывод:
|п| Результат исполнения алгоритма зависит от того, какой испол-L=J нитель этот алгоритм исполняет.
ВОПРОСЫ и ЗАДАНИЯ
Q а) Что такое вспомогательный алгоритм?
б) Когда можно вспомогательный алгоритм оформить в виде подпрограммы-функции?
[Информационная деятельность человека и использование в ней компьютерных технологий
Q а)* Проанализируйте алгоритм Простой_множитель и попытайтесь объяснить, почему в качестве результата будет получено простое число, б) Объясните, почему этот алгоритм конечен.
Q а) Составьте вспомогательный алгоритм для нахождения показателя степени, в которой данный множитель входит в разложение числа п. Оформите его в виде подпрограммы-функции с двумя формальными параметрами, б) Используя составленные вспомогательные алгоритмы, разработайте алгоритм решения основной задачи: построение разложения натурального числа п в произведение различных простых множителей.
Q а) в § 7 записан алгоритм Евклида вычисления наибольшего общего делителя двух натуральных чисел. Оформите его в виде подпрограммы-функции, б) Функцией Эйлера В) то { В := А + В; Если (А < В) то { В := А + В; Сообщить А;
Сообщить В;
(* конец цикла *) (* конец цикла *)
а)
0 1 0 -1
1 0 -1 1
2 -1 2 1
-1 0 -1 2
0 1 1 1
б)
-1 0 2 1
1 -1 0 2
0 1 -1 2
2 0 1 -1
-1 0 3 1
в)
1 0 1 2
3 -1 -1 -1
1 -1 1 -1
0 1 2 -1
-1 0 1 2
Q Требуется заполнить массив А[1:6, 1:6] из целых чисел по правилу a(k,n) = = й" - л*. Изобразите схему алгоритма, позволяющего заполнить массив нужным образом.
Q Дан трехмерный числовой массив А[1:10, 1:10, 1:10].
а) Составьте алгоритм поиска максимального элемента в этом массиве.
i 86
б) Составьте алгоритм, сообщающий индексы всех наименьших элементов данного массива.
Q Дан трехмерный массив М[1:100, 1:20, 1:75] вещественного типа.
а) Составьте алгоритм вычисления суммы всех положительных элементов массива.
б) Составьте алгоритм, позволяющий выяснить, каких элементов — положительных или отрицательных — в массиве больше и на сколько.
Q Даны 100 точек на плоскости. Будем считать, что они занумерованы числами от 1 до 100, а их координаты размещены в двумерном массиве М[1:2, 1:100], где — абсцисса ;-й точки, а М(2,/) — ордината той же точки. Составь-
те алгоритм, после исполнения которого будут сообщены номера точек, наиболее удаленных друг от друга.
Q Прямоугольная таблица заполнена числами -1, 0 и 1.
а) Требуется изменить на противоположное то ненулевое число, которое находится в клетке, наиболее удаленной от левой верхней угловой клетки таблицы. Составьте соответствующий алгоритм. (Расстояние между клетками — это расстояние между центрами этих клеток.)
б) Требуется изменить на противоположные числа в тех парах ненулевых чисел, для которых расстояние между клетками, в которых стоит эта пара, наибольшее. Составьте соответствующий алгоритм.
Q Дан одномерный массив, заполненный целыми числами. Требуется построить массив, содержащий только четные числа из исходного массива, или сообщить, что все числа в исходном массиве нечетны. Составьте алгоритм, решающий такую задачу.
ф Представьте, что одномерный массив «склеен» в кольцо, т. е. после последнего элемента снова идет первый. Требуется в таком «кольцевом» массиве каждый элемент заменить полусуммой его двух соседей. Составьте алгоритм, решающий эту задачу.
Решение уравнений методом половинного деления
Рассмотрим один из методов приближенного решения уравнений. В курсе математики вы изучаете различные типы уравнений. Для некоторых имеются формулы, по которым можно вычислять значения корней. Однако в реальных задачах гораздо ча-ш;е встречаются уравнения, для которых таких формул указать нельзя. Вот одна из таких задач.
На поверхности воды плавает цилиндрический деревянный брусок длины I и радиуса г (рис. 2.8, а). Какова высота его надводной части?
Поскольку брусок плавает, сила тяжести уравновешена вытал-киваюш;ей силой. Сила тяжести равна, как известно, произведению объема на удельный вес. Если обозначить удельный вес через d (для дерева можно принять d ~ 0,8), то вес бруска будет равен Ttr^ld. Выталкиваюш;ая сила по закону Архимеда равна весу вытесненной жидкости. Чтобы подсчитать объем вытесненной жидкости, рассмотрим рисунок 2.8, б и обозначим через х величину угла АОВ в радианах. Тогда интересуюш;ий нас объем равен разности объ-
87
Информационная деятельность человека и использование в ней компьютерных технологий
Рис. 2.8
ема всего бруска и той части, которая выступает над водой. Легко сообразить, что объем надводной части равен произведению длины I на площадь сегмента. Площадь сегмента, в свою очередь, равна разности площади сектора с центральным углом АОВ и площади АЛОВ. Напомним, что площадь сектора равна -хг^, а пло-
2
щадь треугольника — r^sinx. Тем самым площадь сегмента равна -г^(х - sinx). Поскольку удельный вес воды равен 1, получаем урав-
а
нение для определения х:
nr^l - \it^(x - sinx) = TiT^ld.
Преобразуем его:
X - sinx - 2к(1 - d) = 0.
Если мы решим это уравнение, то без труда найдем глубину погружения бруска: г -I- rcos
Однако никакой формулы, выражающей х через л; и d, не существует. Возникает задача научиться находить приближенное значение X для каждого заданного значения d.
Прежде всего отметим, что при х = О левая часть данного уравнения отрицательна, а при х = к положительна, поскольку d > 0,5. Поэтому если мы представим себе график функции у = х - sin х --2т1(1 - d), то при изменении аргумента от 0 до д этот график переходит из нижней координатной плоскости в верхнюю. Следовательно, в некоторой точке этот график пересечет ось абсцисс. Эта точка и даст нам корень рассматриваемого уравнения.
Любители математики могут даже доказать, что указанная функция возрастающая, поэтому рассматриваемое уравнение имеет ровно один корень.
Обсудим теперь ситуацию в общем виде, а не только применительно к той функции, которая возникла в этой задаче.
Нам дана некоторая функция f(x) и отрезок [а; &], причем на концах этого отрезка функция принимает значения противоположных знаков (рис. 2.9). Если функция непрерывна, т. е. ее график —
88
непрерывная линия, то график функции пересекает ось абсцисс в некоторой точке с отрезка [а; &]. Иными словами, f(c) = О, т. е. с — корень уравнения f(x) = О.
Для нахождения корня уравнения сформулируем метод половинного деления для приближенного решения уравнения fix) = 0.
Рассмотрим середину отрезка [а; &], т. е. точку на оси Ох с координатой (а -Ь &)/2. В этой точке вычисляем значение функции f(x). Если это значение 0, то корень найден; если нет, то оно имеет тот же знак, что и значение на одном из концов отрезка [а; &]. Тогда выбираем новый отрезок так, чтобы один из его концов был точкой (а -Ь Ъ)/2, а функция f(x) на его концах снова имела разные знаки. Новый отрезок тоже содержит корень уравнения f(x) = 0. Однако этот отрезок в 2 раза короче предыдущего. И самое главное — с ним можно поступить точно так же. Опять поделим отрезок пополам и тем самым еще раз уменьшим его вдвое. Таким образом мы можем получить отрезок как угодно малой длины, внутри которого содержится корень уравнения fix) = 0. Например, если исходный отрезок был [3; 4], т. е. имел длину 1, то через де-
1 1
Рис. 2.9 Поиск корня методом деления пополам
сять шагов мы получим отрезок длиной
2
< 0,001. Это
1024
означает, что концы отрезка дают нам приближенное значение корня с точностью, равной длине отрезка: левый конец отрезка — приближенное значение корня с недостатком, правый конец — приближенное значение корня с избытком.
Запишем теперь алгоритм решения уравнения fix) = 0 методом половинного деления.
Алгоритм Решение_уравнения веш: о, Ь, х, у, г, е\
{ Запросить а;
Запросить Ь\
Запросить е;
Делать пока Ъ - а > е { г := (о -Ь Ь)/2;
Если f{z) * f(a) > о то { а := г; } иначе { & := г; }
}
Сообщить г;
(* левый конец промежутка *) (* правый конец промежутка *) (* точность *)
(* конец ветвления *)
(* конец цикла *)
(* конец алгоритма *)
89
Информационная деятельность человека и использование в ней компьютерных технологий
Надо только сделать следующее замечание. Вместо f{x) в алгоритме должно быть либо записано соответствующее арифметическое выражение, либо организован вызов вспомогательного алгоритма, вычисляющего требуемое значение функции. В нашем случае речь идет именно об арифметическом выражении х - sin л: - 2л(1 - d).
ВОПРОСЫ и ЗАДАНИЯ
в чем состоит метод половинного деления при нахождении нужного значения переменной?
Уравнение дс® + Зд: - 1 = О на отрезке [0; 1] имеет корень (попытайтесь объяснить почему). Для его вычисления Коля составил следующий алгоритм: Алгоритм веш: X;
{ X := 0;
Делать пока (X® + 3*Х - 1 < 0)
{ X := X + 0.01;
} (* конец цикла *)
Сообщить "Корень равен", X;
}
а) Определите, с какой точностью вычисляется корень по Колиному алгоритму.
б) Петя, списывая у Коли этот алгоритм, по невнимательности переставил местами две строки. Тем не менее и по Петиному алгоритму компьютер нашел корень. Какие две строки оказались переставленными?
в) Запишите алгоритм вычисления всех корней уравнения дс® + Здс - 1 = 0 с точностью 0,01.
Измерение количества информации
Название параграфа, возможно, вызовет у вас недоумение — ведь в § 4 уже говорилось о единицах измерения информационного объема, и вы, без сомнения, помните, что такое бит, байт, килобайт и т. п.
Все это верно. Но нужно понимать, что введение указанных единиц преследовало чисто технологические цели, никак не отражая смысловое содержание информационного объекта. К примеру, если на диск дважды записано одно и то же сообщение, то места на нем занято в 2 раза больше, чем в том случае, когда на диск сообщение записано однократно. Значит, и в байтах мы получим число, в 2 раза большее, чем для одного сообщения. Однако из повторного сообщения мы никакой новой (по смыслу) информации не имеем, так что количество информации остается тем же, что и после получения первого сообщения. И вообще, если в сообщении говорится о том, что уже известно получателю информации, то естественно считать, что количество информации у получателя не изменилось. Впрочем, если сообщение не может быть понято получа-
90
телем информации (не важно, в силу недостатка знаний у получателя или искажений в ходе передачи информации), то оно тоже не несет для него информацию.
Чтобы разобраться в связи между техническим подходом к измерению количества информации и семантическим (смысловым), рассмотрим игру «Угадайка». Правила игры таковы.
Один игрок задумывает целое число из заранее определенного диапазона, например от 1 до 16. Второй игрок, задавая такие вопросы, на которые первый может отвечать только «да» или «нет», должен выяснить, какое число было задумано. К примеру, можно спросить: «Верно ли, что задуманное число равно 7?» или «Больше ли задуманное число 3?».
Поиграйте с соседом по парте в эту игру и попытайтесь понять, какое наименьшее число вопросов гарантирует вам отгадывание числа.
Теперь порассуждаем. Конечно, число можно выяснить, задавая последовательно вопросы: «Верно ли, что задумано число 1?», «Верно ли, что задумано число 2?», «Верно ли, что задумано число 3?» и т. д. На какой-то из вопросов ответ будет «да». Но не исключено, что это будет шестнадцатый по счету вопрос.
Как же гарантированно получить ответ за меньшее число вопросов? Вспомним метод половинного деления, о котором мы рассказывали в § 17.
Разделим наши числа от 1 до 16 на две равные группы от 1 до 8 и от 9 до 16. Вопросом «Верно ли, что задуманное число больше 8?» мы заставим игрока сказать нам, в каком из этих двух интервалов находится задуманное им число. Вторым вопросом мы найденный нами интервал разделим еще раз пополам: если ответ игрока на первый вопрос был утвердительным, то спросим: «Верно ли, что задуманное число больше 13?» Теперь уже задуманное число находится в интервале, состоящем всего лишь из четырех чисел. Следующий, третий по счету вопрос разделит этот интервал еще раз пополам. Из оставшихся двух чисел узнать задуманное можно, задав всего лишь один вопрос. Итак, четырех вопросов здесь оказалось достаточно, чтобы определить задуманное число.
Нетрудно понять, что если исходный диапазон чисел был бы от 1 до 32, то хватило бы пяти вопросов для гарантированного угадывания задуманного числа. Если исходный диапазон от 1 до 64, то хватило бы шести вопросов. И т. д.
Ситуацию в игре «Угадайка» можно описать так. В начале игры неопределенность в выборе задуманного числа составляла 16 условных единиц — любое число из 16 могло оказаться задуманным. После первого вопроса неопределенность уменьшилась вдвое — задуманным теперь могло оказаться любое из 8 чисел. После второго вопроса неопределенность уменьшилась еще вдвое и т. д. Иными словами, ответ на каждый вопрос давал нам информацию, вдвое уменьшающую неопределенность.
91
Информационная деятельность человека и использование в ней компьютерных технологий
И Поэтому в информатике договорились принять количество информации, уменьшающей вдвое неопределенность исходной ситуации, равным одному биту.
Теперь ясно, что количество информации, уменьшающей неопределенность в 4 раза, равно двум битам, уменьшающей в 8 раз — трем битам и т. д. Вообще, если полученная информация уменьшает неопределенность в 2* раз, то количество этой информации равно k. Возможно, что при этом число k окажется не натуральным числом — ведь неопределенность может уменьшиться, например, в 3 раза или в 5 раз, т. е. в некоторое число раз, не являющееся степенью числа 2 с натуральным показателем. Довольно скоро в курсе математики вам будет показано (а кто-то, может быть, уже знает сейчас), что для любого положительного числа п найдется такое число k, для которого п = 2*. Число k в этом случае называют логарифмом числа п по основанию 2 и обозначают logg/i.
И Если полученная информация уменьшает неопределенность в п раз, то количество этой информации равно log2Tt. Иными словами, если необходимо выделить один объект из множества, содержащего п равноправных объектов, мы должны располагать logg/i информации об этом объекте.
Почему же и при техническом подходе к измерению объема информации, и при семантическом подходе используются одни и те же единицы — биты, байты, килобайты?.. Попробуем в этом разобраться.
Напомним, что всю информацию, циркулирующую в компьютере и хранящуюся в его памяти, можно представлять себе закодированной в двухсимвольном алфавите, например, в виде последовательностей из О и 1. То же самое можно сказать и об информации, передаваемой по каналам связи. Сама схема передачи информации еще раз представлена на рисунке 2.10.
Под приемником информации мы здесь понимаем человека или автоматическое устройство, которое просто фиксирует сигналы, поступающие к нему по каналу связи. Он при этом не обязан вникать в смысл передаваемой информации и может просто не знать код, которым закодировано исходное сообщение. Тем самым перед получением очередного сигнала приемник информации находится в состоянии неопределенности — придет сигнал, соответствующий символу о, или сигнал, соответствующий символу 1. Когда
Рис. 2.10
92
сигнал приходит, неопределенность уменьшается вдвое (или полностью исчезает), т. е. приемник информации получает, как мы выше договорились, 1 бит. Теперь уже ясно, что, получив последовательность из п символов двоичного алфавита, приемник информации получил п бит. Вот мы и получили тот же вывод, который ранее предлагался вам в качестве определения количества информации при чисто техническом подходе.
А можно ли, наоборот, исходя из кодирования, прийти к смысловому пониманию количества информации? Чтобы ответить на этот вопрос, проведем следуюш;ий эксперимент. Рассмотрим числа от О до 2* - 1. Чтобы эксперимент был не слишком утомительным, ограничимся числами от О до 15 (15 = 2^- 1). Пусть задумано какое-нибудь число из этого интервала (к примеру, число 5). А теперь, задавая вопросы оптимальным образом, попытаемся угадать это число. Договоримся только, что все вопросы будут иметь форму «Верно ли, что задуманное число больше ...?». При этом, получив ответ «да», будем писать 1, а получив ответ Вот эти вопросы и ответы для нашего числа:
«нет», писать 0.
1. Верно ли, что задуманное число больше 7?
2. Верно ли, что задуманное число больше 3?
3. Верно ли, что задуманное число больше 5?
4. Верно ли, что задуманное число больше 4?
Нет Да Нет Да 5
0
01 010 0101
Но самое
После этих четырех вопросов число угадано главное — в правом столбце в тот момент, когда число угадано, появляется его запись в двоичной системе счисления! Иными словами, последовательность ответов на вопросы — это двоичное кодирование информации. Сами же вопросы (точнее, метод их генерирования; в нашем случае — оговоренная заранее форма вопроса) определяют способ кодирования. Верно и то, что, если способ кодирования задан, следуюш;ий вопрос можно задавать независимо от ответа на предыдуш;ий. К примеру, в данной игре можно сформулировать вопросы так:
1. Верно ли, что в двоичной записи задуманного числа первая цифра 1?
2. Верно ли, что в двоичной записи задуманного числа вторая цифра 1?
3. Верно ли, что в двоичной записи задуманного числа третья цифра 1?
4. Верно ли, что в двоичной записи задуманного числа четвертая цифра 1?
Фактически именно эти вопросы и задавались в игре, но, поскольку о двоичном кодировании договоренности не было, пришлось в неявном виде это кодирование проводить.
В «Угадайку» можно играть не только с числами. Можно расшифровывать названия загаданных животных или фамилии знаменитых писателей. И вообще, задавая вопросы, на которые даются лишь ответы «да» и «нет», можно узнать любые сведения.
93
Информационная деятельность человека и использование в ней компьютерных технологий
т. е. смысловое содержание информации. Если при этом на каждое «да» мы будем писать 1, а на каждое «нет» — О, то мы получим двоичный код «добываемой» информации.
Тот факт, что с помощью вопросов, допускающих лишь ответы «да» и «нет», можно получить любую интересующую нас информацию, люди знали, по-видимому, очень давно. Однако только в середине 20-го столетия было осознано, что такой способ получения информации эквивалентен двоичному кодированию и может быть использован для вычисления количества информации.
Последовательность вопросов задает кодирование, и если она фиксирована, то по двоичному коду можно однозначно восстановить все ответы. Заметим, что, задавая лишь конечное число вопросов, мы способны выявить не всю информацию об объекте, а только какую-то ее часть. К примеру, играя в «Угадайку», мы пытались определить задуманное животное и уже узнали, что это кит. Далее мы можем выяснять, к какому виду принадлежит этот кит, каков его возраст и т. д. Каждый объект описывается бесконечным числом свойств, мы же всегда ограничиваемся конечным набором тех из них, которые нам представляются существенными. Иными словами, процесс кодирования, сопровождающий получение информации, мы всегда обрываем на конечном шаге, удовлетворяясь подходящим для нас приближением.
Здесь уместна такая аналогия. Вам хорошо известно, что каждое иррациональное число записывается, т. е. кодируется, в десятисимвольном алфавите бесконечной непериодической дробью. Человек не может воспринимать и обрабатывать такие дроби. Поэтому он в своей практической деятельности ограничивается подходящими приближениями, обрывая эту запись на том или ином разряде. Можно сказать, что такие приближения моделируют данное иррациональное число. Использование приближений основано на уверенности (и математически доказанном факте), что такая замена числа его приближением не приведет к существенным искажениям.
В теории информации доказана аналогичная теорема об универсальности двоичного кодирования:
всегда существует двоичное кодирование, как угодно полно отражающее информацию об объекте.
Первым понятие количества информации ввел американский ученый Клод Шеннон. Занимаясь проблемой передачи информации по каналам связи, он заложил основы теории информации, которая теперь является одним из краеугольных камней информатики. Правда, подход к измерению количества информации в сообщении у него был иной, нежели тот, который мы изложили в этом параграфе. О его воззрениях на проблему измерения количества информации мы расскажем в главе 3. Там же будет приведена более общая формула для количества информации.
Как видно из нашего обсуждения, во всех рассмотренных нами способах определения количества информации важную роль игра-
94
Клод Шеннон
ет способ кодирования этой информации. А нельзя ли так определить количество информации, чтобы избежать этой зависимости от кодировгшия? Оказывается, можно. Идею, как это можно сделать, предложил выдающийся математик академик А. Н. Колмогоров. Вот в чем состоит его идея.
Представим, что некое сообщение (текстовое или графическое) создано в соответствующем редакторе и сохранено на диске. Оно имеет вполне определенный информационный объем. Применим какой-нибудь архиватор. Информационный объем сообщения уменьшится, причем для разных архиваторов результат вполне может оказаться различным. Каков же на самом деле информационный объем сообщения?
Заметим, что применение архиватора можно рассматривать как простое изменение способа кодирования информации. На первый взгляд за количество информации можно взять минимальный информационный объем, который получают, используя разные способы кодирования. Но тогда, во-первых, можно считать, что все сообщение закодировано каким-нибудь одним символом (и тогда информационный объем просто всегда равен 1), во-вторых, чтобы получатель информации понял, что ему сообщают, придется дополнительно посылать расшифровку этого символа. А тогда мы только увеличиваем информационный объем — посылаем символ и к нему его расшифровку в виде того же сообщения.
Разумеется, можно послать не расшифровку, а алгоритм декодирования или, что еще лучше, встроить алгоритм декодирования в само сообщение (наподобие самораспаковывающихся архивов). Поэтому естественно при подсчете количества информации в сообщении учитывать и информацию, необходимую для кодирования и декодирования. То, что мы не делаем этого при других подходах к измерению количества информации, объясняется тем, что способ кодирования считается известным как источнику информации, так и его получателю. Тогда сообщение о способе кодирования уже не несет для получателя информации и на количестве передаваемой информации не сказывается.
Таким образом, определение количества информации, по Колмогорову, отличается от других определений тем, что учитывает процессы кодирования и декодирования информации.
Приведем пример. Пусть нам требуется передать в сообщении все натуральные числа от 262 144 до 823 543. Если составить сообщение из всех этих чисел, не забыв пробелы между ними, то в таком сообщении будет 3 929 799 символов, т. е. информационный объем сообщения составит более 3837 Кбайт.
95
Информационная деятельность человека и использование в ней компьютерных технологий
Но вместо этого можно в виде сообщения передать следующий алгоритм:
Алгоритм Пересылка цел: TV,
{ Делать от п := 262 { Сообщить п;
144 до 823 543
}
}
(* конец цикла *) (* конец алгоритма *)
В записи этого алгоритма использовано меньше 100 символов, т. е. его информационный объем меньше 100 байт. Тем не менее информация этим сообщением будет передана та же самая.
Отметим, что это еще не самая короткая запись алгоритма; можно, например, исключить комментарии. Тем не менее ясно, что теоретически существует самое короткое самодекодирующееся сообщение, содержащее данную информацию. Вот его информационный объем и берется за количество информации в данном сообщении.
На практике пользоваться определением количества информации, по Колмогорову, весьма затруднительно, в частности потому, что нет способов нахождения оптимального алгоритма кодирования для любого наперед заданного сообщения. Поэтому, как правило, используются другие подходы. Однако для теории информации это определение играет важную роль.
ВОПРОСЫ и ЗАДАНИЯ
Q Как связано уменьшение неопределенности с количеством полученной информации?
Q Какое количество информации мы должны получить, чтобы угадать одно из 64 первых натуральных чисел? одно из 128 первых натуральных чисел? одно из 100 первых натуральных чисел? Сколько вопросов в игре «Угадайка» придется задать, чтобы гарантированно получить ответ в каждом из этих трех случаев?
О а) Задумывается нечетное число от 1 до 63. Сколько вопросов в игре «Угадайка» придется задать, чтобы гарантированно угадать задуманное число?
б) Известно, что задуманное число меньше 1000 и является квадратом некоторого целого числа. Сколько вопросов в игре «Угадайка» придется задать, чтобы гарантированно угадать задуманное число? Сколько бит информации вы получили дополнительно, располагая сведениями, что задуманное число является не просто целым неотрицательным числом, а квадратом некоторого целого числа?
Q Объясните, почему в игре «Угадайка» с первыми 16 натуральными числами нельзя гарантировать угадывание числа за 3 вопроса.
© Два игрока играют в «Угадайку» (для химиков): один загадывает название химического элемента, а другой, задавая вопросы о его свойствах, должен определить загаданный элемент. Какое наименьшее число вопросов требуется задать, чтобы гарантированно угадать элемент?
96
Q a) Заметим, что 262144 = 2'®, a 823 543 = 7^. Используя эту информацию, составьте еще более короткий, нежели в объяснительном тексте, алгоритм, позволяющий передать сообщение, состоящее из всех чисел в диапазоне от 262144 до 823 543.
б)* При выполнении задания а вам удалось сократить информационный объем передаваемого сообщения за счет использования дополнительной информации о содержании сообщения. Обдумайте это наблюдение и попытайтесь привести другие подобные примеры. Какие выводы можно сделать из этого наблюдения?
ИТОГИ ГЛАВЫ
Повторим кратко то основное, что вы узнали, изучив главу 2.
Фактографическими называют модели, в которых информация о некой совокупности объектов хранится в виде записей, сопоставляющих каждому объекту его свойства (признаки, атрибуты). Фактографические модели обычно реализуются в виде баз данных. Для работы с базой данных используется программная оболочка — система управления базой данных (сокращенно СУБД). Пользователю базой данных нередко предоставляется ограниченный доступ к функциям, реализуемым СУБД, а именно: обычно разрешается осуществлять лишь поиск в базе данных без права размещения в ней собственной информации и изменения уже имеющейся. База данных с такими ограниченными возможностями называется информационно-поисковой системой (ИПС). По способу организации связей между атрибутами различают три вида баз данных: иерархические, реляционные и сетевые.
Моделью деятельности человека или работы автоматического устройства нередко выступает алгоритм. При разработке алгоритмов для решения сложных задач полезно использовать вспомогательные алгоритмы. Такой алгоритм имеет заголовок, в котором указывается имя вспомогательного алгоритма, а также список имен переменных, служащих для передачи информации, подлежащей обработке вспомогательным алгоритмом, и результатов его работы. Эти переменные называются формальными параметрами. Для обращения к вспомогательному алгоритму используется оператор Вызвать, в котором указываются значения переменных, передаваемые во вспомогательный алгоритм. Вспомогательные алгоритмы, записанные на языке программирования, называются подпрограммами.
Вспомогательные алгоритмы часто возникают, когда для решения задачи применяется метод пошаговой детализации. Он состоит в том, что исходная задача разбивается на несколько задач, решение которых либо уже известно, либо представляется, что решить их будет легче, чем исходную задачу.
Последовательность чисел называется заданной рекуррентно, если, начиная с некоторого номера, каждый ее член определен как значение функции от предшествующих членов.
97
Информационная деятельность человека и использование в ней компьютерных технологий
Рекурсивным называется алгоритм, который обращается сам к себе как к вспомогательному алгоритму (непосредственно или через другие вспомогательные алгоритмы).
Для обработки большого числа данных одинаковой природы используются массивы. Массив — это набор однотипных переменных, снабженных системой из одного или нескольких индексов, каждый из которых принимает последовательные целые значения. Количество используемых индексов называют размерностью массива, тип входящих в него элементов — типом данного массива. Чтобы задать массив, надо указать его имя, тип, диапазон изменения каждого индекса. Элемент массива также имеет имя, состоящее из имени массива и значений индексов, определяющих данный элемент. Каждый элемент массива представляет собой отдельную переменную: к нему можно обратиться и присвоить значение точно так же, как и для «самостоятельной» переменной.
Одним из эффективных методов решения уравнений является так называемый метод деления пополам. Если функция f{x) непрерывна (т. е. ее графиком является непрерывная линия) и на концах некоторого отрезка принимает значения разных знаков, то, во-первых, на этом отрезке обязательно есть корень уравнения f{x) = О и, во-вторых, методом деления пополам можно вычислить корень этого уравнения с любой наперед заданной точностью.
В информатике принято количество информации, уменьшающей вдвое неопределенность заданной ситуации, считать равным одному биту.
Часть 1. При выполнении предложенных ниже заданий запишите у себя в тетради шифр задания и номер правильного ответа. По окончании работы сверьте получившуюся у вас запись с ключами на с. 269.
А1. Формальные параметры вспомогательного алгоритма — это:
переменные, используемые во вспомогательном алгоритме; аргументы вспомогательного алгоритма;
3) переменные, указанные в заголовке вспомогательного алгоритма; количество переменных в заголовке вспомогательного алгоритма.
А2. Массив — это:
1) последовательность переменных;
“2):; набор однотипных переменных, снабженных системой целочисленных индексов;
3) ’ расположение элементов в виде одной или нескольких строк;
4) в пунктах 1—3 нет правильной формулировки.
4—Гейн, 10 кл.
98
АЗ. База данных, в которой информация представлена в виде записей в таблицах, является:
ДЦ иерархической; Щ' реляционной; сетевой;
любой из указанных в пунктах 1—3 видов.
А4. В таблице дан фрагмент однотабличной базы данных «Озера» (в первой строке указаны имена атрибутов).
Название Глубина, м Площадь, кв.км Континент Высота над уровнем моря, м
Аральское 68 33 640 Азия 53
Байкал 1741 31500 Азия 455
Гурон 228 59 700 Америка 177
Маракайбо 250 13 512 Америка 0
Виктория 80 69 485 Африка 1134
Чад 4 11000 Африка 240
Ладожское 225 17 700 Европа 5
Севан 99 1400 Европа 1914
Количество записей, удовлетворяющих запросу «Площадь > 11 000 и Высота < 200 или Глубина < 250», равно:
1; 3; Щ 5; другому, чем в пунктах 1—3, числу.
А5. В результате эксперимента получена информация, которая уменьшила неопределенность в 8 раз. Количество этой информации равно:
jf) 3 бита; 5^4 1 байт; 3 байта; другому числу байтов.
А6. Размерность массива — это:
Л количество индексов, используемых для описания массива; наибольшее значение какого-либо индекса массива; количество элементов в массиве; в пунктах 1—3 нет правильной формулировки.
А7. Дан алгоритм:
Алгоритм
веш: X, У, М[1:10]; цел; К-,
{ X := (М(1) -I- М(10) Ч- ABS(M(1) - М(10)))/2;
У := (М(1) + М(10) - ABS(M(1) - М(10)))/2;
Делать от К" := 1 до 10
99
Информационная деятельность человека и использование в ней компьютерных технологий
{ Если (У < М{К) < X) IQ { Сообщить М(К);
}
}
(* конец ветвления *) (* конец цикла *)
}
Этот алгоритм был исполнен для массива М, описанного следующей таблицей:
-1,2 -0,5 3,6 -1,2 1 2,1 1,9 0 -1,5 3
После исполнения сообщено:
1) 1 число; 2У 3 числа; 3J 5 чисел;
А8. Дан алгоритм:
Алгоритм
веш: X, Y, М[1:10]; цел: К;
{ X := М(1);
У := М(1);
Делать от К := 2 ао 10 { Если (М(К) < X) то { X := М{К);
}
Если (М(К) > У> то { У := М{КУ,
}
}
Сообщить Y - X;
6 чисел.
(* конец ветвления *)
(* конец ветвления *) (* конец цикла *)
}
Этот алгоритм был исполнен для массива М, описанного следующей таблицей:
1,2 -0,5 3,6 0,8 -1 2,1 1,9 0 -1,5 3
После исполнения сообщено число:
1) 2,1; 2) 5,1; Щ -1,5;
_4(); другое, чем указанное в пунктах 1—3.
А9. Некто задумал натуральное число, не превосходящее 1000, а затем сообщил: «Задуманное мною число является кубом целого числа». Количество бит информации, содержащейся в этом сообщении, равно:
Д logglOOO; f)‘ 2; fit logglO; другому числу.
А10. Дан алгоритм:
Алгоритм
цел: К, М, N; вещ: L;
{ Запросить К;
L := 0;
4*
100
Делать от М •.= 1 ао К { Делать от N := 1 ао К
{ L := (L + (М + N) /
}
}
Сообщить L;
(M/N + N/M));
(* конец цикла *) (* конец цикла *)
}
На некотором компьютере при ЛГ = 10 000 этот алгоритм исполняется в течение 0,5 с. На том же компьютере этот алгоритм при К = 100 000 будет исполняться:
Ш-. ~ 5 с; ~ 25 с; Шк ~ 50 с; ~ 2 мин.
А11. Дан алгоритм, в работе которого используются две подпрограммы-функции:
Алгоритм цел: К, М, N;
{ Запросить М;
Запросить N;
К := А (М, N);
Сообщить M*N/K;
}
Подпрограмма-функция А Гиел: М, N): цел { Если М < 3 то { знач := М; }
иначе { знач := Int (М/3) + В (М - 1, N); }
}
Подпрограмма-Функция В Гцел: М, N): цел { Если < 3 то { знач := N; } иначе { знач := 3 * N - А (М, N - 2); }
}
Результат работы алгоритма при М = N = 10 обозначим через С, а результат работы алгоритма при М = N = 9 обозначим через D. Тогда
С < £>; Щ С = D; С > D;
при одном из указанных наборов значений М и N алгоритм не заканчивает работу.
Часть 2. При выполнении предложенных ниже заданий запишите у себя в тетради шифр задания и ответ в виде последовательности символов. По окончании работы сверьте получившуюся у вас запись с ключами на с. 269.
В1. В квадратной таблице размером 8X8 одна клетка закрашена черным цветом, остальные клетки белые. Требуется установить, где она располагается (т. е. узнать номер ряда и номер столбца, на пересечении которых находится клетка). Получена информация, что клетка стоит
101
Информационная деятельность человека и использование в ней компьютерных технологий
на диагонали, начинающейся в верхней левой клетке. Количество полученной информации равно _______бит.
В2. В базе данных отдела кадров небольшой фирмы имеется 50 записей о рабочих трех категорий: токарях, слесарях и разнорабочих. Среди атрибутов в этих записях, кроме специальности, фигурирует атрибут «пол» со значением «м» или «ж». Количество записей N, удовлетворяющих различным запросам, приведено в таблице:
Запрос N
пол = м U специальность ^ разнорабочий 28
специальность ^ слесарь 35
пол = ж и специальность ^ токарь 12
Количество записей, удовлетворяющих запросу «пол = м и специальность = токарь или пол — ж и специальность = разнорабочий», равно _____.
ВЗ. Дан алгоритм и подпрограмма-функция:
Алгоритм цел: К, М\
{ Запросить М;
К := ФОКУС (М);
Сообщить М/К',
}
Пояпрогоамма-функция ФОКУС (цел: М): цел { Если М < 10 ifi { знач := М; }
иначе { знач := (М mod 10) * ФОКУС (ШТ(М/10); }
}
Если на запрос алгоритма будет введено число 128, то по окончании работы алгоритма будет сообщено число___.
'i Oij IC о O' о 1 о GC>
B этой главе речь пойдет о моделировании процессов, изучаемых различными научными дисциплинами. А поскольку речь идет о моделировании реальных процессов, то главное внимание будет уделено проблеме адекватности построенных моделей.
§ 19
Моделирование физических процессов
Современная физика — это необъятная область человеческого знания. Начнем с раздела, научный стаж которого в физике насчитывает более пяти веков. Этот раздел — механика.
В школьном курсе физики подробно обсуждаются два вида механического движения — равномерное и равноускоренное. Если тело движется равномерно и прямолинейно, то это значит, что никакие силы на него не действуют. Равноускоренное движение возникает в том случае, когда сила, вызывающая движение, постоянна.
Обычным примером движения под воздействием постоянной силы является движение твердого тела в поле земного тяготения. Действительно, если тело находится на достаточно близком расстоянии от Земли, то можно считать, что тело данной массы притягивается с постоянной силой. Потому модель равноускоренного движения рассматривается на уроках физики, когда говорят о движении тела под углом к горизонту. Математические формулы, описывающие такую модель, известны каждому.
Выйдем на улицу и посмотрим, так ли уж хорошо эта модель согласуется с различными природными явлениями. Например, действие силы земного тяготения заставляет падать на землю капли дождя. Каждый из вас попадал под теплый веселый летний дождь или под осенний моросящий. Какую скорость согласно данной модели должна иметь около поверхности Земли капля, сорвавшаяся с высоты 8 км?
На уроках физики вы получили формулу для скорости тела при его движении в поле силы тяжести, если начальная скорость была нулевая: ---
v = yj2ghy
103
Моделирование процессов живой и неживой природы
где h — высота, с которой тело начинает движение к поверхности Земли. Поскольку нам не нужны точные расчеты, будем считать, что ^ ~ 10 м/с^. В этом случае скорость v ~ 400 м/с. Но капля, летящая с такой скоростью, подобна пуле, удар которой пробил бы насквозь оконное стекло.
Этого, однако, не происходит. Значит, модель, которой мы воспользовались, не вполне адекватна, в ней не учтены какие-то существенные факторы.
Один из таких факторов — сопротивление воздуха. При малой скорости движения этим сопротивлением можно пренебречь — вряд ли мы замечаем сопротивление воздуха, если перемещаемся прогулочным шагом. Но стоит побежать — и сопротивление станет сразу весьма ощутимым. Оказывается, что сила сопротивления пропорциональна квадрату скорости движущегося тела. Коэффициент пропорциональности зависит от геометрической конфигурации движущегося тела и плотности среды — каждый знает, что в воде двигаться намного труднее, чем по суше.
Итак, речь пойдет о движении тела в поле силы земного тяготения в среде с сопротивлением. Модель этого процесса в удобном для компьютерного исследования виде мы и будем строить. А самой задаче (для дальнейших ссылок) дадим имя: «Движение тела в среде с сопротивлением».
Чтобы построить нужную модель, мы должны определить не только, что существенно для конструируемой модели, но и те теоретические положения физики, которые позволят нам без проведения натурных экспериментов определить зависимости между параметрами строящейся информационной модели. Еще раз обратим внимание, что всякая модель должна быть согласованной не только с существующей теорией, но и с практикой. Будем считать, что выполнены законы механики, сформулированные Ньютоном. Прежде всего речь идет о втором законе, связывающем движущую силу и ускорение для тела постоянной массы:
F = та.
Из ранее сказанного ясно, что мы имеем дело с математической моделью, в которой участвуют три параметра: сила, масса и ускорение. Отметим, что сила и ускорение — векторные величины, а масса — величина скалярная.
Что касается условия «сопротивление воздуха пропорционально квадрату скорости», будем считать это экспериментально установленным фактом и тоже включим его в список исходных предположений. Можно считать, что сила сопротивления противоположна скорости движущегося тела. Значение коэффициента пропорциональности устанавливается экспериментальным путем. Это значение нам понадобится лишь тогда, когда будут проводиться расчеты, поэтому пока мы просто должны учесть, что одним из параметров, описывающих сопротивление среды, является коэффициент пропорциональности к.
104
Для простоты предположим невероятное: пока тело движется, совсем не дует ветер. Это предположение обеспечивает нам возможность рассматривать движение тела в одной плоскости.
Чтобы модель не полз^илась слишком сложной, сделаем еще и «геометрическое» предположение: будем считать, что поверхность Земли плоская. Будем также считать постоянным ускорение свободного падения g (хотя по мере удаления от поверхности Земли сила притяжения убывает согласно закону всемирного тяготения, сформулированному Ньютоном, но мы уже договорились не рассматривать движение на больших высотах).
Важный принцип ньютоновской механики состоит в том, что всякое движение в вертикальной плоскости можно рассматривать как сумму двух независимых «одномерных» движений — горизон-ТЕШьного и вертикального. Выберем систему координат так, чтобы в момент начала движения тело располагалось на оси Оу и вектор его скорости был направлен в первый квадрант (рис. 3.1).
Пусть теперь через некоторое время t тело оказалось в точке с координатами х и у и имеет в это время скорость и. Результирующая сила F, определяющая движение тела, равна векторной сумме сил сопротивления и тяжести. Сила сопротивления ^'сопр со* гласно сделанному предположению равна —km\v\v, где через |i5| обозначена длина вектора и. Чтобы рассматривать движение тела как сумму двух движений, мы должны рассмотреть проекции сил и скоростей на оси. Тогда = -km\v\v^, а Fy = -mg - km\v\vy, где индексы X и у указывают, на какую ось осуществляется проецирование. Второй закон Ньютона дает нам систему соотношений:
(та^ = -fem|u|u^, mUy = -mg - km |у | •
Фактически мы уже построили информационную модель процесса. Перепишем ее в более удобном виде, выразив длину вектора V через его координаты:
^Uy = -g- k^ivJ + iVyfVy.
Высота h(t), на которой находится тело в момент времени t, совпадает с ординатой у\ так что фактически нам надо научиться выражать изменение у со временем.
Чтобы процесс движения был определен, надо задать, на какой высоте в начальный момент времени находилось тело и какова
105
Моделирование процессов живой и неживой природы
была его скорость в этот момент. Поскольку скорость представляет собой вектор, она задается двумя своими координатами. Правда, вместо координат можно задать величину скорости и угол, который вектор скорости составляет с горизонтальной осью (т. е. осью абсцисс). Построение модели данного процесса закончено. Полное описание модели вы сделаете сами, выполнив задание 2.
ВОПРОСЫ и ЗАДАНИЯ
Почему возникает необходимость учитывать сопротивление среды?
О
0
О
Оформите описание модели движения в среде с сопротивлением, выделив предположения, при которых строится данная модель. Определите на их основе существенные факторы и параметры, описывающие эти факторы. Запишите связь между параметрами. Какого вида оказалась построенная информационная модель?
Разведчикам удалось добыть артиллерийские таблицы, составленные на основе испытаний противником новой пушки.
Угол наклона ствола, градус 10 20 30 40 50 60 70 80
Дальность полета снаряда, м 9282 10 889 11 222 10770 9683 8026 5830 3121
0
По этим данным нужно найти начальную скорость снаряда. На основе модели движения в среде с сопротивлением предложите способ получения этой информации. Коэффициент сопротивления среды k известен и равен 0,0002 м~\
При движении тела в поле земного притяжения без сопротивления работа силы притяжения переходит в кинетическую энергию движущегося тела.
а) В какой еще вид энергии превращается работа силы сопротивления при движении в среде с сопротивлением?
б) Постройте математическую модель, позволяющую вычислить повышение температуры тела при его движении в среде с сопротивлением. (Потерями энергии за счет теплопередачи в окружающую среду пренебречь.)
Что такое дискретизация непрерывного процесса? (Совет. Если вы затрудняетесь дать ответ на вопрос, перечитайте §4.)
Компьютерное исследование модели движения в среде с €Опротивл€Л1ием
Как же теперь применить компьютер для исследования процесса с помощью модели, полученной в § 19? Для этого надо выбрать какую-либо компьютерную технологию и реализовать модель ее средствами.
Выбор компьютерной технологии неоднозначен. Выполняя задание 2 из § 19, вы установили, что нами построена математическая
106
модель. Поэтому и компьютерная технология должна быть ориентирована на численные расчеты. Вам известны две такие технологии: одна из них опирается на применение электронной таблицы, другая — на составление вычислительного алгоритма. Но сначала обсудим, как приспособить нашу модель для применения этих технологий. Дело в том, что численные методы расчетов на компьютере (как и алгоритмы) обладают свойством дискретности. Поэтому построенную в § 19 непрерывную модель нужно заменить дискретной моделью, т. е., как говорят, провести ее дискретизацию. Это означает, что процесс, непрерывно развертывающийся во времени, разбивается на отдельные стадии, каждая следующая стадия отстоит от предыдущей на небольшой промежуток времени. Этот малый промежуток обычно обозначают At. Естественно предполагать, что в течение этого промежутка времени состояние объектов, участвующих в процессе, остается постоянным, а затем скачком меняется на новое. В нашем случае состояние объекта, т. е. движущегося тела, описывается:
1) координатами x(t) и y{t) точки в момент времени t;
2) вектором скорости v (t) в момент времени t;
3) вектором ускорения a(t) в момент времени t.
В следующий момент t + At состояние движущегося тела описывается значениями x(t + Д<) и y(t + At)y -I- At) и a(t + At). Запишем теперь соотношения, показывающие, как связаны изменения названных величин по истечении интервала времени At:
x(t + At) — x(t)
м
w(< +АО-«,.(<)
yjt + At)-y(t) _ At
At
v^(t + At)-v^(t) At
= a^ = - k^vj^tf + Vy(tf vj,t);
= a^ = -{g + kyjvjitf + Vy(tf vjit)).
Преобразуем эти равенства к следующему виду: x{t + Д<) = x{t) + v^{t) • At; y{t + At) = y{t) + Vyit) • At;
vj^t + At) = vj,t) -kyjvjitf + vjitf V Jit)-At;
v^it + At) = v/,t) -ig + k yjvjitf + vpf Vy(t))-At.
Теперь мы по значениям переменных x{t), y(t), vjit), Vy(t) в момент времени t можем вычислить их значения в момент времени t + At. Можно сказать, что эти формулы описывают процесс не только декларативно, но и процедурно, показывая, как осуществить нахождение искомых величин. Мы еще усилим акцент на процедурное представление нашей модели, записав алгоритм расчета
107
Моделирование процессов живой и неживой природы
траектории движения тела. Но сначала напомним, что служит исходными данными и что — результатами.
Исходные данные;
9 высота h, на которой по отношению к горизонту располагается тело в начальный момент времени, м;
® угол А, под которым по отношению к линии горизонта начинает движение тело, рад;
о величина скорости и, с которой тело начинает движение, м/с; в коэффициент сопротивления среды к, м“^;
9 величина ускорения свободного падения g, м/с^; е интервал Af, на величину которого будет осуществляться переход от одного момента времени к следующему, с.
Результаты:
в координаты положения тела в моменты времени nh.t, где п — натуральное число, изменяющееся от 1 до такого значения N, при котором ордината тела становится отрицательной.
Запишем теперь алгоритм, реализующий вычисление результатов по исходным данным.
Алгоритм Модель_движения веш: Л, А, v, к, g. At, х, у, vx, vy, t, R { Запросить h;
(* начальная высота *) (* начальный угол наклона к горизонту *) (* начальная скорость *) (* коэффициент сопротивления *) (* интервал изменения времени *)
(* X — абсцисса тела *) {* у — ордината тела *) (* счетчик времени *) (* VX — абсцисса вектора скорости *) (* vy — ордината вектора скорости *)
Запросить А;
Запросить V,
Запросить к-.
Запросить At;
g := 9.8;
X := 0;
У := к; t := 0;
vx := u*COS(A); vy := u*SIN(A);
Делать пока vy > 0
{ X := X + vx*At;
у := у + vy*AU____________
Л := 1 - k*\jvx*vx + vy*vy *At; vx := vx*R; vy := vy*R - g*At; t ;= t + At;
Сообщить "В момент времени", t, "абсцисса", х, "ордината", у;
} (* конец цикла *)
} (* конец алгоритма *)
Другая компьютерная технология, позволяющая вести расчеты, — это электронная таблица. В таблице 3.1 приведем вариант заполнения электронной таблицы для моделирования движения в среде с сопротивлением; записи в угловых скобках показывают, где располагаются начальные данные.
108
‘в ^ ;
1 Время Высота Дальность
2 0 0
3 A24-G2 B2-I-D2*G2 C2-I-E2*G2
4 A34-G2 B3-I-D3*G2 C3-I-E3*G2
5 A44-G2 B4-I-D4*G2 C4-I-E4*G2
6 A54-G2 B5-I-D5*G2 C5-I-E5*G2
... ... ...
|г(){) A1994-G2 B199-I-D199*G2 C199-I-E199*G2
... ...
В этом параграфе мы перестраивали математическую модель, созданную в предыдущем параграфе, в модель, к которой применимы компьютерные технологии. Информационная модель, реализованная посредством той или иной компьютерной технологии, называется компьютерной моделью. Мы располагаем двумя компьютерными моделями данного процесса.
Компьютерный эксперимент с одной из построенных компьютерных моделей вы будете проводить на практикуме в соответствии с его описанием в лабораторной работе б.
ВОПРОСЫ и ЗАДАНИЯ
^ Какую модель называют компьютерной?
Q Составьте алгоритм для вычисления координат тела при движении в среде с сопротивлением.
О в задании 3 из § 19, вы вычисляли начальную скорость по данным таблицы.
а) Преобразуйте приведенный в объяснительном тексте алгоритм «Модель_дви-жения» в подпрограмму-функцию, которая по стартовым значениям скорости, угла и высоты вычисляла бы дальность полета. Используя эту подпрограмму-функцию, составьте алгоритм вычисления скорости по данным таблицы.
б) Модифицируйте заполнение электронной таблицы (табл. 3.1) так чтобы с ее помощью можно было находить начальную скорость снаряда.
О* Используя ваше решение задачи 46 из § 19, дополните заполнение электронной таблицы так, чтобы с ее помощью можно было находить изменение температуры движущегося тела.
109
Моделирование процессов живой и неживой природы
Таблица 3.1
ИИ..- —и-и^им...... у,, , J ^ ' : - г ^4 ■ '.й • V F Щ г
Скорость по вертик. Скорость no гориз. Скорость* Коэф.
G5*Sin(G6) G5*Cos(G6)
D2-(G4-bF3*D2)*G2 E2-F3*E2*G2 G3*^D2^+E2^
D3-(G4-bF4*D3)*G2 E3-F4*E3*G2 G3*a/d3^+E3^
D4-(G4-bF5*D4)*G2 E4-F5*E4*G2 G3*^D4^+E4^
D5-(G4-bF6*D5)*G2 E5-F6*E5*G2 G3*^D5^+E5^
... ... ...
D199-(G3-bF200*D199)*G2 E199-F200*E199*G2 ...
... ... ...
Q Между учениками возник спор. Одни утверждали, что для исследования процессов и явлений вполне достаточно компьютерных моделей и экспериментов с ними, поэтому нет необходимости тратить силы на разработку сложных математических методов исследования моделей. Другие им возражали. Какова ваша точка зрения по данному вопросу? Аргументируйте свою точку зрения.
Моделирование процессов в биологии
В этом параграфе мы приступим к обсуждению биологоэкологических моделей.
В 1937 году на остров Протекшей завезли 8 фазанов. Никто на этих фазанов не охотился (ни люди, ни звери), корма для них было вдоволь, и через год фазанов стало 26. Прошел еш;е год, фазанов снова пересчитали — на этот раз их было 83. Интересно, сколько будет фазанов через п лет?
Мы намерены использовать компьютер для исследования того, как растет число фазанов на острове, значит, надо строить информационную модель. А построение любой модели начинается с выделения суш;ественных факторов.
Факторов, влияюш;их на жизнь фазанов, много. Это и климатические условия, и даже конкретная погода в то или иное время года — скажем, холодная зима или засушливое лето отрицательно скажутся на росте популяции фазанов. Появление или быстрый рост вида животных, имеющих ту же кормовую базу, что и фаза-
I 110
ны, тоже не будет способствовать процветанию фазаньего сообщества. Хорошо еще, что на них никто не охотится.
Мы в принципе не можем учесть все существенные факторы, влияющие на жизнь фазаньего племени. Но естественно предположить, что прирост, числа фазанов за единицу времени пропорционален их уже имеющемуся количеству. Такое предположение согласуется с обычными представлениями о размножении: чем больше живых организмов, тем больше у них потомков. А окружающая среда выступает как регулятор прироста количества фазанов.
Высказанные предположения показывают, что для нашей модели существенна следующая информация: начальное количество (обозначим его М(0)) и коэффициент прироста за один год (обозначим его k).
Пусть по истечении п лет количество фазанов достигло, как мы договорились, величины М(п). Тогда прирост за один год составит М(п -I- 1) - М(п). Значит, высказанные нами предположения можно записать равенством
М(л -I- 1) - М(л) = кМ(п).
Преобразуя это равенство, получаем
М(л -I- 1) = М(л) + кМ(п),
или
М(п -I- 1) = (1 -I- k)M(n).
По этой формуле, зная начальное количество М(0) и коэффициент прироста к, можно сначала найти М(1), т. е. число фазанов, которое будет через год, затем найти М(2), т. е. количество фазанов через два года, затем М(3) и т. д.
Те из вас, кто дружен с математикой, распознают в последовательности М(п) геометрическую прогрессию. Обнаруженную закономерность можно сформулировать так: если действие окружающей среды сказывается лишь на скорости прироста, то живые организмы размножаются в геометрической прогрессии. И совершенно неважно, идет ли речь о фазанах или китах, о водорослях или гигантских секвойях. Мы построили модель некоторого биологического процесса, и при этом не играет роли, какие именно живые организмы участвуют в этом процессе. Построенную модель называют моделью неограниченного роста.
Если спросить, какого вида модель нами построена, каждый, наверное, сразу ответит — математическая. Действительно, все параметры в ней числовые, а связи между параметрами выражаются функцией
М(л) = (1 -I- fe)"M(0).
Мы надеемся, что все узнали в ней формулу общего члена геометрической прогрессии.
Задумаемся, адекватно ли наша модель отражает биологические процессы на Земле?
Ill
Моделирование процессов живой и неживой природы
Ответ, по существу, очевиден: безудержный рост массы живых организмов, предсказанный данной моделью, привел бы к тому, что в какой-то момент она превысила бы массу Земли, что невозможно ни при каких, даже самых благоприятных, условиях. Масса живых организмов не может превысить массу планеты — это нарушило бы фундаментальный закон сохранения вещества. Модель неограниченного роста, которую мы построили, оказалась пригодной, как и следовало ожидать, лишь пока выполнено главное предположение — действие всех факторов выступает ограничителем только скорости прироста массы. Видимо, в нашей модели, описывающей действие природных факторов, надо что-то подправить.
Поступим так. По-прежнему не вдаваясь в подробности, как именно факторы окружающей среды влияют на жизнь организмов, выдвинем предположение, что имеется некоторое предельное значение массы растений, «проживающих» на той или иной территории. Так, ученые показали, что запас массы растений не может превосходить 20 т на гектар в полярной зоне, 350 т на гектар в лесной зоне, 440 т на гектар в тропиках. А на всей Земле масса растений не может превысить 5 • 10^^ т.
Еще одно наше предположение будет таким: чем ближе масса живых организмов к своей максимально возможной, тем меньшим становится коэффициент прироста k. В качестве обоснования для такого предположения вы могли бы использовать свои собственные наблюдения (на пришкольном участке, в саду): вначале растения быстро набирают массу, затем их рост становится все медленнее. Иными словами, коэффициент k не является неизменной величиной, а зависит от разности L - М(п), где L — предельное значение массы растений на данной территории. Самая простая функция, как вы знаете, — это прямая пропорциональность. Будем считать, что коэффициент прироста меняется по формуле
k(n) = a(L - М(п))
для т1 о, 1, 2, 3, ....
Подводя итог проделанной работе по уточнению модели, опишем получившуюся модель роста массы живых организмов.
Предположения:
о прирост массы живых организмов за единицу времени пропорционален уже имеющейся массе;
о существует некоторое предельное значение массы живых организмов;
® коэффициент прироста живых организмов за единицу времени пропорционален разности между максимально возможным значением массы и массой, имеющейся к данному моменту времени.
Параметры модели:
в начальная масса живых организмов М(0);
в предельное значение массы живых организмов L;
112
® коэффициент пропорциональности а в формуле для коэффициента прироста;
» время п.
Связь между параметрами модели задается соотношением М(п -I- 1) = М(п) -I- аМ(п)(Ь - М(п)), где через М(п) по-прежнему обозначена масса живых организмов по истечении п лет.
Эту модель принято называть моделью ограниченного роста. Однако получить и в этом случае явную формулу зависимости М(ге) от п, увы, невозможно. Остается надеяться на компьютерный эксперимент, который вы проведете, выполняя лабораторную работу 12.
ВОПРОСЫ и ЗАДАНИЯ
О 0 0
Q Какие предположения были сформулированы для модели ограниченного роста?
0
О
Какие предположения были сформулированы для модели неограниченного роста?
Как растет масса живых организмов, если действие окружающей среды сказывается только на скорости прироста?
Какие факторы ограничивают массу живых организмов? Приведите примеры.
Составьте алгоритм для вычисления массы живых организмов через заданное число лет, руководствуясь моделью ограниченного роста. Запишите его на подходящем для вас языке программирования.
а) Назовите параметры модели неограниченного роста. Какие существенные факторы описываются этими параметрами?
б) Выполните задание а для модели ограниченного роста.
ш
границы адекватности модели
В § 5 был сформулирован важный принцип: никакая модель не эквивалентна исходному объекту, процессу или явлению. Ведь в любой модели можно учесть только часть информации об объекте, процессе или явлении, самую существенную с точки зрения того, кто строит модель, но все равно не всю.
Но тот же принцип можно сформулировать иначе: всякая модель имеет ограниченную область адекватности и за пределами этой области она перестает удовлетворительно отражать свойства моделируемого объекта. Поэтому и применять модель для решения той или иной жизненной задачи допустимо только тогда, когда мы убедились, что не вышли за границы области адекватности.
Как же проверить, что выбранная нами модель применима? Прежде всего надо убедиться, что все факторы, существенные для данной задачи, присутствуют в модели. Затем надо проверить, что в исходных данных задачи значения параметров, описывающих действие факторов, не выходят за границы адекватности модели.
113
Моделирование процессов живой и неживой природы
К сожалению, часто эти требования игнорируются. Мы нередко слышим предложения использовать в России экономические модели, прекрасно работаюш;ие в западных странах. Как правило, таким предложениям не предшествует анализ базовых предпосылок, на которых основываются предлагаемые модели. Ведь даже внешняя схожесть ситуаций еш;е не означает ни совпадения факторов, ни попадания в область адекватности.
О выделении суш;ественных факторов мы уже говорили неоднократно. Теперь обсудим, как находить границы адекватности.
Как вы помните из § 5, адекватность модели определяется ее согласованностью с практикой и обш;етеоретическими положениями. Предложение провести вам какой-либо натурный эксперимент для проверки адекватности той или иной модели, конечно, выходит за рамки курса информатики. Поэтому наш эксперимент будет компьютерным и основанным на обш;етеоретических положениях.
В § 21 мы упомянули, что модель неограниченного роста остается адекватной, пока масса живых организмов достаточно мала по сравнению с предельно допустимой массой этих организмов в данных природных условиях. Попытаемся определить, насколько мала должна быть исходная масса живых организмов по отношению к предельной массе, чтобы модель неограниченного роста оставалась адекватной в течение нескольких лет (напомним, что суш;ествова-ние предельного значения массы — следствие обш;етеоретических положений). Иными словами, мы хотим найти границы адекватности модели неограниченного роста.
Вспомним параметры и связи между этими параметрами, участвующие в моделях ограниченного и неограниченного роста.
Модель неограниченного роста: начальная масса М(0), коэффициент прироста k, число лет п, масса живых организмов через п лет М(п), связь между параметрами
М(п +!) = (! + k)M(n).
Модель ограниченного роста: начальная масса Mq{0), коэффициент прироста k, предельное значение массы L, число лет п, масса живых организмов через п лет Mq^h) (буква «О» внизу показывает, что вычисление массы идет в модели ограниченного роста), связь между параметрами, найденная в лабораторной работе 12:
/
Мо(н-И)-
\ + k
L - М(0)
Мо(н).
Поскольку Мд(0) = М(0), то нетрудно подсчитать, что Мд(1) = = М(1), т. е. через год масса живых организмов, подсчитанная по обеим моделям, будет еще одинаковой. Но вот Mq{2) будет уже меньше, чем М(2). И чем дальше, тем больше будет различие между значениями Mq и М. Значит, надо договориться, какое расхождение между Mq и М мы будем считать еще допустимым. Пусть, к примеру, мы считаем модель неограниченного роста адекватной, если разница М - Mq составляет не более 10% от Mq.
114
Чтобы найти границы адекватности, мы должны установить, в каких пределах и как по отношению друг к другу могут меняться параметры модели, чтобы она оставалась адекватной. Ответы на эти вопросы вы получите, выполнив очередную лабораторную работу. А сейчас подготовим для этой лабораторной работы макет электронной таблицы. Можно ее заполнить, например, так, как показано в таблице 3.2.
Таблица 3.2
■ ,: 'А . В - С
А. - .>=.. , Коэффициент прироста k <к> Предельное значение массы L
Год Неограниченный рост Ограниченный рост Отклонение, %
0 1 1 (B3-C3)/C3*100
;. ^ АЗ+1 (1+В1)*ВЗ (1+B1*(D1-C3)/ (D1-C3))*C3 (B4-C4)/C4*100
Г 7 А4+1 (1+В1)*В4 (1+B1*(D1-C4)/ (D1-C3))*C4 (B5-C5)/C5*100
А5+1
В ячейку В1 заносится коэффициент прироста k, а в клетку D1 — предельное значение массы живых организмов. В ячейки ВЗ и СЗ мы занесли значение начальной массы живых организмов, взяв ее равной 1. Заполнение остальных ячеек, скорее всего, ясно из написанных в них формул.
И снова немного истории. Первым модель неограниченного роста рассмотрел Т. Мальтус (1798 г.). Опираясь на эту модель, он пытался обосновать неизбежность войн и других кризисных явлений социально-политической жизни человеческого общества. Он ввел понятие демографического давления как показателя превышения численности населения, проживающего на данной территории, над возможностью данной территории обеспечить это население продовольствием. Из его заключений делался вывод о необходимости постоянного расширения жизненного пространства, и этот вывод использовался для построения и оправдания расовых теорий, националистических теорий борьбы за жизненное пространство и т. п.
Проангшизируем эту ситуацию с позиций модельного подхода. В модели неограниченного роста в качестве существенных прини-мгшись только биологические факторы. Но если живые организмы образуют сообщества (стада, стаи и т. п.), то вступают в силу иные факторы, характерные для данного сообщества. Их можно было бы назвать социальными, хотя термин «социальные» обычно примени-
115
Моделирование процессов живой и неживой природы
ют к сообществам людей. Что касается человека, то для него одним из важнейших социальных факторов является развитие науки и производства. За счет применения удобрений с той же, что и раньше, сельскохозяйственной территории стали снимать в несколько раз больший урожай, а значит, эта территория способна прокормить большее население, чем прежде. Поэтому с точки зрения информатики несостоятельность применения модели неограниченного роста к человеческому обществу состоит уже в том, что учтены не все существенные факторы, а сама модель применяется не в той области, где она является адекватной, — в области социально-политической, а не чисто биологической.
ВОПРОСЫ и ЗАДАНИЯ
О Сформулируйте принцип адекватности модели. Как его можно обосновать?
Q Выполнение каких условий надо проверить, прежде чем использовать какую-либо модель для решения жизненной задачи?
@ Что значит найти границы адекватности данной модели?
О Для изучения графика бега на дистанции 100 м были установлены на одинаковом расстоянии 20 фотодатчиков, фиксирующих время, которое прошло от старта до пересечения спортсменом соответствующего светового луча.
старт I
f|1l|IPjnr ПГПРППГ
I финиш
В таблице 3.3 приведены данные датчиков, округленные до десятых долей секунды.
Таблица 3.3
Номер датчика 1 2 3 4 5 6 7 8 9 10
Время, с 1,2 1,7 2,1 2,5 2,9 3,3 3,7 4,1 4,5 4,9
Номер датчика 11 12 13 14 15 16 17 18 19 20
Время, с 5,3 5,7 6,1 6,5 6,9 7,3 7,8 8,4 9,0 9,8
0
Попытайтесь по этим данным определить, на каких участках дистанции бег спортсмена адекватно описывается моделью равномерного движения, а на каких — равноускоренного.
В объяснительном тексте подготовлено заполнение электронной таблицы для определения границ адекватности сравнением моделей ограниченного и неограниченного роста. Составьте алгоритм, позволяющий выполнить ту же работу, и запишите его на изученном вами языке программирования.
I,
16
Модел1фование эпидемии гриппа
Модель ограниченного роста может послужить основой для создания моделей других процессов, в том числе и важных с социальной точки зрения. Например, для принятия эффективных мер борьбы с эпидемией гриппа очень важно знать, как такая эпидемия может развиваться, чтобы в нужный момент усилить местную систему здравоохранения: в аптеки завезти больше противогриппозных медикаментов, развернуть дополнительные места в больницах, наметить карантинные меры и т. д. Вот моделированием развития эпидемии гриппа мы сейчас и займемся.
Пусть в некотором населенном пункте с численностью населения L началась эпидемия гриппа. Прогнозировать в нашей модели мы будем количество людей, болеющих гриппом на п-й день после начала эпидемии. Обозначим это количество В(п). На первый взгляд величина В(п) удовлетворяет предположениям модели ограниченного роста. Действительно, прирост числа больных пропорционален числу уже заболевших, но, разумеется, не может превосходить числа L. Отметим, что отсчет начинается с п = 1, так что начальное значение — это -В(1). В качестве .В(О) возьмем значение О и для В(п) напишем уже известную нам формулу:
В(п +1)=
L
В{п).
Однако согласно графику функции В(п) (вы построили график для М{п), выполняя лабораторную работу 12) приходим к странному выводу — количество больных достигает некоторого уровня и дальше не меняется. Эпидемия продолжается вечно!
Так, конечно, не бывает. Значит, построенная модель неадекватна. И надо поискать неучтенные существенные факторы модели. Впрочем, сделать это нетрудно — в модели не учитывается, что люди выздоравливают, у них вырабатывается иммунитет и больше они не заболевают. Для простоты будем считать, что болезнь длится 7 дней. Обозначим через V{n) количество людей, уже переболевших гриппом к п-му дню с момента начала эпидемии. Тогда ясно, что F(l) = F(2) = F(3) = ... = F(7) = О, a F(8) = B(l), F(9) = = F(8) -H -B(2) И, вообще, F(n -I- 1) = F(n) -I- B{n) при n > 8. Запишем получившуюся модель:
F(l) = F(2) = ... = F(7) = 0;
F(8) = B(l);
F(n -I- 1) = F(n) -I- B{n) при n > 7;
B{n +1)-
^ ^ ^L-B(n)-V(n) L
B{n) при n > 0.
117
Моделирование процессов живой и неживой природы
ВОПРОСЫ и ЗАДАНИЯ
^ Какие предположения положены в основу модели эпидемии гриппа? Каковы параметры этой модели?
Q Продумайте и предложите заполнение электронной таблицы для проведения компьютерного эксперимента с моделью эпидемии гриппа.
е Составьте алгоритм для вычисления числа больных гриппом через заданное число дней, руководствуясь моделью эпидемии гриппа. Запишите его на подходящем для вас языке программирования.
Для некоторых штаммов гриппа иммунитет оказывается нестойким и длится несколько дней. Постройте модель эпидемии гриппа для такой ситуации.
§24
BepQHTHocTHMe мрде^И|
Со случайностью мы сталкиваемся на каждом шагу. Можно случайно встретить на улице своего приятеля, можно случайно разбить чашку, можно, наконец, случайно выиграть в лотерею.
Но иногда случайные числа нужно уметь получать искусственным образом. Например, определить случайным образом порядок выступления фигуристов на соревновании или номера лотерейных билетов, на которые падает выигрыш. Даже при проведении научных экспериментов случайность изменения условий эксперимента тоже имеет значение. Как в этих случаях организуется случайная последовательность чисел?
Казалось бы, это совсем разные веш;и: природная случайность и случайность, специально организуемая человеком. Однако это не совсем так.
Сначала человек научился использовать природную случайность. Чтобы определить, кому начинать игру, можно подбрасывать монетку. Чтобы случайно выбрать одно число из шести, можно подбрасывать кубик. Для того чтобы строить более разнообразные последовательности случайных чисел, можно регистрировать время прихода космических частиц (например, с помош;ью счетчика Гейгера). Но как изучать процессы, в которых самой природой заложена случайность?
Мы надеемся, что все, изложенное ранее, сделало для вас очевидным важный тезис: изучить — значит построить модель, отра-жаюш;ую суш;ественные стороны изучаемого объекта, процесса или явления. Изучать же процессы, в которых случайность — неотъемлемая черта, человеку приходится весьма часто. Это могут быть обычные телефонные разговоры по линии связи, начинаюш;иеся в случайное время и непонятно сколько продолжаюш;иеся, или приход покупателя в магазин и продолжительность его пребывания там, или в конце концов непредсказуемое поведение элементарных частиц в ядерном реакторе.
I.
18
Все непонятно, неясно, непредсказуемо, однако линия связи должна иметь достаточную пропускную способность, в универсаме в нужное время должно быть нужное количество кассиров, а реакторы должны надежно работать.
Для успешного решения всех этих задач необходимо уметь делать следующее:
1. Получать искусственную последовательность случайных чисел, успешно заменяющую реальную, определяемую случайными событиями.
2. С помощью этой последовательности моделировать случайные события и находить параметры, необходимые для проектирования линии связи (ядерного реактора или графика работы продавцов магазина).
Отметим прежде всего, что для обсуждения случайных событий надо иметь дело с многократно повторяющимися опытами, при которых могут происходить данные события. Каждое повторение опыта обычно называют испытанием, а множество многократно проведенных испытаний в одном опыте — серией испытаний. Частотой события А в какой-то серии испытаний называется число, показывающее, сколько раз произошло событие А в этой серии.
Важной числовой характеристикой случайного события является вероятность его наступления. Связаны ли вероятность и частота? Да: чем чаще происходит событие, тем больше вероятность его наступления. Тем не менее сказать, что вероятность — это частота наступления события, очевидно, нельзя: в серии с большим числом испытаний одно и то же событие будет иметь большую частоту, нежели в серии с меньшим числом испытаний. Мы провели два опыта по подбрасыванию обыкновенного игрального кубика. В первом опыте было проведено 20 испытаний, во втором — 40 испытаний. Исходом в каждом испытании было число очков, выпавших на кубике. Результаты опытов представлены в таблице 3.4.
Таблица 3.4
Количество испытаний в серии Исходы 1 2 3 4 5 6
20 Частота 3 3 3 2 4 5
Относительная частота 0,15 0,15 0,15 0,1 0,2 0,25
40 Частота 6 6 7 7 6 8
Относительная частота 0,15 0,15 0,175 0,175 0,15 0,2
Во втором столбце вы прочитали новые слова: «Относительная частота». Это число, равное отношению частоты к числу испытаний в данной серии. Она, как мы видим, мало меняется при увеличении числа испытаний в серии.
119
Моделирование процессов живой и неживой природы
Конечно, 20 и даже 40 испытаний в серии — это совсем немного. Но для большинства случайных событий выполняется свойство: чем больше увеличивать число испытаний в сериях, тем меньше будут отличаться друг от друга относительные частоты данного события в этих сериях. Иными словами, при большом числе испытаний относительные частоты одного и того же события в различных сериях группируются вокруг одного и того же числа. Это число и называют вероятностью данного события.
В ряде ситуаций определить вероятность события можно и не прибегая к длинным сериям испытаний. Ясно, например, что если игральный кубик не имеет дефектов, то каждое число очков от 1 до 6 должно выпадать одинаково часто. А это означает, что относительная частота каждого из исходов должна группироваться
около числа Следовательно, вероятность выпадения на кубике
® 1 данного количества очков равна -.
6
Далеко не всегда посредством умозаключений можно установить вероятность исследуемого события. Тогда без проведения испытаний не обойтись. Вот здесь-то и может пригодиться компьютерное моделирование: если построить модель случайного процесса, то наблюдать его на экране компьютера гораздо дешевле, а иногда и безопаснее, чем проводить натурные эксперименты, многократно повторяя данный процесс.
Модели, в которых используются вероятности моделируемых событий, называются вероятностными моделями.
ВОПРОСЫ и ЗАДАНИЯ
Q Приведите примеры, когда необходимо получать последовательности случайных чисел. Как такие последовательности в этих случаях создавались?
Q Вспомните, в каких жизненных ситуациях вы пользовались случайными числами. Как вы такие числа получали?
Q Что такое частота и относительная частота случайного события? Что такое вероятность случайного события?
Q Какие модели называют вероятностными?
Q Для указанных ниже опытов и их исходов определите, в каких случаях вероятность исходов может быть получена умозрительными заключениями, а в каких обязательно требуется провести серии испытаний.
а) Опыт — подбрасывание кнопки; исходы: кнопка упала острием вверх, кнопка упала на острие.
б) Опыт — вытаскивание бочонка для игры в лото; исходы: вынут бочонок с числом 1, вынут бочонок с числом 2, ..., вынут бочонок с числом 90.
в) Опыт — подбрасывание бутерброда; исходы: бутерброд упал маслом вверх, бутерброд упал маслом вниз.
г) Опыт — удар по воротам в футбольном матче; исходы: гол забит, гол не забит.
120
Датчики случайных чисел и последовательности
псевдослучайные
в начале предыдущего параграфа были сформулированы два условия, необходимые для моделирования случайных процессов:
а наличие способа получать последовательность случайных чисел, успешно заменяющих реальную и определяемую случайными событиями;
® умение с помощью этой последовательности моделировать случайные процессы.
Одно случайное число получить легко. Посмотрите, например, на часы в этот самый момент и засеките, сколько секунд они показывают. Вот вам и случайное число.
Можно еще раз взглянуть и получить второе случайное число. В чем же заключается случайность этих чисел? В случайности выбора одного числа из некоторого множества чисел, в данном случае — из множества целых чисел от 1 до 60.
Еще один способ получения случайного числа уже обсуждался в предыдущем параграфе: будем бросать игральный кубик и смотреть, какое число выпадет на верхней грани. Здесь множество чисел, которые могут появиться, содержит всего 6 элементов: числа 1, 2, 3, 4, 5, 6. Для хорошего кубика появление любого из этих чисел равновероятно (т. е. вероятности выпадения каждого из чисел равны).
Рассмотрим третий способ получения случайного числа. Будем стрелять по мишени из лука. Как бы хорошо мы ни прицеливались, колебания воздуха (в частности, порывы ветра), непредсказуемость силы, с которой натягивается тетива, индивидуальность аэродинамических свойств каждой конкретной стрелы и т. п. вносят случайность в ее полет. Поэтому расстояние от центра мишени до точки, куда попала стрела, тоже случайное число. Здесь перечислить множество всех возможных значений не удастся — их бесконечно много. Фактически таким значением может быть любое действительное неотрицательное число. Конечно, если мы прицеливаемся хорошо, то здесь появление тех или иных чисел неравновероятно: маленькие числа должны появляться чаще больших.
Обычно нужна не любая последовательность случайных чисел, а удовлетворяющая некоторым условиям. В случае с кубиком вероятности всех исходов одинаковы, поэтому получающаяся последовательность случайных чисел называется равномерно распределенной. Если же вероятность появления очередного числа неодинакова для разных чисел, то это неравномерно распределенная последовательность.
Потребность в случайных числах возникла довольно давно. И способов их получения разработано достаточно. Ученые раскладывали карты, бросали кости, вытаскивали черные и белые шары из коробки, которую предварительно как следует трясли.
121
Моделирование процессов живой и неживой природы
В 1927 году Л. Триппетт опубликовал таблицы, содержащие свыше 40 000 случайных цифр, произвольно взятых из отчетов о переписи. Позже были сконструированы специальные машины, механически вырабатывающие случайные числа (первую такую машину использовали М. Дж. Кендалл и Б. Бэбингтон-Смит при создании таблиц из 100 000 случайных цифр).
Практически сразу же после создания ЭВМ начались поиски эффективных методов получения случайных чисел для использования в компьютерных программах. Можно было пользоваться и таблицами, но они требовали для своего размещения большой объем оперативной памяти. Поначалу к ЭВМ подключали датчики случайных чисел (ДСЧ), основанные на различных физических эффектах, в основном на так называемом эффекте шума электронных ламп и излучении радиоактивных веществ.
Но датчики были слишком медленными, дорогими и небезопасными. Кроме того, при отладке программ, использующих ДСЧ, крайне важно, чтобы при одинаковых начальных данных получались одинаковые конечные результаты, чего датчики на основе физических эффектов не могли обеспечить в принципе: потоку космических частиц не прикажешь прилететь еще раз с той же частотой.
Несовершенство этих методов пробудило интерес к получению случайных чисел с помощью арифметических операций самого компьютера. Первым такой подход предложил в 1946 году Джон фон Нейман, известный вам как разработчик архитектуры первых ЭВМ. Его идея состоит в том, что нужно только самое первое случайное число. А дальше применяется следующее рекуррентное правило: число возводится в квадрат и из результата берется середина. Например, мы хотим получить случайную последовательность, состоящую из десятизначных чисел. Пусть первое десятизначное число нашей последовательности 5772156649 (мы просто набрали подряд 10 цифр, вы можете написать другое число). Возводим его в квадрат и получаем двадцатизначное число 33317792380594909201. Отбрасываем пять первых и пять последних цифр. Получаем новое десятизначное число 7923805949. Это второй член нашей последовательности. Возводим его в квадрат и получаем 62786700717407790601. Снова отбрасываем пять первых и пять последних цифр и получаем третий член нашей последовательности: 7007174077. Так же получаем четвертое число и т. д.
Фактически строится рекуррентно заданная последовательность чисел. А где же здесь случайность? Конечно, никакой случайности здесь нет. Но важно, что получаемые таким способом числа ведут себя как случайные: частота появления любого числа в этой последовательности примерно одинакова. Математики доказали, что если рассмотреть бесконечную последовательность таких чисел (т. е. как будто мы проводим бесконечную серию опытов), то для каждого числа вероятность его появления одна и та же. А в моделировании экспериментов со случайными числами только это и надо!
I 122
В итоге вместо последовательности случайных чисел мы имеем ее модель, сохраняющую самое главное свойство: равномерное распределение вероятностей появления членов этой последовательности. Такие последовательности, моделирующие последовательности случайных чисел, стеши называть псевдослучайными. Зато алгоритмы получения псевдослучайных последовательностей по-прежнему называют датчиками случайных чисел.
В течение почти десяти лет после изобретения Дж. фон Неймана математики придумывали различные датчики случайных чисел. Проблема в том, что все псевдослучайные последовательности являются периодическими, т. е., начиная с некоторого места, числа в последовательности появляются в том же порядке. Для последовательности, предложенной Дж. фон Нейманом, этот эффект осознать совсем легко: если еще раз появится число 5772156649, то следующее за ним будет 7923805949, потом 700717407 и т. д. И тогда уже о моделировании случайности говорить не приходится. Правда, произойдет это только через 10^® операций. Для человека провести столько опытов в лучшем случае дело нескольких лет, даже если просто подбрасывать монетку, а для компьютера в худшем случае дело нескольких часов (если моделируется что-то сложное). Но для получения достоверных результатов моделирования, например, работы ядерного реактора нередко требуется намного больше случайных чисел. Вот за создание быстрых и надежных ДСЧ с большим периодом (порядка 10^"®) и развернулась борьба математиков.
Сегодня в любом языке программирования есть ДСЧ. Обычно он выполнен в виде подпрограммы-функции и для пользователя выглядит как оператор, присваивающий переменной случайное значение из промежутка [0; 1). Есть такой оператор и в электронной таблице Microsoft Excel. В алгоритмах мы этот оператор будем записывать сокращением ДСЧ. Например, по команде
л: := ДСЧ;
переменной х будет присвоено случайное значение из промежутка [0; 1). Если требуется присвоить равномерно распределенное случайное значение из промежутка [а; Ь), то используется команда
X := а + (Ь - а)*ДСЧ.
Иногда требуется получить целое случайное число х, удовлетворяющее неравенству т < х < п. Тогда используется команда
X := т + ШТ((п + 1 - т)*ДСЧ).
ВОПРОСЫ и ЗАДАНИЯ
О Что такое случайное число?
Q Что значит последовательность случайных чисел равномерно распределена?
123
Моделирование процессов живой и неживой природы
0
0
О
Приведите примеры процессов, в которых встречаются равномерно и неравномерно распределенные последовательности случайных чисел.
Предположим, что вы хотите получить последовательность случайных чисел от 1 до 99. Какой из перечисленных ниже методов вы предпочтете?
а) Выбрать из взятых наугад страниц телефонного справочника две последние цифры наугад выбранных номеров телефонов.
б) Воспользоваться двумя младшими разрядами номеров страниц того же справочника.
в) Позвонить нескольким знакомым и попросить их назвать какое-нибудь натуральное число, меньшее 100.
г) Взять номера, выигравшие в «Русском лото» за последние несколько розыгрышей.
Проверьте метод фон Неймана для двузначных чисел, а именно установите, как ведет себя последовательность в зависимости от выбора первого числа последовательности.
а) Объясните, почему в последовательности десятизначных чисел, построенной по методу фон Неймана, некоторое число обязательно повторится (следовательно, последовательность наверняка периодична).
б) Предложите какой-нибудь способ построения непериодических последовательностей и-значных чисел.
Подумайте и попытайтесь сформулировать ответ на следующий вопрос: в каких задачах при компьютерном моделировании вам кажется более уместным использовать ДСЧ языка программирования, а в каких — электронной таблицы?
Моделирование случайных процессов
Применим полученные знания для построения вероятностных моделей. Речь пойдет о моделировании так называемых систем массового обслуживания. Представление о таких системах дают следующие примеры:
в На телефонную станцию поступают телефонные звонки. Для их обслуживания требуются свободные каналы связи. Сколько таких каналов должно быть, чтобы не возникало простоев оборудования и слишком больших очередей абонентов, дожидающихся связи?
S На станцию «Скорой помощи» поступают вызовы от населения. Сколько врачебных бригад должно дежурить в то или иное время суток, чтобы бесперебойно оказывать помощь и при этом чтобы не оставались без работы бригады?
в В магазине самообслуживания покупатели рассчитываются через кассы на выходе. Сколько надо установить кассовых аппаратов и каков должен быть режим работы кассиров, чтобы не создавалось слишком длинных очередей и не простаивали без дела кассиры?
Во всех этих примерах есть две черты, их объединяющие:
1) требуется обрабатывать некоторые объекты, поступающие постоянно, но через случайные промежутки времени;
124
2) время на обработку каждого объекта тоже случайная величина.
Системы с такими особенностями и называют системами массового обслуживания.
Для моделирования систем массового обслуживания надо знать характер тех «случайностей», которые описаны в пунктах 1 и 2. Для этого их статистически изучают, проводя соответствующие наблюдения и измерения. Поэтому для разных систем массового обслуживания получаются, вообще говоря, разные модели, их описывающие. Мы разберем самую простую — модель кассового обслуживания в магазине.
В разное время суток интенсивность посещения магазина покупателями различна. Мы выберем некоторый интервал времени, когда интенсивность не сильно меняется и можно считать, что количество покупателей, приходящих в магазин в течение минуты, — это равномерно распределенная случайная величина, принимающая целые значения в интервале от О до Nq.
Точно так же равномерно распределенной случайной величиной мы будем считать время, которое требуется кассиру на обслуживание покупателя. Пусть данная случайная величина изменяется в пределах от Tq до Т^.
Кроме того, прежде чем подойти к кассе, покупатель проводит некоторое время в торговом зале, выбирая товары. Это тоже случайная величина, и пусть она равномерно распределена в интервале от Vq до
Набрав корзину с товарами, покупатель идет к той кассе, где меньше очередь. Поэтому можно считать, что длина очереди во всех кассах одинакова. Мы хотим найти такое число k — количество касс, чтобы очередь в каждую из них не превышала т человек.
Таким образом, для моделирования процесса обслуживания покупателей нам трижды требуется случайное число: количество покупателей в магазине, время обслуживания одного покупателя кассиром и время пребывания покупателя в торговом зале для выбора товаров.
Выше мы фактически перечислили основные предположения модели и определили параметры, которые ее описывают. Теперь между этими параметрами надо установить связи.
Пусть по истечении t минут в торговом зале магазина находятся (но не стоят в кассу) покупателей. За следующую минуту в магазин зайдет еще INT((iVo + 1) ’ ДСЧ) покупателей — эта формула приведена в конце предыдущего параграфа. Иными словами,
= а, + INT((iVo -Ь 1) • ДСЧ) - Ь„
где — количество покупателей, оплачивающих в кассах покупки в течение t-й минуты.
Как определить число &(? Будем рассуждать так. Поскольку максимальная продолжительность выбора покупок Fj, то все
125
Моделирование процессов живой и неживой природы
покупателей зашли в торговый зал не более как минут назад. Но некоторые из них находятся в зале менее минут, т. е. они уж точно покупки еще не выбрали. По условию объявлено равномерное распределение покупателей, поэтому на интервал времени
Fj - Vq приходится в среднем
^1-
^0
а, покупателей. Но не все эти
покупатели отправились в кассу. Поэтому и данное число мы должны умножить на очередное случайное число. Итак,
- INT
ДСЧ
У
(Хотя здесь и написано снова ДСЧ, этот оператор выработает уже другое число, нежели то, которое фигурировало при вычислении а^.)
Теперь подсчитаем, сколько человек стоит в очереди. Обозначим через Cf количество покупателей, стоящих в очередях в кассу. Тогда I = Cf + bf — df, где — количество покупателей, обслуженных кассами в течение t-vi минуты. Время, которое уходит на обслуживание одного покупателя, — случайная величина, равномерно распределенная на промежутке [Т^; Г^). С помощью датчика случайных чисел это время моделируется величиной
(Т, - Го) • ДСЧ -ь Го.
X X \J' ' '
Но тогда за 1 мин будет выполнена
1
(Г,-Го) ДСЧ + Го
часть работы по обслуживанию одного покупателя. В k кассах эта величина будет соответственно в k раз больше. Следовательно,
dt =
k
(Г^-Го) ДСЧ + Го
Осталось сформулировать критерий «большой очереди». Напомним, что мы договорились считать очередь большой, если в каждую кассу стоит больше чем т человек, т. е. когда Ct > mk.
Чтобы полностью определить величины a^, b^, и d^, надо еще задать начальные значения этих величин: а^, Ь^, и do. Последовательно вычисляя данные величины, будем подсчитывать количество минут, когда очередь оказывалась большой. Если число таких минут в течение часа оказывается большим, значит, касс работает мало и надо открыть дополнительные. Если же таких минут не оказалось вообще, то можно попробовать уменьшить число работающих касс.
Как обычно, для реализации этой модели на компьютере требуется выбрать подходящую технологию. Мы выберем алгоритми-
126
зацию. Вот как может выглядеть алгоритм, позволяющий вести компьютерный эксперимент с этой моделью.
Алгоритм
веш: N0, ТО, Т1, V0, VI, г;
(* N0 — максимально возможное число покупателей, заходящих в магазин в течение минуты,
[ТО; Т1) — промежуток времени, необходимый для обслуживания одного покупателя кассиром,
[F0; VI) — промежуток времени, необходимый покупателю для выбора товаров, k — количество работающих касс, т — максимально допустимая длина очереди в одну кассу,
г — доля тех минут от общей продолжительности времени работы магазина, когда очередь в кассы превышала допустимую длину *) веш: а, Ь, с, d, Т, s; цел: k, т;
{ Сообщить "Введите максимально возможное число посетителей, входящих в магазин в течение минуты";
Запросить ЛГО;
Сообщить "Введите два числа, задающие промежуток времени, необходимый для обслуживания одного покупателя”;
Запросить ТО, Т1;
Сообщить "Введите два числа, задающие промежуток времени, необходимый покупателю для отбора товаров";
Запросить V0, VI;
Сообщить "Введите максимально допустимую длину очереди";
Запросить т;
Сообщить "Введите предлагаемое вами количество работающих касс";
Запросить k-.
Сообщить "Введите предлагаемое вами общее время, в течение которого моделируется работа магазина";
Запросить Т;
а := О; & := О; с := О; d := 0;
S := 0;
(* количество минут, когда очередь
превышала допустимую длину *)
Делать от / := 1 до Т
{ а:= а + ШТ((ЛГ0 + 1) * rand (1)) - &;
(* оператор получения случайного числа, равномерно распределенного на промежутке [0; и), будем обозначать rand(u) *) Если а < о Tfi { а := 0; } (* в магазине не может нахо-
диться отрицательное количество человек! *)
с := с -¥ Ъ - d\
127
}
Моделирование процессов живой и неживой природы
Если с < О то { с := 0; } (* в очереди не может стоять
отрицательное количество человек! *) Если с > m*k то { S := S + 1; }
Ь := ШТ((а * (F1 - F0)/F1 + 1) * rand (1)); d := k/((Tl - ГО) * rand (1) + ГО);
}
г := s/Г;
Сообщить "Количество работающих касс", k\ Сообщить "Доля плохих минут составляет", г;
Компьютерный эксперимент с этой моделью вы проведете, выполняя лабораторную работу 16. Мы тоже проводили компьютерный эксперимент. Его результаты для различных наборов начальных данных представлены в таблицах 3.5—3.7.
Таблица 3.5
No = 4; Го = 0.5; = 2; F„ = 3,5; F^ = 6; m = 3.
Количество работающих касс 1 2 3 4 5
Доля плохих минут 0,99994 0,99951 0,00492 0 0
No = 10; To =1; Г^ = 3,5; F„ = 4; F^ = 10; m = 3.
Таблица 3.6
Количество работающих касс 7 8 9 10 11
Доля плохих минут 0,99989 0,99988 0,99932 0,93705 0,07146
No = 6; Го = 1; T, = 3,5; Fo = 4; F^ = 8; m = 3.
Таблица 3.7
Количество работающих касс 3 4 5 6 7 8
Доля плохих минут 0,99989 0,99989 0,99982 0,93601 0,01193 0,0001
У вас численные результаты могли получиться иные — датчик случайных чисел мог дать совсем иные значения, нежели у нас. Тем не менее мы убеждены, что общий характер процессов одинаков. Обратим внимание на то, что с увеличением числа касс ситуация из очень плохой скачком меняется на очень хорошую. Ведь доля 0,93 означает, что очереди в кассах имеются на протяжении 55 мин каждого часа, а доля 0,07 — что такие очереди будут в среднем всего лишь 4 мин за час. В последнем случае у руководства
I 128
магазина возникает соблазн закрыть хотя бы одну кассу. Но стоит это сделать, как сразу возникнут большие очереди, и покупатель уйдет в соседний магазин, где его обслужат без очереди. У опытного менеджера очередей в магазине не будет не потому, что там слишком много продавцов или кассиров, а потому, что их там столько, сколько нужно.
Вывод о скачкообразном изменении ситуации мы сделали на основе нескольких компьютерных экспериментов с моделью. Но имеется математическая теория систем массового обслуживания, которая этот вывод строго обосновывает. Правда, эта теория не всегда способна указать, сколько именно надо открыть касс, проложить телефонных линий и т. п. Для получения таких конкретных рекомендаций как раз и требуется компьютерное моделирование. Здесь проявляются непростые взаимоотношения между теорией и компьютерной практикой.
Вычислительные методы, используюш;ие датчик случайных чисел, получили название методов Монте-Карло (по названию города, где расположена знаменитая рулетка, которую можно рассматривать как «генератор» случайных чисел).
ВОПРОСЫ и ЗАДАНИЯ
О Какие системы называют системами массового обслуживания? Назовите характерные черты таких систем.
Q Каковы преимущества компьютерного моделирования систем массового обслуживания?
е Запишите алгоритм, предложенный в объяснительном тексте параграфа, на изученном вами языке программирования.
Q Всем хорошо известно такое физическое явление, как броуновское движение частицы, плавающей по поверхности жидкости. Оно вызывается хаотическим движением молекул жидкости.
а) Можно считать, что частица за некоторую единицу времени (весьма малую, разумеется) перемещается на одно и то же расстояние в случайном направлении. Смоделируйте броуновское движение, рассматривая направление движения (т. е. угол по отношению, скажем, к оси абсцисс) как равномерно распределенную случайную величину на промежутке [0; 2т1). Можно также считать, что время t в этом процессе принимает последовательно значения 0, 1, 2, 3 и т. д. Предусмотрите в этой модели, чтобы для каждого момента времени t подсчитывалось расстояние s от точки начального положения частицы до точки ее нахождения в момент t. Выберите подходящую, на ваш взгляд, информационную технологию компьютерной реализации построенной вами модели и создайте соответствующую компьютерную модель.
б) Постройте модель броуновского движения частицы, предполагая, что не только направление движения является случайной величиной, но и длина «пробега» тоже равномерно распределенная случайная величина на промежутке [0; 1). И в этом случае выберите подходящую, на ваш взгляд, информационную технологию компьютерной реализации построенной модели и создайте соответствующую компьютерную модель.
129
Моделирование процессов живой и неживой природы
§27
Метод Монте-Карло
Рис. 3.2
В предыдущих параграфах этой главы мы построили немало математических моделей для описания различных явлений. И у вас могло сложиться впечатление, что математические модели нужно строить только для решения задач, весьма далеких от математики. На самом деле и в математике для решения той или иной задачи может потребоваться построение математической модели. Одна из таких задач — вычисление площади геометрической фи-гуры. Конечно, для простейших фигур (прямоугольников, треугольников, кругов) вычисление площади не составляет труда: надо в известные формулы подставить исходные данные. А как быть, если фигура имеет сложную форму (рис. 3.2) и требуется вычислить ее площадь?
Можно предложить разные модели, позволяющие решить эту задачу. Например, в 6 классе вас учили использовать палетку: на фигуру накладывается клетчатая прозрачная бумага (пгшетка) и подсчитывается количество квадратиков, попавших в фигуру. В этой модели молчаливо предполагается, что, чем мельче клетки, тем точнее будет результат независимо от того, каким образом наложить палетку на фигуру.
Можно придумать и физическую модель: скопировать фигуру на картон, аккуратно вырезать ее, взвесить и поделить на вес единичного квадрата из этого же картона.
В 11 классе вы познакомитесь еще с одним способом нахождения площадей фигур — с помощью интегралов.
Как видите, и для решения математических задач можно составлять различные математические модели. Математическая модель объекта, процесса или явления, изучаемого какой-либо научной дисциплиной, — это «мост» между этой дисциплиной и математикой. Математическая модель, применяемая для решения математической задачи, — это «мост» между различными разделами математики. Например, метод координат позволяет создавать алгебраические модели геометрических объектов.
Предложенные модели вычисления площади имеют, однако, один недостаток — для них довольно трудно составить алгоритмы для расчетов с помощью компьютера, т. е. трудно преобразовать эти модели в компьютерные.
Математическая модель, которую мы сейчас построим, может показаться вам неожиданной, но она позволяет очень эффективно применять компьютер для решения задач на нахождение площадей, объемов и т. п.
Фигуру, площадь которой нужно найти, поместим в квадрат. Будем наугад (как говорят математики, слз^ешным образом) бросать точки в этот квадрат. Естественно предположить, что, чем большую
5—Гейн. 10 кл.
130
а = 2 Рис. 3.3
площадь в квадрате занимает фигура, тем чаще в нее будут попадать точки. Представьте себе, например, квадратный дворик и в нем детскую площадку. Во время снегопада количество снежинок, попавших на детскую площадку, пропорционально ее площади. Таким образом, можно сделать допущение: при большом числе точек, наугад выбранных внутри квадрата, доля точек, содержащихся в данной фигуре, приближенно равна отношению площади этой фигуры к площади квадрата.
Определим параметры нашей модели. Обозначим для удобства дальнейших рассуждений данную фигуру буквой F.
Одним из параметров являются сторона а квадрата, содержащего фигуру F, другим — количество точек N, которые мы будем случайным образом выбирать внутри квадрата, третьим параметром является искомая площадь S фигуры F.
Теперь определим связи между параметрами модели. Если через М обозначить число тех наугад выбранных точек, которые содержатся в фигуре F, то площадь фигуры приближенно равна
N
К связям между параметрами модели следует отнести и математические соотношения, позволяющие определить, попала ли выбранная точка в фигуру F.
Эти соотношения будут отличать модели, построенные для разных фигур. Значит, фактически мы описали не одну модель, а, скорее, некоторый способ получения моделей. Для каждой конкретной фигуры будет получаться своя модель.
Давайте рассмотрим математическую модель для приближенного нахождения площади круга радиуса R. Формула площади круга вам, конечно, известна: S = кВ^. Однако, если вы помните, эту формулу вам сообщили фактически без доказательства. Вот подходящий случай проверить ее с помощью компьютера.
Пусть для определенности ii = 1. На рисунке 3.3 изображен круг радиуса 1, заключенный в квадрат со стороной а = 2. Таким образом, в качестве фигуры F выступает круг единичного радиуса. Выбрать точку — это значит задать ее координаты: числа хну. Точка принадлежит квадрату, если и Если
-I- < 1, то точка попадает в круг F, иначе она вне круга. Это
и есть математическое соотношение, позволяющее для каждой точки определить, лежит ли она в F.
Математическая модель вычисления площади круга построена, и можно приступать к составлению гшгоритма.
Алгоритм Площадь круга
РеЩ1 X, у;
дел: N, М;
{ Запросить N;
131
Моделирование процессов живой и неживой природы
М := 0;
Делать ai I := 1 ва. N
{ X 2*rand(l) - 1; у := 2*rand(l) - 1;
Если х* + < 1 ifi { М := М + 1; }
} (* конец цикла *)
S ;= 4*M/N;
Сообщить "Число выбранных точек:”, N, "площадь:", S;
}
Вычислительный эксперимент с этим алгоритмом вы проведете, выполняя лабораторную работу 17.
ВОПРОСЫ и ЗАДАНИЯ
^ Составьте алгоритм нахождения с помощью метода Монте-Карло площадей фигур, изображенных на рисунке 3.4.
Рис. 3.4 а) кривая задана уравнением у в) треугольник
X i б) кривая задана уравнением у = х^;
O'
0
(Задача с детективным сюжетом.) Каждый день резидент приходит на встречу со своим агентом в случайный момент времени с 11 до 13 ч и ждет его 15 мин. В свою очередь агент приходит на встречу с резидентом каждый день также в случайный момент времени от 11 до 13 ч и тоже ждет 15 мин. Как часто в течение года встречаются резидент и агент? Составьте математическую модель и алгоритм решения задачи.
Ученик пишет квадратные уравнения вида + рх + q 0, выбирая коэффициенты р и q случайным образом из отрезка [-1; 1]. С какой частотой он будет писать уравнения, имеющие действительные корни? Составьте математическую модель и алгоритм решения этой эадачи.
Завод сбрасывает в реку ежедневно случайным образом из-за неисправности очистных сооружений от О до 30 кг вредных веществ. За каждый килограмм сверх 15 завод обязан заплатить штраф в размере 10 000 р. Прибыль завода от реализации его продукции 70 000 р. в день. Как часто в течение года штраф будет превышать прибыль? Рентабелен ли такой завод? Составьте математическую модель и алгоритм решения этой задачи.
(К решению этой задачи дети до 14 лет не допускаются.) Постройте математическую модель игры в рулетку. Составьте алгоритм, имитирующий эту игру с помощью компьютера.
5*
132
Q Учитель хочет, чтобы компьютер помог ему проверить знание учащимися таблицы умножения, задавая сомножители случайным образом. Составьте математическую модель и алгоритм опроса учащихся.
Q Перечитайте §1,4, 12. Выпишите трактовки понятия информации, которые приведены в этих параграфах.
§28
Еще раз об измерении количества информации’*
В § 12 мы уже обсуждали понятие количества информации. Что же заставляет нас еще раз вернуться к этому вопросу? Разумеется, то, что понятие информации — одно из самых сложных в современной науке и оно может по-разному трактоваться в разных ее разделах. Напомним точки зрения на трактовку понятия информации, которые были приведены в § 1 (вы их выписали, выполняя задание 7 к предыдущему параграфу, и теперь можете сравнить с тем, что указано нами):
® информация — это отражение разнообразия в существующем мире;
» информация — это то, что позволяет адекватно реагировать живому организму (или технической системе) на окружающую среду посредством тех или иных механизмов, индуцируя целенаправленную деятельность по сохранению отдельного индивидуума и/или вида (системы) в целом; в информация — это продукт и объект функционирования человеческого сознания, позволяющий человеку принимать решения, обеспечивающие его эффективную деятельность;
® информация — это последовательность сигналов или символов некоторого алфавита, кодирующая сообщение без учета смыслового содержания этого сообщения.
Самой общей точкой зрения на понятие информации является, очевидно, первая из перечисленных; две последние наиболее узкие и, можно сказать, противоположные друг другу: в одной из них смысл сообщения не учитывается вообще, а в другой, наоборот, главным объявляется именно смысл сообщения. Тем не менее оба эти подхода приводят, как показано в § 12, к одной и той же формуле для вычисления количества информации.
А как обстоит дело в случае первого понимания термина «информация»? Хочется надеяться, что и в этом случае мера количества информации останется той же. Чтобы разобраться в этом, уясним, как измерить разнообразие и как связать эту меру с количеством информации.
Начнем с рассмотрения нескольких мысленных экспериментов. Представьте, что вы идете по улице и считаете ворон. Каждая следующая ворона точно такой же окраски, как и предыдущая. Вы
* Данный параграф рекомендуется изучать только учащимся, знакомым с темой «Логарифмы».
133
Моделирование процессов живой и неживой природы
уже насчитали N ворон, и все N одного цвета — никакого разнообразия! Хотя и говорят, что белые вороны существуют.
А теперь давайте считать, сколько мужчин и сколько женщин встретилось вам, пока вы идете, считая ворон. Если вы идете в расположении воинской части, то на разнообразие опять рассчитывать не приходится. Зато если вы идете по людной улице большого города, то, скорее всего, вам одинаково часто будут попадаться навстречу мужчины и женщины. Итак, в одном случае — отсутствие разнообразия и потому полная определенность очередного события, в другом — два равновероятных исхода и соответственно полная неопределенность исхода: в очередной раз встретится мужчина или встретится женщина.
В общем виде эту ситуацию можно описать так. Пусть имеется к исходов некоторого опыта. Если какой-то исход намного вероятнее других, то неопределенность того, что произойдет при очередном испытании, мала. Если же все исходы равновероятны, то у нас полная неопределенность, что же случится в очередном испытании.
Обозначим через Н величину неопределенности в опыте с к исходами. Хотя мы еще не научились измерять Н, уже ясно, что при к = 1 неопределенность равна 0. А с ростом к неопределенность возрастает. Если в опыте всего два исхода, то неопределенность меньше, чем если таких исходов три. А неопределенность в случае трех исходов меньше, чем для опыта, в котором четыре исхода, и т. д.
Пусть теперь наш опыт состоит в бросании двух кубиков одновременно. Для одного кубика было 6 равновероятных исходов: выпадение любого числа очков от 1 до 6. Нетрудно подсчитать, что для двух кубиков получается 36 различных равновероятных комбинаций выпадения очков. Все они представлены в следующей таблице (первое число в паре указывает количество очков, выпавших на первом кубике, второе число втором):
количество очков, выпавших на
(1, 1) (1, 2) (1, 3) (1,4) (1, 5) (1, 6)
(2, 1) (2, 2) (2, 3) (2,4) (2, 5) (2, 6)
(3, 1) (3, 2) (3, 3) (3,4) (3, 5) (3, 6)
(4, 1) (4, 2) (4, 3) (4,4) (4, 5) (4, 6)
(5, 1) (5, 2) (5, 3) (5,4) (5, 5) (5, 6)
(6, 1) (6, 2) (6, 3) (6,4) (6, 5) (6, 6)
Число исходов увеличилось е 1 6 раз. Следует ли
тать, что неопределенность возросла в 6 раз?
Если мы будем подбрасывать монету, то число исходов равно 2. Если подбрасывать две монеты, число исходов становится равным 4. Схема опыта одна и та же: вместо одного предмета подбрасываются два.
Вообще считают, что величина неопределенности удваивается независимо от того, сколько исходов имеет опыт с одним предме-
I 134
том. и вообще, если проводится два независимых опыта и в одном из них неопределенность исхода равна Н^, а в другом — if2» то договариваются считать, что при одновременном проведении этих двух опытов неопределенность равна сумме неопределенностей в каждом из них. Легко подсчитать, что если в одном опыте было k равновероятных исходов, а в другом — т, то число исходов при их одновременном проведении равно km. Все вышесказанное означает, что
Щкт) = Щк) + Щт).
Хорошо известно, что таким свойством обладает логарифмическая функция. Оказывается (это умеют доказывать математики), что другой функции здесь и быть не может. Поэтому H{k) = log(^). Основание логарифма принципиальной роли не играет. Обычно его выбирают равным 2, поскольку за единицу измерения неопределенности принимают неопределенность, имеющуюся при наступлении одного из двух равновероятных событий. Если за единицу неопределенности взять неопределенность, присутствующую при проведении опыта с десятью равновероятными исходами, то получится десятичный логарифм (чтобы log(lO) = 1). На самом деле выбор основания логарифма принципиального значения не имеет, поскольку переход к другому основанию, как все помнят из школьного курса математики, приводит всего-навсего к умножению на константу. Это эквивалентно переходу к другой единице измерения, совершенно аналогично тому, как умножение на соответствующую константу происходит при переходе от метров к сантиметрам или от килограммов к граммам.
Итак, мерой неопределенности опыта, имеющего k равновероятных исходов, договорились считать величину
Щк) = loga*.
Назвали эту величину энтропией.
Приведенная нами формула была в 1928 году предложена американским инженером-связистом Хартли и поэтому носит его имя. Удивительное дело — она снова совпала с той формулой для количества информации, которая была приведена в § 18.
Попробуем теперь разобраться, как получается значение энтропии, если исходы опыта неравновероятны. Можно рассуждать так. Если все исходы равновероятны, то каждый исход вносит в неопределенность одну и ту же лепту. Поскольку общая неопределенность равна loggfe, то вклад в нее одного исхода составляет
rlog2* = -rlogaT*
Число — — это вероятность каждого исхода, если все они рав-
К
новероятны. Естественным поэтому представляется, что для неравновероятных исходов вклад одного исхода в общую неопределен-
135
Моделирование процессов живой и неживой природы
ность опыта составляет —^)log2(^)), где р — вероятность данного исхода. Если теперь опыт имеет п исходов, а их вероятности равны Pi, Р2, то мера неопределенности для данного опыта в це-
лом равна
H(Pi,P2, ...,Рп) = -P2^0g2P2 - ... -p„log2P„.
Полученную формулу для энтропии опыта с неравновероятными исходами называют формулой Шеннона в честь основоположника теории информации Клода Шеннона, обосновавшего эту формулу в своих первых трудах, посвященных теории передачи информации по каналам связи.
Можно проверить, что, когда р стремится к О, значение функции —p\og2P также стремится к 0. Поэтому можно считать, что в нуле данная функция обращается в 0. Это полностью соответствует представлению, что для невозможного события (а вероятность такого события как раз и равна 0) никакой неопределенности нет, так что и энтропия должна быть нулевой.
Точно так же и для достоверного события, т. е. события, которое всегда происходит, вероятность равна 1, неопределенности никакой нет и энтропия, вычисленная по данной формуле, тоже равна 0.
Кроме того, величина Н{р^, Р2, Рп) достигает своего максимума, только когда все вероятности р^, Р2, ..., равны между собой. Это тоже отвечает нашим представлениям, что именно в случае равновероятных исходов неопределенность опыта максимальна.
Получив возможность измерять неопределенность того или иного опыта, можно объективно судить о том, в каком случае эта неопределенность выше. Вот один пример.
Пусть из многолетних наблюдений известно, что в данной местности 15 ноября вероятность дождя равна 0,65, вероятность снега — 0,15 и вероятность отсутствия осадков — 0,2. Для 15 июня в той же местности вероятность дождя равна 0,4, вероятность отсутствия осадков — 0,6, снег не наблюдался ни разу. В какой день состояние погоды следует считать более неопределенным?
Подсчитаем энтропию для каждого из этих дней:
^15 ноября = -0,651og20,65 - 0,151og20,15 - 0,21og20,2 == 1,279;
15 июня
= -0,41og20,4 - 0,61og20,6 ~ 0,971.
Значит, в ноябре неопределенность состояния погоды выше.
Мы довольно значительное место отвели введению меры неопределенности. Но насколько при этом мы приблизились к главному вопросу: как измерить количество информации? Ясно, что ликвидировать неопределенность — это и значит получить информацию. Следовательно, приведенная выше формула Шеннона показывает, какое максимальное количество информации можно получить для той или иной конкретной системы, если полностью избавиться от
I 136
неопределенности. Речь идет именно о максимальном количестве информации, ибо неопределенность может оказаться снятой не полностью, и тогда количество информации окажется меньшим. А можно сказать иначе: эта формула показывает, каким количеством информации нужно располагать, чтобы полностью снять неопределенность.
Итак, если информация понимается как отражение разнообразия, то мерой для ее количества выступает мера неопределенности, которой обладает рассматриваемая в этот момент ситуация. Описывая неопределенность на языке вероятностей, мы приходим к формуле Шеннона. Она-то и является тем обобщением формулы для подсчета количества информации, которое было обещано нами в § 18.
Более того, формула Шеннона объясняет, как может появиться дробное количество информации. Представим себе снова игру «Угадайка», только теперь мы хотим узнать одно число от 1 до 48. Количество вопросов, необходимое для гарантированного отгадывания числа, т. е. полного снятия неопределенности, мы и взяли за количество информации. Что же будет происходить в данном случае? Ясно, что 5 вопросов здесь, вообще говоря, недостаточно, а 6 оптимально заданных вопросов гарантируют угадывание. Но не остановимся на констатации этого факта, а продолжим рассуждения. Пусть при угадывании мы, как и прежде, придерживаемся стратегии деления пополам. Для первых четырех вопросов все пройдет хорошо, а перед пятым вопросом нам будет «противостоять» трехэлементное множество. Поэтому либо мы угадаем число за один вопрос
(с вероятностью ^), либо нам потребуется еще два вопроса (с вероятностью ^). Итак, если числа задумываются с равной вероятностью.
то при таком первом вопросе для гарантированного угадывания нам с вероятностью ^ потребуется 6 вопросов, а с вероятностью ^ по-
О О
требуется только 5 вопросов, т. е. при такой стратегии в среднем
требуется 5^ вопросов для гарантированного ответа. Однако нет
никакой уверенности, что выбранная нами стратегия оптимальна, т. е. что она дает минимальное среднее количество вопросов для гарантированного угадывания одного числа из 96. И она действительно неоптимальна: можно доказать, что при оптимальной стратегии число вопросов в среднем будет равно loga48 = 5,58496... Естественно это число и взять за количество информации, которое требуется получить, чтобы определить задуманное число.
|п| Если множество содержит п элементов, то количество инфор-иШ мации, необходимое для определения одного элемента, вьще-ленного тем или иным образом, равно log2n..
137
Моделирование процессов живой и неживой природы
А это совпадает с результатом, подсчитанным по формуле Шеннона в случае, когда все вероятности равны между собой и, значит,
1
они равны —.
На самом деле предположение о равной вероятности загадывания чисел малоправдоподобно, если разрешить загадывать не любые числа, а числа из ограниченного диапазона. Вероятность загадывания числа больше миллиона во много раз меньше, чем вероятность загадывания числа из первой сотни. Да и для чисел из первой сотни эти вероятности тоже неодинаковы. Если известны вероятности, с которыми загадываются числа, то среднее количество вопросов, которое потребуется для угадывания числа при следовании оптимальной стратегии, как раз определяется формулой Шеннона.
Иногда интересуются тем, сколько информации несет ответ на тот или иной вопрос. Мы уже знаем: если ответ уменьшает неопределенность вдвое, то он несет 1 бит информации. Эта ситуация имеет место в том случае, если вариантов ответа только 2 и они равновероятны. Рассмотрим обш;ую ситуацию. Пусть задумано 10 чисел. Зададим вопрос задумавшему число: «Верно ли, что задумано число 6?» Вероятность ответа «Да», как нетрудно подсчитать, равна 0,1 (мы предполагаем, что у задумавшего нет предпочтения к каким-либо числам, так что все исходы равновероятны). Но если дан ответ «Да», то неопределенность снята полностью, и, значит, нами получена вся информация. Как было сказано, количество этой информации равно logglO = -logaO,! ~ ~ 3,322.
ШЕсли вероятность некоторого события равна р, то количество информации, которое получено, если это событие произошло, равно —loga/».
Например, ответ «Нет» в той же ситуации имеет вероятность 0,9, поэтому он несет всего лишь -loga0,9 ~ 0,152 бит информации. Такое малое количество информации вполне естественно, ведь этот ответ никак нельзя признать неожиданным.
ВОПРОСЫ и ЗАДАНИЯ
Q Какому пониманию термина «информация» соответствует формула Шеннона для измерения количества информации?
Q В приведенном примере вычисления неопределенности состояния погоды мы учитьгвсши вид осадков. Если же интересоваться только тем, есть осадки или нет, то для 15 ноября значение неопределенности будет другим. Найдите его. В какой из этих двух дней состояние погоды с этой точки зрения имеет более высокую неопределенность?
I 138
0 в игре «Угадайка» отгадываются числа от 1 до 20, при этом оказалось, что каж-
2
дое из чисел от 1 до 10 загадывается с вероятностью —, а каждое из чисел
30
от 11 до 20 — с вероятностью —.
30
а) Какое в среднем число вопросов потребуется для угадывания числа при оптимальной стратегии?
б) * Попытайтесь описать оптимальную стратегию в этой игре.
Q Имеется 1000 монет, из которых одна фальшивая (легче других). Придумайте способ нахождения фальшивой монеты за 7 взвешиваний на чашечных весах без гирь. Докажите, что нельзя придумать способ, который гарантирует нахождение фальшивой монеты за 6 взвешиваний.
Q а) Задумано двузначное число. Вам сообщили, что оно больше 54. Сколько информации вы получили?
б) Задумано трехзначное число. Вам сообщили, что оно меньше 325. Сколько информации вы получили?
Q В одном из рассказов К. Чапека описывается случай, как поэт стал свидетелем дорожно-транспортного происшествия, виновник которого умчался с места аварии. Поэт, потрясенный увиденным, написал стихотворение, в котором была такая строка: «О, шея лебедя! О, грудь! О, барабан!»
Полиции он сказал, что эти образы навеяны цифрами номера умчавшейся машины: двойкой, тройкой и нулем. Считая, что номера машин в то время были трехзначными, определите, сколько информации сообщил поэт полиции.
Q к экзамену надо выучить 20 вопросов. Ученик Иванов считает, что 5 вопросов он знает на «отлично», 8 вопросов — на «хорошо», 6 вопросов — на «удовлетворительно» и 1 вопрос не знает совсем. Ученик Петров считает, что он 3 вопроса знает на «отлично», 10 вопросов — на «хорошо», 5 вопросов — на «удовлетворительно» и 2 вопроса не знает совсем. На экзамене придется отвечать на один вопрос.
а) У кого неопределенность с оценкой больше?
б) У кого из этих учеников больше неопределенность того, сдаст ли он экзамен?
ИТОГИ ГЛАВЫ
Повторим кратко то основное, что вы узнали, изучив главу 3.
Для изучения процессов, протекающих в живой и неживой природе, обычно используются математические модели, устанавливающие зависимость параметров этих процессов от времени. При преобразовании этих моделей в компьютерные, как правило, используется язык программирования или электронная таблица.
Адекватность модели означает, что цель моделирования достигнута и при решении с ее помощью задач определенного класса получается удовлетворительный ответ. В частности, адекватность модели означает, что при ее построении действительно бы-
139
Моделирование процессов живой и неживой природы
ли учтены все существенные факторы. Адекватность модели можно проверить только ее согласованностью с общими теоретическими положениями и экспериментальными данными. Поэтому на заключительной стадии построения модели всегда проводят эксперимент, подтверждающий или опровергающий адекватность созданной модели. Этот эксперимент может быть натурным или компьютерным. В таком эксперименте обычно определяются границы адекватности модели, т. е. та область изменения параметров модели, в пределах которой модель можно считать адекватной.
Среди процессов особую группу составляют процессы, для которых существенным является фактор случайности. Случайное событие, происходящее в таком процессе, обычно характеризуют параметром, который называется вероятностью данного события. Вероятность события — это число, к которому стремится значение относительной частоты наступления события в серии опытов, когда количество опытов неограниченно возрастает. Для построения моделей случайных процессов — такие модели называются вероятностными — используют датчики случайных чисел.
Датчики случайных чисел, реализованные в виде алгоритма для компьютера, генерируют псевдослучайную последовательность чисел. Она не является случайной в строгом смысле этого слова, поскольку закономерность образования членов этой последовательности изначально задана. Однако для достаточно большого числа своих членов такая последовательность обладает необходимыми (с точки зрения обеспечения адекватности вероятностной модели) свойствами последовательности случайных чисел. Во многих процессах встречаются последовательности равномерно распределенных случайных величин — это означает, что вероятности появления у всех членов последовательности одинаковы.
В языках программирования датчик случайных чисел, как правило, реализован в виде одного оператора, присваивающего переменной случайное значение. Для инициализации работы датчика случайных чисел требуется начальное значение, которое задается с помощью специального оператора.
Вероятностные модели могут использоваться и в математике, например, для вычисления площади геометрической фигуры или объема геометрического тела. Такие методы вычислений получили название методов Монте-Карло.
Количество информации, которое можно получить в опыте,
имеющем п исходов с вероятностями р^, Pg..Рп’ вычисляется по
формуле Шеннона:
Р21 •••■> Рп) ~ ~ Рг^^ёгРг ~ ••• ~ Рп^^ёгРп'
Если при этом вероятности всех п исходов одинаковы (равномерное распределение), то количество информации равно logg^ (формула Хартли).
140
ЧЭСТЬ 1. При выполнении предложенных ниже заданий запишите у себя в тетради шифр задания и номер правильного ответа. По окончании работы сверьте получившуюся у вас запись с ключами на с. 269.
А1. Свойство модели соответствовать теоретическим воззрениям и наблюдениям практики называется:
информативностью; адекватностью; системностью;
Щ среди вариантов, указанных в пунктах 1—3, нет правильного.
А2. Модель, при построении которой в качестве существенного учитывается фактор случайности, называется:
адекватной; вероятностной; ‘’Щ; системной;
среди вариантов, указанных в пунктах 1—3, нет правильного.
АЗ. Некто задумал натуральное число, не превосходящее 1000, а затем сообщил: «Задуманное мною число является степенью числа 2 с целым показателем». Количество бит информации, содержащейся в этом сообщении, равно:
1) logglOOO; 2) 9; S) logglOO; 4) logglO.
А4. Студент Иванов сдает экзамен по аппаратным средствам информатизации, а студент Петров — экзамен по информационным технологиям. Иванову надо выучить 20 вопросов, а Петрову — 25. Иванов считает, что он 4 вопроса знает на «отлично», 9 вопросов — на «хорошо», 5 вопросов — на «удовлетворительно» и 2 вопроса не знает совсем. Петров считает, что он 5 вопросов знает на «отлично», 10 вопросов — на «хорошо», 7 вопросов — на «удовлетворительно» и 3 вопроса не знает совсем. На экзамене придется отвечать на один вопрос. Неопределенность с оценкой:
1) у Петрова больше, чем у Иванова;
<2) у Петрова меньше, чем у Иванова;
3J одна и та же у Петрова и у Иванова;
4)j у Петрова и у Иванова нельзя сравнивать, поскольку они сдают разные экзамены.
А5. Следующий алгоритм предназначен для нахождения площади фигуры методом Монте-Карло, в нем через rand(l) обозначен датчик случайных чисел, вырабатывающий равномерно распределенную последовательность чисел из промежутка [0; 1).
Алгоритм
иел: М, N; веш: X, Y;
{ N :^0;
Делать от М := 1 до 100000
141
Моделирование процессов живой и неживой природы
{ X := 2*rand(l) - 1;
У := rand(l);
Если (|Х| + У < 1) то {
}
Сообщить N / 50000;
N
N + 1-, }
(* конец цикла *)
}
Площадь этой фигуры равна:
1) 0,5; 2) 1; В) 1,5;
4) другому, нежели в пунктах 1—3, числу.
Аб. Следующий алгоритм предназначен для нахождения площади фигуры методом Монте-Карло, в нем через rand(l) обозначен датчик случайных чисел, вырабатывающий равномерно распределенную последовательность чисел из промежутка [0; 1).
Алгоритм
цел: М, N-, веш: X, У;
{ АГ := 0;
Делать от М := 1 до 100000 { X := rand(l);
У := 2*rand(l) - 1;
Если -I- у2 < 1) le { N := N + 1-, }
}
Сообщить ДГ/50000;
}
Этой фигурой является:
1J треугольник; круг;
(* конец цикла *)
Щ полукруг; Ш ромб.
А7. Вами изучались следующие инструменты информационных технологий:
а) текстовый редактор;
б) графический редактор;
в) электронная таблица;
г) СУБД;
д) язык программирования.
При построении компьютерной модели на основе преобразования математической модели используются инструменты:
1) айв; 2) виг; 3) в и д; 4) б и д.
Часть 2. При выполнении предложенных ниже заданий запишите у себя в тетради шифр задания и ответ в виде последовательности символов. По окончании работы сверьте получившуюся у вас запись с ключами на с. 269.
В1. Выберите из списка необходимые действия, уст£шовите правильную последовательность их выполнения и запишите номера этих действий в порядке полученной последовательности.
Для построения информационной модели надо:
142
Щ определить свойства объекта, существенные для решения задачи; выбрать материал, из которого будет изготовляться модель; сформулировать цель моделирования;
!4|! описать выделенные свойства с помощью параметров;
определить, какая технология будет использоваться для реализации модели;
Wf' указать связи между параметрами;
Щ убедиться, что модель адекватна.
В2. Выберите номера правильных ответов и запишите их в порядке возрастания без пробелов и знаков препинания между ними.
Для алгоритмической модели, представленной компьютерной программой, параметры модели могут быть представлены:
||*| текстом; ^ числами; '0)1 переменными;
4^ ничем из перечисленного в пунктах 1—3.
ВЗ. В следующем предложении требуется вместо <процесса> вставить словосочетание из левого столбца таблицы 3.8, а вместо <список па-раметров> — нужные слова из правого столбца той же таблицы.
Для информационной модели <процесса> параметрами являются <список параметров>.
Ответ к этому заданию записывается в виде 1АВВ, 2ВК и т. д.
Таблица 3.8
Процесс Параметры
1) равномерное движение; А) скорость;
2) движение под действием силы (второй Б) сила;
закон Ньютона); В) ускорение;
3) упругая деформация (закон Гука); Г) путь;
4) работа магазина; Д) время;
5) работа театра; Е) длина;
6) равноускоренное движение Ж) модуль упругости; 3) список товаров; И) количество товара; К) репертуар; Л) список цен; М) список работников; Н) масса
В4. Выберите номера правильных ответов и запишите их в порядке возрастания без пробелов и знаков препинания между ними.
Для описания нижеперечисленных физических явлений используется математическая модель в виде прямо пропорциональной зависимости между параметрами:
143
Моделирование процессов живой и неживой природы
1) равномерное прямолинейное движение (параметры: пройденный путь, время);
3) работа рычага (параметры: длина рычага, сила);
3)> деформация пружины под действием силы (параметры: величина силы, изменение линейных размеров);
4% равномерное движение по окружности (параметры: центробежная сила, угловая скорость);
изменение размеров тела при нагревании (параметры: изменение температуры, изменение линейных размеров);
6) среди вариантов, указанных в пунктах 1—5, нет правильного.
В5. Последовательность чисел, вырабатываемая датчиком случайных чисел, называется _________.
В6. Для преобразования непрерывной математической модели в компьютерную модель производится ее__________.
j-fc - Ч te-
i..
■23*!m3ir'-^V£*i.cTncmax3sm
Q\}^j i i V'ij
0^-ff
ulIRJ33C3I©
)0
Уже достаточно сказано о возможностях компьютеров и применяемых информационных технологий, чтобы каждый понял, какую неоценимую помощь может оказывать компьютер в предоставлении и обработке информации. Однако за человеком остается право (и обязанность) делать выводы на основе предоставляемой информации и принимать соответствующие решения. Иногда мы говорим, что решение принимает компьютер. Например, если компьютер, управляя каким-либо автоматом, получает от датчиков этого автомата информацию об опасности его разрушения в тех условиях, в которых он оказался, то компьютер может «принять решение» об эвакуации автомата из этой обстановки. Но каждому ясно, что на самом деле это решение было заранее запрограммировано человеком и компьютер безоговорочно следует инструкции.
Принятие решения — это всегда прерогатива человека. Во-первых, потому, что любая информация лишь модельно отражает реальную действительность, и, следовательно, принимаемое компьютером решение может оказаться неадекватным сложившейся ситуации. В вышерассмотренном примере вполне вероятна ситуация, что автомат должен погибнуть, чтобы предотвратить большее несчастье. Во-вторых, передать компьютеру право принимать решения — значит вверить судьбу человечества электронике. И хотя сегодня бунт роботов — это все еще удел фантастических произведений, в их основе лежит именно предположение о предоставлении компьютеру права принимать решения наравне с человеком.
Тем не менее помощь компьютера в решении человеком информационных задач намного бы выросла, если бы компьютер «научился» предлагать человеку на выбор обоснованные варианты возможных решений. Но для этого надо научить компьютер делать выводы из имеющейся информации. Иными словами, надо в компьютере смоделировать процесс рассуждений, которые проводит человек. О тех подходах к решению данной проблемы, которые сегодня разрабатываются в информатике, и пойдет речь в этой главе.
145
Логико-математические модели
Понятие моделей искусственного интеллекта
Первым, кто предпринял удачную попытку построить модель человеческих рассуждений, был, по мнению историков науки, древнегреческий ученый Аристотель. Именно он сформулировал первые законы рассуждений, заложив основы новой науки, названной им логикой. В дальнейшем вклад в эту науку вносили психологи и философы, лингвисты и математики. У этой науки появились разные направления исследований, она разделилась на ряд областей, одна из которых называется формальной или математической логикой. Более того, не только специализировались исследования внутри логики, но и расширялись сферы исследований на всю интеллектуальную деятельность человека. Как человек распознает предметы и явления, как происходит обучение и самообучение, как вырабатываются стратегии в реальной жизни или играх, каковы механизмы стихосложения и сочинения музыки — все это стало предметом исследований ученых. А модели, создаваемые в результате таких исследований, стали называть моделями искусственного интеллекта.
Для описания моделей искусственного интеллекта используются разнообразные, иногда довольно сложные средства. В основе многих из них лежат графы, о которых мы кратко вспомнили в § 3. Тем не менее любая модель искусственного интеллекта как одна из разновидностей информационных моделей обязательно содержит набор параметров, описываюш;их суш;ественные факторы. Поскольку модель искусственного интеллекта направлена на принятие того или иного решения, то в качестве связей между параметрами, описываюш;ими исходные данные, и результатом выступают так называемые правила вывода. Их суть в том, что они указывают, какое решение должно быть рекомендовано в рамках данной модели при тех или иных значениях исходных параметров.
К примеру, модель, обеспечиваюш;ая медицинскую диагностику, учитывает такие параметры, как температура пациента, кашель, сыпь, жалобы на боль в тех или иных частях тела и т. п. Правило вывода по значениям этих исходных параметров должно предоставить название наиболее вероятного заболевания (или список таковых, расположенных, например, в порядке убывания вероятности). Кроме того, правило вывода может предусматривать выдачу рекомендации провести еш;е какие-либо анализы или задать дополнительные вопросы пациенту для уточнения диагноза.
Модель распознавания графических образов, например рукописных букв и цифр (а сейчас такие системы создаются для автоматизации ввода в компьютер рукописных текстов), содержит уже иные параметры и иные правила вывода о том, что именно представляет собой данный графический образ.
Модель, описываюш;ая процессы восприятия человеком музыки, оперирует с параметрами, характеризующ;ими метроритмичес-
146
кую, ладогармоническую и другие структуры музыкального произведения, а также с параметрами психофизиологических реакций на эти структуры. Правила вывода здесь могут указывать на то, в какой мере и как данная музыка воспринимается тем или иным человеком.
Правила вывода, применяемые в конкретной системе искусственного интеллекта, могут иметь разную форму, и нередко сами такие системы классифицируются именно по тому признаку, какую форму имеют используемые правила вывода. Рассматривать подробно различные системы искусственного интеллекта мы не будем — слишком широка и разнообразна ныне эта область информатики. Но с одной разновидностью, а именно с экспертными системами, которые все активнее применяются в научных исследованиях и технологических процессах, мы вас познакомим и даже предоставим возможность самостоятельно сконструировать несложную экспертную систему. Речь об этом пойдет в § 38, а пока вам предстоит познакомиться с теми средствами, которые для этого будут использоваться.
ВОПРОСЫ и ЗАДАНИЯ
Q Какой признак выделяет модели искусственного интеллекта из множества информационных моделей в целом? Попытайтесь привести примеры моделей искусственного интеллекта, помимо тех, которые указаны в объяснительном тексте параграфа.
0 Почему право принятия решения должно быть оставлено за человеком? Приведите свои аргументы в пользу этого тезиса.
Элементм логики высказывоний
Психологи давно установили, что мыслительная деятельность человека всегда осуществляется посредством какого-либо языка. Использование языка придает мыслительной деятельности форму рассуждений. Что такое рассуждение? Рассуждение — это последовательность вопросов, задаваемых самому себе или собеседнику, и ответов на них.
Вопросы могут быть разного типа. Можно спросить: «Сколько существует простых чисел?» Ответом служит утверждение: «Простых чисел бесконечно много». Можно спросить: «Как найти тысячное простое число?» Ответом будет алгоритм, позволяющий вычислить требуемое простое число. Напомним (см. § 11), что информацию, содержащуюся в ответе на первый вопрос, мы относим к декларативному типу, а информацию, содержащуюся в ответе на второй вопрос, — к процедурному.
Свойства алгоритмов вы изучили в базовом курсе информатики, а мы еще раз их обсудили в § 7. Среди них есть, например, ре-
147
Логико-математические модели
зультативность и правильность. А вот информацию, представленную декларативно, можно, пожалуй, оценить только с одной позиции — истинна она или ложна.
Повествовательное предложение, в отношении которого имеет смысл говорить о его истинности или ложности, называется высказыванием. Такое определение высказыванию дал Аристотель. Рассмотрим следующие предложения.
1. Число V2 иррационально.
2. Число V2 рационально.
3. Любое натуральное число х рационально.
4. Любое число х рационально.
5. Существует число х, которое иррационально.
6. Число X рационально.
7. Если число X иррационально, то число л: -I- 1 тоже иррационально.
8. Число называется рациональным, если оно равно отношению целого числа к натуральному.
9. Верно ли, что число \[2 иррационально?
10. Докажите, что число \[2 иррационально.
Первые пять предложений, очевидно, являются высказываниями, причем 1, 3 и 5-е истинны, а 2-е и 4-е ложны. Два последних предложения не являются высказываниями, поскольку они вовсе не повествовательные: одно из них вопросительное, а другое побудительное. Предложение 8 не является высказыванием, поскольку о его истинности говорить бессмысленно: оно лишь определяет новое понятие через ранее введенные.
В повествовательном предложении б истинность заключенной в нем информации зависит от значения переменной х: при одних ее значениях утверждение окажется истинным, при других — ложным. Так что это предложение нельзя отнести к высказываниям. Мы рассмотрим подобные утверждения в § 36. Точно так же переменную X содержит предложение 7, поэтому и его не следует относить к высказываниям. Но если задуматься о смысле этого предложения, то станет ясно, что оно истинно при любом значении переменной х.
Пример предложения 7 показывает, что данное Аристотелем объяснение, что такое высказывание, не является, строго говоря, определением. Более того, оно фактически перекладывает на плечи других научных дисциплин — математики, физики, химии, биологии, истории (список вы легко продолжите сами) — саму проблему получения ответа на вопрос, будет ли истинным то или иное утверждение. И вот если ответ на такой вопрос будет получен, то это утверждение будет называться высказыванием.
Впрочем, для некоторых утверждений ответ об их истинности или ложности нельзя получить никакими средствами. Вот одно из
148
таких утверждений: «Это предложение ложно». Если предположить, что само это утверждение истинно, то оно обязано быть ложным. Если же считать, что утверждение ложно, то оно обязано быть истинным. Выявление и недопущение в рассуждениях подобных внутренне противоречивых утверждений тоже одна из задач логики.
Оставляя другим наукам право отвечать на вопрос об истинности конкретного утверждения, логика интересуется, как из набора истинных утверждений можно получать новые истинные утверждения. Это означает, что логика изучает такие операции над высказываниями, в результате применения которых снова получается высказывание. При этом вовсе не требуется вникать в смысл высказываний, над которыми производятся операции. Математическая логика предлагает формализованный язык для описания этих операций, что позволяет построить формальную модель человеческих рассуждений.
С некоторыми логическими операциями вы наверняка знакомы еще по базовому курсу информатики. Это прежде всего операция конъюнкции (по-другому, операция и), дизъюнкции (по-другому, операция или) и операция отрицания (по-другому, операция не). Но есть и другие операции, они перечислены в таблице 4.1.
Таблица 4.1
Логическая операция Обозначение Смысл в обычном языке
Конъюнкция, логическое умножение &, ■, л Союзы и, а, но
Дизъюнкция, логическое сложение V, + Союз или
Отрицание, инверсия 1 Частица не
Разделительная дизъюнкция, исключающее или, сложение по модулю 2 ©, А Оборот или только..., или только...
Импликация, следование Оборот если..., то...
Равносильность, равнозначность, эквиваленция 1 J » Обороты тогда и только тогда, необходимо и достаточно
В названиях и обозначениях логических операций, приведенных в таблице 4.1, на первом месте указаны те, которые будут использоваться в нашем учебнике. В другой литературе по математической логике употребляются и другие из указанных названий и обозначений.
Во всех логических операциях, кроме операции отрицания, участвуют два аргумента. Поэтому применение, например, конъюнкции к высказываниям X и Y обычно записывают как X & Y, а при-
149
Логико-математические модели
менение импликации к тем же высказыванием как X ^ Y. Отрицание высказывания X записывают в виде X.
Значения логических операций задаются, как вы знаете, с помощью таблиц истинности. В них для всевозможных комбинаций значений аргументов записывается результат применения операции. Для всех операций одновременно эти таблицы собраны в таблице 4.2; в ней значения аргументов и результат применения операции обозначены буквами «И» (Истина) и «Л» (Ложь).
Таблица 4.2
X Y X&Y X VY X X© Y Х^ Y X^Y
и И И И Л Л И И
и Л Л И Л И Л Л
л И Л И И и И Л
л Л Л Л И л И И
Как видно из таблицы, истинность высказывания, полученного с применением дизъюнкции, имеет место, когда истинно либо одно высказывание, либо другое, либо оба одновременно. К примеру, истинность высказывания «Идет дождь или дует ветер» означает, что на улице имеет место одна из трех ситуаций: идет дождь и нет ветра; нет дождя, но дует ветер; одновременно идет дождь и дует ветер. Поэтому, записывая данную фразу средствами математической логики, естественно представить ее в виде X V Y, где X — это высказывание «Идет дождь», а Y — высказывание «Дует ветер».
А вот высказывание «Петя сидит на уроке физики или Петя сидит на уроке истории» ложно, когда оба высказывания, из которых оно составлено, истинны, — не может Петя одновременно быть и на уроке физики, и на уроке истории. Здесь по смыслу применена операция исключающего или. Поэтому, переводя эту фразу на язык математической логики, естественно воспользоваться операцией Ф и соответственно записать X@Y, где X — это высказывание «Петя сидит на уроке физики», а Y — высказывание «Петя сидит на уроке истории».
Возможно, вас удивила таблица истинности для операции следования. Многим кажется, что утверждение «Если X, то Y» истинно в том и только в том случае, когда X и Y одновременно истинны, т. е. совпадает с конъюнкцией этих высказываний. Но давайте подумаем, когда ложны эти высказывания. Легко понять, что конъюнкция X и Y ложна тогда и только тогда, когда ложно хотя бы одно из высказываний X или Y. А ложность высказывания «Если X, то Y» означает, что, хотя высказывание X истинно, высказывание Y ложно. Отсюда и вытекает то формальное определение импликации, которое приведено в таблице 4.2. В частности, высказывание «Если 2X2 = 5, то 2X2 = 4» истинно. Как, впрочем, истинно и высказывание «Если 2X2 = 5, то 2X2 = 3». Перед-
I 150
ко отмеченное свойство импликации формулируют так: из истины следует истина, а из лжи — что угодно.
Обычно с помощью логических операций стараются свести любое высказывание к таким высказываниям, в которые уже нельзя выделить другие высказывания. Такие высказывания, никакая часть которых высказыванием не является, называются простыми.
ВОПРОСЫ и ЗАДАНИЯ
О Из приведенных ниже предложений выберите высказывания и обоснуйте свой выбор:
а) Выхожу один я на дорогу.
б) Я спросил у ясеня: «Где моя любимая?»
в) Зачем вы, девушки, красивых любите?
г) Если у вас нет собаки, ее не отравит сосед.
д) Давайте восклицать, друг другом восхищаться.
е) Не пой, красавица, при мне ты песен Грузии печальной.
ж) Вот кто-то с горочки спустился.
з) Ничего на свете лучше нету, чем бродить друзьям по белу свету.
и) Умом Россию не понять.
к) Но кто-то камень положил ему в протянутую руку.
0 Для приведенных ниже высказываний укажите, какие из них истинны и какие ложны:
а) Число 3 является делителем любого числа, у которого сумма цифр равна 6.
б) Некоторые млекопитающие не живут на суше.
в) Никто не может объять необъятное.
г) Демосфен утверждал: «В одну реку нельзя войти дважды».
д) В каждом году есть месяц, в котором 13-е число приходится на пятницу.
О Приведите по два примера истинных и ложных высказываний из информатики, физики, математики, биологии, истории, политической жизни.
Q Для приведенных ниже высказываний попытайтесь указать, какие из них истинны и какие ложны:
а) Натуральных чисел бесконечно много.
б) Если диагональ выпуклого четырехугольника разбивает его на два равных треугольника, то этот четырехугольник — параллелограмм.
в) Серединный перпендикуляр к отрезку — это множество точек, равноудаленных от концов данного отрезка.
г) В десятичной записи числа л встречается 100 раз подряд цифра 9.
д) В записи числа — в виде бесконечной десятичной дроби не встречается
цифра 9. 7
е) Ксокдое натуральное число либо простое, либо произведение простых чисел.
ж) Для всех действительных значений х выполняется неравенство —г < 1-
з) Для всех действительных значений х выполняется неравенство
1 + х^ 1
1 + х
< 1.
и) Любое натуральное число, у которого сумма цифр равна 2, не делится на 7. Для всех ли высказываний вам удалось выполнить задание? Почему тем не менее можно утверждать, что все приведенные в пунктах а—з предложения являются высказываниями?
151
Логико-математические модели
0 в приведенных ниже высказываниях выделите два простых, обозначьте их буквами и запишите все высказывания с помощью этих обозначений и логических операций;
а) Петя и Коля идут гулять.
б) Петя идет гулять, а Коля гулять не идет.
в) Если Коля идет гулять, то Петя гулять не идет.
Q в приведенных ниже высказываниях выделите два простых, обозначьте их буквами и запишите все высказывания с помощью этих обозначений и логических операций:
а) число 1234 четно и делится на 3;
б) число 1234 нечетно и делится на 3;
в) число 1234 четно или не делится на 3;
г) число 1234 нечетно или не делится на 3.
Q Укажите, какую, на ваш взгляд, дизъюнкцию обычную или разделительную — надо употребить при записи следующих высказываний на языке математической логики;
а) На деревьях распустились листья или раскрылись бутоны.
б) На улице замерз ртутный градусник или от жары пересохла речка.
в) На небе светит Солнце или видна Луна.
Q Определите, какие из приведенных ниже импликаций истинны;
а) Если число 1357 нечетно, то оно делится на 3.
б) Если число 1357 четно, то оно делится на 3.
в) Если число 1357 нечетно, то оно не делится на 3.
г) Если число 1357 делится на 3, то оно нечетно.
д) Если число 1357 не делится на 3, то оно нечетно.
е) Если число 1357 не делится на 3, то оно четно.
О Составьте таблицы истинности для высказываний:
а) X;
б) X ^ (У ^ X);
в) XV У^ (X & У);
г) X & Z ^ (У V Z ^ X).
Законы алгебры высказываний
Об алгебре как разделе математики вы узнали в 7 классе. Вы привыкли к этому слову в расписании уроков, и, возможно, многие из вас не сразу ответят на вопрос, что такое алгебра. В математике алгеброй называется дисциплина, изучающая свойства операций на множествах. Школьная алгебра изучает множество действительных чисел и операции сложения, умножения, вычитания, деления, возведения в степень, которые над этими числами можно выполнять. Некоторые свойства операций вы знаете еще по начальной школе, например переместительный закон сложения: от перемены мест слагаемых сумма не меняется. Справедлив аналогичный закон и для умножения чисел.
Одно из важных изобретений человека, которое легло в основу алгебры, — это введение буквенной символики для записи
152
свойств операций. К примеру, тот же переместительный закон сложения записывается с помощью букв совсем просто: а + Ь = Ь + а. Такие равенства, которые верны при любых значениях букв, называются, как вы помните, тождествами. По мере изучения алгебры тождеств появлялось все больше и больше. Достоинством тождеств является то, что, подставляя одни тождества в другие, можно получать новые тождества. Такую процедуру называют тождественными преобразованиями.
Математическая логика, а точнее, тот раздел, о котором мы сейчас рассказываем, имеет дело с множеством высказываний. В предыдущем параграфе мы ввели несколько операций над высказываниями. Следовательно, существует алгебра высказываний — раздел математической логики, изучающий свойства операций над высказываниями. Прежде всего нас будут интересовать те свойства, которые записываются как тождества. В нашем случае буквы будут обозначать произвольные высказывания, а знак равенства будет по-прежнему выражать тот факт, что значение левой части равенства совпадает со значением правой части равенства, какие бы высказывания мы в них ни подставляли (разумеется, вместо одинаковых букв мы должны подставлять одно и то же высказывание, хотя вовсе не обязательно, чтобы разные буквы заменялись разными высказываниями). В математической логике такие тождественно равные высказывания принято называть равносильными. Сами высказывания, в которых фигурируют буквы, обозначающие произвольные высказывания и соединенные знаками логических операций, называют формулами. Буквы, входящие в такие формулы, называют логическими переменными. Формулы называют тождественно равными или равносильными, если равносильны представленные ими высказывания.
В алгебре действительных чисел доказательство тождеств подчас является довольно трудным делом, требующим определенной изобретательности. В алгебре высказываний доказательство тождества — процесс несложный, хотя и может оказаться весьма трудоемким. Причина здесь в том, что действительных чисел бесконечно много и все не перепробуешь, подставляя их вместо переменных. Что касается алгебры высказываний, то, как вы знаете, значение выражения, составленного с помощью логических операций из других высказываний, зависит только от истинности и ложности
входящих в его состав вы-Таблица 4.3 сказываний. Поэтому, составив таблицы истинности для двух таких высказываний, мы можем легко убедиться, равносильны они или нет. Убедимся, к примеру, в равносильности^ высказываний X ^ Y и X VY (табл. 4.3).
X у X X^Y XVY
и и л и И
и л л л л
л и и и и
л л и и и
153
Логико-математические модели
Всем видно, что столбцы для X и XV У совпали. Значит, можно записать: X ^ У = XV У.
Приведем список основных тождеств алгебры высказываний.
1. X & У = У & X; 2. X V У = У V X; (коммутативность, или переместительные законы)
3. (X & Y) & Z = X & (Y & Z); 4. (X V Y) V Z = X V (Y V Z); (ассоциативность, или сочетательные законы)
5. (X & У) V Z = (X V Z) & (У V Z); 6. (X V У) & Z = (X & Z) V (У & Z); (дистрибутивность, или распределительные законы)
7. X & X = X; 8. X V X = X; (идемпотентность)
9. X & Л = Л; 10. X V И = И; 11. Х&И = Х; 12. ХУЛ = Х;
13. Х& Х= Л; 14. X V Х= И; (законы исключенного третьего)
15. X & У = XV У; 16. X V У = Х & У; (законы де Моргана)
17. (X & У) V У = У; 18. (X V У) & У = У; (законы поглош,ения)
19. Т=Х; (закон двойного отрицания)
20. X ^ У = XV У;
21. X ^ У = (XV У) & (X V У) = (X & У) V (Х& У);
22. X © У = (X & У) V (Х& У).
Мы выше проверили равенство 20. Остальные равенства можно проверить тем же способом — составить таблицы истинности. Для равенств 1—б и законов де Моргана вы проведете такую проверку, выполнив задания 3 и 4.
Приведенные выше законы алгебры логики обычно используют для преобразования одних формул в другие, им равносильные. Вот пример:
154
X — Y & (X V Y) = (X & Y) V (X & Y) & (X & Y) =
= (X & Y)_& (X & Y) & (X & Y)_= (X V Y)_& (X V Y) & (^V Y) = _= (X V Y) & (X V Y)_& (X V Y) = (X V Y) & (X & (Y V Y)) =
= (X V Y) & (X & И) = (X V YJ^& X = (X_& X) V (Y & X) =
= Л V (Y & X) = Y & X.
Первое равенство в этой цепочке объясняется применением формулы 21, второе и третье равенства имеют место согласно законам де Моргана, четвертое получается применением формулы двойного отрицания, пятое равенство — это последовательное применение законов коммутативности и дистрибутивности, шестое равенство имеет место в силу формулы 14, седьмое — в силу формулы 11, восьмое — это опять применение дистрибутивного закона, девятое равенство верно в силу формулы 13 и, наконец, десятое равенство объясняется формулой 12.
Приведенные 22 тождества вовсе не являются независимыми друг от друга — можно одни из них получать, используя другие тождества этого же списка. Вот как, например, выводится закон поглощения (тождество 17) из тождеств 11, 1, 6, 10:
(X & Y) V Y = (X & Y) V (Y & И) = (X & Y) V (И & Y) =
= (XvH)&Y = n& Y = Y.
Закон ассоциативности для операции конъюнкции позволяет не писать скобки, если эта операция применяется подряд к нескольким переменным. Например, вместо (X & Y) & ((Z & U) & V) можно писать просто X&Y&Z&U&V. Именно так мы и будем делать. Аналогично будем записывать выражения с операцией V. Если же в записи высказывания встречгпотся разные операции — отрицание, конъюнкция, дизъюнкция, импликация, то договоримся, что они выполняются в указанном порядке: сначала выполняется отрицание, затем конъюнкция, а уже потом дизъюнкция. Если же порядок выполнения операций надо изменить, то применяют скобки. Поэтому выражения (X & Y) V (Z & U) aX&YvZ&U совпадают, но отличаются от X & (Y V Z) & (7. Операции и © имеют самый низкий приоритет.
Формула называется тождественно истинной или тавтологией, если она принимает значение Истина при любых значениях входящих в нее переменных. Примером простейшей тавтологии является формула X ^ X.
Из определения операции следует, что формулы и Eg равносильны тогда и только тогда, когда формула Eg является тавтологией.
Математическая логика лишь моделирует логику человеческого рассуждения. К примеру, высказывания X & Y и Y & X математическая логика признает равносильными. И действительно, высказывания «Идет дождь, и дует ветер» и «Дует ветер, и идет дождь» в смысловом содержании идентичны друг другу. Но срав-
155
Логико-математические модели
ните высказывания «Она вошла в зал, и заиграла музыка» и «Заиграла музыка, и она вошла в зал», и вы почувствуете тонкую, но вполне уловимую разницу, идущую от человеческого восприятия союза «и» как некой упорядоченности событий по времени.
^ Какие высказывания, содержащие переменные, обозначающие высказывания, называются равносильными?
0 Составьте таблицы истинности и выясните, равносильны ли следующие высказывания: _ _
а)Х^УиУ^Х; 6)X^ynX&Z^y&Z;
в) (X © У) & Z и X & Z © У & Z; г) X ^ (У ^ Z) и (X ^ У) ^ Z.
О Составив таблицы истинности, проверьте равенства 1—6, приведенные в объяснительном тексте параграфа.
Q Проверьте законы де Моргана, составив соответствующие таблицы истинности. 0 Упростите следующие формулы:
а) (XV y)&(X&Z); _
б) X&yvX&yvX&y;
в) X & (X ^ У) & (X ^ У);
г) (X (У ^ Z)) & (Z ^ (X ^ У)) & (У ^ (Z ^ X)).
Q а) Выведите тождество 18 из тождеств с меньшими номерами.
б) Покажите, что законы де Моргана выводятся друг из друга с помощью закона двойного отрицания.
Q Проверьте, что следующие формулы являются тавтологиями: а)Х^Х; б)Х-^(У^Х).
Q Выясните, какие из следующих формул являются тавтологиями: а) (X ^ X) ^ X; б) X V У ^ X; в) X & У ^ X.
Q Выразите высказывание X через высказывания А и В, если имеет место равенство (X VA) V (X VA) = В.
ф * Выясните, существует ли такая формула F, при подстановке которой в следующую формулу эта формула становится тавтологией: a)X&y^F&Z; б) F &Х V F&X &Y.
Как прст|к|йть лагическую формулу
Каким бы ни было сложное высказывание, для него всегда можно составить таблицу истинности. А если дана некоторая таблица истинности, то всегда ли можно записать сложное высказывание, у которого была бы именно такая таблица истинности? Ответ на этот вопрос положителен. Мы покажем на примере, как строить сложное высказывание по таблице истинности, а потом сформулируем общее правило. Пусть, к примеру, таблица истинности выглядит так, как таблица 4.4.
156
Выберем строки, в которых для искомого высказывания стоит значение Истина. Для каждой такой строки вместо значения Истина в столбце простого высказывания напишем само высказывание, а вместо значения Ложь напишем его отрицание. Получим таблицу 4.5.
Теперь в каждой стро-ке соединим получившиеся высказывания конъюнкцией, а полученные таким способом сложные высказывания — дизъюнкцией. У нас получится сложное высказывание
A&B&CVA&B&CVA&B&CVA&B&C.
Это высказывание можно теперь преобразовывать по указанным ранее законам.
В общем случае для того, чтобы получить высказывание по таблице истинности, надо поступать точно так же:
в оставить в таблице те строки, в которых значение искомого выражения — Истина;
в в каждой клетке этих строк записать вместо значения Истина само высказывание из заголовка столбца, а вместо значения Ложь записать его отрицание;
9 соединить конъюнкцией высказывания, стоящие в одной строке, а затем соединить дизъюнкцией получившиеся высказывания для всех отобран-
Таблица 4.4
А в с Искомое высказывание
И и и л
И л и и
И и л и
и л л л
л и и и
л л и л
л и л л
л л л и
Таблица 4.5
А В С Искомое высказывание
А В с и
А В с и
А В с и
А В с и
ных строк.
Обратите внимание, что по этому алгоритму всегда получается формула, в которой используются только операции отрицания, конъюнкции и дизъюнкции, причем так, что отрицание применяется только к переменным, конъюнкцией соединены переменные или их отрицания, причем каждая переменная в таком конъюнктивном выражении фигурирует ровно один раз, и, наконец, дизъюнкции соединяют получившиеся конъюнктивные выражения. Выражение, записанное в таком виде, называется совершенной дизъюнктивной нормальной формой (сокращенно СДНФ). В силу договоренностей о порядке выполнения операций в СДНФ скобки не требуются.
\57
Логико-математические модели
ВОПРОСЫ и ЗАДАНИЯ
О
0
О
о
Сформулируйте алгоритм построения логической формулы по таблице истинности для логического выражения.
Что такое СДНФ?
Преобразуйте в выражение, не содержащее скобок, следующие высказывания: a)(A&BVA&B)&A; б) А & В & (В V С) V С &А; в) AV В V В&А. а) Запишите через А, В и С высказывания X, Y и Z, заданные таблицей 4.6.
Таблица 4.6
б) Запишите выражения X v У, У v Z,
X V Z и преобразуйте их в равносильные выражения, не содержащие скобок.
Известно, что высказывание F, зависящее от трех высказываний А, В и С, принимает значение Истина в том и только в том случае, когда ровно одно из высказываний А, В и С имеет значение Ложь. Составьте для F логическую формулу.
а) Известно, что высказывание F, зависящее от трех высказываний А, В и С, принимает то значение для каждого данного набора значений А, В и С, которое принимает большинство из этих трех высказываний. Функцию F поэтому называют функцией голосования. Составьте для F логическую формулу.
б) Составьте логическую формулу для функции голосования от четырех переменных.
А в с X Y Z
И и и л и и
И л и и л и
И и л л л л
и л л л л л
л и и л и и
л л и и и и
л и л и л и
л л л л л л
Решение логических задач средствами математической логики
Цель изучения логики состоит в том, чтобы обеспечить средствами для доказательства логической обоснованности выводов одних утверждений из других. Для таких обоснований нередко полезным оказывается применение алгебры высказываний.
Проиллюстрируем применение алгебры высказываний на примере двух задач.
Задача 1. Кто изучал логику? На вопрос, кто из трех учащихся — Антон, Борис или Виктор — изучал логику, учитель, преподававший логику, ответил: «Если логику изучал Алтон, то изучал и Боря, но неверно, что если изучал Витя, то изучал и Боря». Кто же изучал, а кто не изучал логику?
Решение. Обозначим буквой А высказывание «Антон изучал логику», буквой В высказывание «Борис изучал логику», буквой С высказывание «Виктор изучал логику». Тогда высказывание учителя можно записать так:
158
(Л ^ Б) & (С ^ Б).
Преобразуем эту запись, освободившись от скобок:
В) & (С ^ Б) =^А У_Б) & (С & В) = ((А_& В) V (Б & В)) & С = = ((А & В) V Л) & С = А & В & С.
Поскольку утверждение зрителя мы, конечно, принимаем за истинное, истинными должны быть и утверждения А, В и С. Следовательно, утверждение А ложно, утверждение Б тоже ложно, а утверждение С истинно. Значит, логику изучал Виктор, а Антон и Борис логику не изучали.
Задача 2. Вердикт суда. Гражданин Иванов обвиняется в совершении преступления при созшастии Петрова и Сидорова. Суд присяжных в ходе слушания пришел к выводу, что следствием доказано следующее:
1) если Иванов не виновен или виновен Петров, то Сидоров виновен;
2) если Иванов не виновен, то Сидоров не виновен. Присяжным требуется принять решение, виновен ли Иванов.
Достаточно ли у них для этого оснований?
Решение. Обозначим буквой А высказывание «Иванов виновен», буквой Б высказывание «Петров виновен», буквой С высказывание «Сидоров виновен». Тогда имеющуюся у присяжных информацию можно записать следующей формулой:
((А V Б) ^ С) & (А ^ С).
Составим для нее таблицу истинности (табл. 4.7).
Анализу подлежат те строки, в которых значение составленной нами формулы равно И. Мы видим, что во всех этих слзшаях значение А равно И. Следовательно, Иванов виновен.
А вот для утверждения, что виновен Петров, оснований недостаточно. Ведь значение И наша формула может иметь и при истинном
значении Б, и при ложном. Впрочем, нет оснований и объявить Петрова невиновным.
Если для перевода условия задачи на язык математической логики приходится использовать формулы с четырьмя, пятью или еще большим числом переменных, таблица истинности может насчитывать 16, 32 и более строк. Для составления таких таблиц уже полезно применить компьютер. Вы будете это делать при выполнении лабораторной работы 18.
Таблица 4.7
А в с ((А V В) — с & (А — С)
И и и и
И л и и
И и л л
и л л и
л и и л
л л и л
л и л л
л л л л
159
Логико-математические модели
ВОПРОСЫ и ЗАДАНИЯ
^ Обозначьте буквами простые высказывания и воспользуйтесь алгеброй логики, чтобы ответить на вопрос задачи.
Если Джон не встретил этой ночью Смита, то Смит был убийцей или Джон врет. Если Смит не был убийцей, то Джон не встретил Смита этой ночью и убийство произошло после полуночи. Если убийство произошло после полуночи, то Смит был убийцей или Джон лжет. Эксперты утверждают, что убийство произошло до полуночи. Можно ли утверждать, что Смит был убийцей?
0 Сбозначьте буквами простые высказывания и воспользуйтесь алгеброй логики, чтобы ответить на вопрос задачи.
Намеченная атака удастся, если захватить противника врасплох или его позиции плохо защищены. Захватить противника врасплох можно, только если он беспечен. Сн не будет беспечен, если его позиции плохо защищены. Следует ли из этого, что атака не удастся?
О Внимание Андрея, Дениса и Михаила привлек проехавший мимо них автомобиль.
— Это английская машина марки «феррари», — сказал Андрей.
— Нет, машина итальянская, марки «понтиак», — возразил Денис.
— Это «сааб», и сделан автомобиль не в Англии, — сказал Михаил. Сказавшийся рядом знаток автомобилей сказал, что каждый из мальчиков прав только в одном из двух своих высказываний. Какой марки автомобиль и в какой стране он изготовлен?
Реляционные модели
Для многих систем искусственного интеллекта важной составной частью является информация о тех объектах, процессах и явлениях, с которыми предстоит иметь дело пользователю данной системы искусственного интеллекта. Каждый объект при этом описывается значениями некоторого набора параметров. В § 9 мы обсуждали, что такое описание удобно представлять в виде таблицы. Например, такой, как таблица 4.8.
Таких таблиц для данного набора объектов может быть несколько — в каждой из них фигурирует свой набор параметров. Более того, по мере накопления знаний об изучаемых объектах могут составляться новые таблицы — совсем необязательно новую информацию записывать в уже имеющуюся таблицу, увеличивая в ней набор столбцов. Совокупность таблиц, в которых для рассматриваемой совокупности объектов приведены значения параметров, описывающих эти объекты, называется реляционной моделью данной системы объектов. Что означает слово «реляционная» и почему эта модель так называется, мы поясним немного позже. А сейчас обсудим, как с помощью такой модели можно получать нужную информацию. Приведенный ниже пример хотя и несколько далек от науки, но ярко показывает полезность таких моделей в разных областях человеческой деятельности.
160
Таблица 4.8
Параметр Номер''\^^^ объекта Имя параметра 1 ... Имя параметра к
Объект 1 Значения параметра 1 для объекта 1 Значения параметра к для объекта 1
Объект 2 Значения параметра 1 для объекта 2 Значения параметра к для объекта 2
...
Объект ... Значения параметра 1 для объекта ... Значения параметра к для объекта ...
Представим себе деятельность междугородной телефонной компании, например, в Санкт-Петербурге. Она предоставляет своим абонентам связь с другими городами. Информацию о предоставленных услугах связи удобно представить таблицей.
Таблица 4.9
Номер Дата Город Продолжительность разговора
111-22-33 01.01.02 Москва 7
111-22-33 02.01.02 Париж 9
122-33-44 01.01.02 Женева 20
122-33-44 02.01.02 Цюрих 17
122-33-44 02.01.02 Москва 7
123-34-45 01.01.02 Париж 11
Каждый новый звонок добавляет строку в эту таблицу.
Но телефонная компания хранит и информацию о владельцах телефонов, например, в такой форме, как таблица 4.10 (адреса и фамилии взяты нами, конечно, условно).
Пусть нас интересует, с какими городами и когда разговаривал Петров. Чтобы получить ответ, нужно проделать фактически то же самое, что и в предыдущем примере:
— по заданному значению параметра Владелец в таблице 4.10 разыскиваем значение параметра Номер;
161
Логико-математические модели
Таблица 4.10
Таблица 4.11
Номер Владелец Адрес
111-22-33 Иванов Невский, 17
122-33-44 Петров Фонтанка, 4
123-34-45 Сидоров Литовский, 7
Дата Город
01.01.02 Женева
02.01.02 Цюрих
02.01.02 Москва
03.01.02 Берлин
— по найденному значению параметра Номер в таблице 4.9 разыскиваем значения параметров Дата и Город;
— результат представляем новой таблицей 4.11, где отображены разговоры Петрова.
Таким образом, чтобы получить нужную информацию, между таблицами необходимо установить связь, указав, какие параметры для них являются общими. В рассмотренном примере таким параметром является Номер.
Идея реляционной модели была предложена американским ученым Е. Ф. Коддом в начале 70-х годов XX века. Само слово «реляционная» происходит от английского relation — отношение, связь. Иными словами, суть реляционного подхода заключается в том, что информация об объектах представляется в виде отношений, т. е. связанных между собой характеристик изучаемых объектов.
Впрочем, в самой идее реляционности как раз нет ничего удивительного. Описывая окружающий мир, мы всегда не просто перечисляем его объекты, а обязательно называем отношения, которыми эти объекты связаны друг с другом. Рассмотрите для примера несколько фраз:
1. Дрозд — это птица;
2. Петр — отец Павла;
3. Васе нравится Аня;
4. Прямые а, Ь и с пересекаются в одной точке;
5. Маша взяла у Алеши сказки «Тысяча и одна ночь».
В каждой из этих фраз фиксируется то или иное отношение между объектами. Первая фраза дает пример отношения принадлежности: дрозд принадлежит множеству птиц. Вторая и третья устанавливают отношения быть отцом между Петром и Павлом и нравится между Васей и Аней. Четвертая фраза указывает на отношение между тремя объектами. Наконец, пятая фраза описывает отношение между Машей, Алешей и конкретной книгой.
Разумеется, в одном и том же отношении могут находиться самые разнообразные объекты. Например, в отношении быть отцом находятся, конечно, не только Петр и Павел, но и многие другие пары людей. В отношении кто-то у кого-то что-то взял находят-
6—Гейн, 10 ]
I 162
ся тоже не только Маша, Алеша и «Тысяча и одна ночь». Поэтому если сосредоточить внимание на самом отношении, то оказывается удобным считать, что отношение — это некое выражение с переменными:
объект X — это отец объекта у\
объект X взял у объекта у объект г\ и т. д.
Осталось сделать еще один шаг: унифицировать запись отношений. Это можно сделать, например, так:
бытъ_отцом (х, у);
взять (х. у, г); и т. д.
То, что стоит перед скобками, — имя отношения, в скобках перечислены аргументы отношения, количество аргументов отношения называют его арностью. Так что первое из записанных в стандартной форме отношений бинарное (по-русски двуместное), второе — тринарное (по-русски трехместное). Часто отношения между объектами, обозначенными буквами а, Ь, с, d и т.д., схематично записывают так: Ща, Ь, с, d,...), где через R обозначено имя рассматриваемого отношения. Впрочем, если отношение связывает только два объекта а и то нередко пишут aRb. Например, мы пишем а < Ь для чисел, а\\Ь для прямых, ае А для элемента а из множества А и т. п. Мы тоже будем так писать для уже устоявшихся обозначений отношений (равенства, неравенства, параллельности, принадлежности и т. п.).
В предложенном варианте записи отношения часть информации может оказаться утерянной. Скажем, из записи быть_отцом {х, у) уже не видно, то ли л: — отец для у, то ли наоборот. Выход простой: для каждого аргумента указать, что он означает; можно сказать, что мы каждому аргументу присваиваем имя, фактически указывающее, из какого множества будут браться объекты для данного аргумента. Например:
быть_отцом (отец: х, ребенок: у);
взять (кто_взял: х, у_кого_взял: у, что_взял: г).
Имя аргумента нередко называют атрибутом данного отношения (это согласуется с понятием атрибута, введенного в § 12).
Вместо аргументов нельзя подставлять любые объекты из тех множеств, которые обозначены атрибутами. Скажем, нельзя в отношении быть_отцом вместо х подставлять имя любого мужчины, а вместо у — имя любого ребенка. Как же тогда определять, каковы те наборы значений аргзгментов, для которых имеет место данное отношение? Иногда это настоящая детективная история, когда, например, следователь пытается выяснить, кто же без спроса взял у хозяина его бриллианты.
Отношения могут задаваться по-разному. Нередко бывает так, что для каждого аргумента множество его значений конечно. В этом случае отношение можно задать списком всех тех наборов
163
Логико-математические модели
Таблица 4.12
Мама Папа Ребенок
Ева Адам Авель
Ева Адам Каин
Таблица 4.13
Начальник Подчиненный
Иванов Петров
Иванов Сидоров
Таблица 4.14
значении аргументов, которые находятся в данном отношении. А сам такой список удобно представлять в виде таблицы, где каждая строка — это набор значений аргументов, находящихся в данном отношении, а каждый столбец — это перечень значений соответствующего атрибута. Сами атрибуты выступают при этом в роли заголовков столбцов.
В таблицах 4.12 и 4.13 представлены отношения «родство» и «служба».
Эти отношения — человеческие. Но отношения могут быть между объектами любой природы. Ведь каждая таблица может рассматриваться как некое отношение. Железнодорожное расписание задает отношения между маршрутами, станциями и т. п. Таблица умножения задает отношение между числами.
Если внимательно приглядеться, то отношение (а следовательно, и таблицу) можно обнаружить где угодно. Например, память компьютера можно трактовать как отношение с атрибутами Адрес и Содержимое. Достаточно вспомнить, что оперативная память состоит из ячеек, каждая из которых имеет адрес, задаваемый натуральным числом, а содержимое ячейки — это последовательность нулей и единиц.
И если, скажем, в 1-й ячейке записано число 1001, во 2-й — число 10101 и т. д., то память можно задать таблицей 4.14.
Наличие отношения между характеристиками разных объектов или даже одного и того же объекта свидетельствует о зависимости этих характеристик друг от друга. Наиболее жестко характеристики оказываются связанными, если по значению одной из них можно определить значения остальных, находящихся в данном отношении. Такие отношения мы будем рассматривать в § 35. Но следует понимать, что даже если нет такой жесткой зависимости между параметрами, все равно отношение, не совпадающее со всевозможными наборами значений, указывает на наличие некоторой связи между ними. Именно поэтому отношения стали важным инструментом построения и исследования самых разнообразных информационных моделей — ведь одним из компонентов информационной модели как раз является описание связей между ее параметрами.
Адрес Содерхсимое
1 1001
2 10101
6*
164
ВОПРОСЫ и ЗАДАНИЯ
(Л) Какую роль играет понятие отношения в информационном моделировании? Как можно задавать отношения?
0
0
О
О
Вы знаете, что графиком функции у = f{x) называется множество точек координатной плоскости, имеющих координаты (х; f(x)). Можно ли поэтому рассматривать график функции как способ задания некоторого отношения?
Приведите какие-либо примеры отношений, рассматриваемых:
а) в математике: б) в физике;
в) в химии; г) в биологии.
Какие из названных вами отношений удобно представлять в виде таблицы?
Пусть множество М состоит из чисел 1, 2, 3, 4, 5 и 6. На этом множестве заданы следующие отношения:
а) Riix, у): число х делится на число у,
б) R2(.x, у): числа х и у таковы, что |дг - j/| <3;
в) Rgix, у): число х + у принадлежит множеству М.
Запишите каждое из этих отношений в виде таблицы.
Даны отношения Нагрузка_учителя (фамилия:, класс:, предмет:) и Расписание (класс:, предмет:, день недели:, номер_урока:). Выберите 12—15 классов вашей школы и составьте для них таблицы, соответствующие указанным отношениям.
Функциональные отношения
Понятие функциональной зависимости — одно из величайших изобретений человеческой мысли. И хотя слово «функция» наверняка ассоциируется у вас с математикой, на самом деле с функциями человек имеет дело повсеместно. Но прежде чем привести примеры, подтверждаюш;ие это высказывание, напомним, что функцией называется сопоставление каждому элементу одного множества ровно одного элемента из другого множества. Отметим, что это «другое множество» совсем не обязано отличаться от исходного.
В математике обычно рассматриваются числовые функции, т. е. оба множества — это множества чисел. На самом деле это совсем необязательно. Вот примеры функций:
1) каждому человеку сопоставляется его фамилия (функция из множества людей в некоторое множество слов);
2) каждому человеку сопоставляется его рост (функция из множества людей в некоторое множество положительных чисел);
3) каждому городу России сопоставляется его почтовый индекс (функция из множества городов России в множество шестизначных натуральных чисел);
4) каждой точке на поверхности Земли сопоставляются ее географические координаты (функция из множества точек поверхности в некоторое множество пар, каждая компонента которой — положительное число с указанием северного или южного, восточного или западного полушарий);
165
Логико-математические модели
5) каждому набору отпечатков пяти пальцев правой руки, имеющихся в картотеке МВД, сопоставляется человек с такими отпечатками.
Пусть нам дана некоторая функция f, сопоставляющая каждому элементу х из одного множества элемент у другого множества. Поскольку у но X определяется однозначно, то обычно пишут у = f{x). Определим отношение R, объявив пару (х; у) находящейся в отношении R в том и только в том случае, если у = f(x).
Тем самым каждая функция может быть описана как некоторое отношение, и даже не одно. Обратное, однако, неверно — ведь не у каждого отношения можно так выбрать атрибуты, чтобы значения одного из них однозначно определяли значения другого. Рассмотрим отношение «л: является родным братом для у». Конечно, если в семье только два брата, то для каждого х значение у определено однозначно. Но есть семьи с большим числом братьев.
Говоря о представлении функции в виде отношения, мы имели в виду лишь бинарные отношения. Однако для функции значения аргумента, как и значения функции, вовсе не обязаны состоять из значений одного атрибута. Скажем, для функции, сопоставляющей набору отпечатков пяти пгшьцев имя, отчество и фамилию их владельца, аргумент содержит пять атрибутов, а значение функции — три. Записывая эту функцию как отношение, мы получим отношение с восемью атрибутами, разделенными на две группы: первая задает аргумент функции, вторая — ее значение.
Будем называть отношение функциональным, если его атрибуты можно разбить на две группы так, чтобы значения одной группы атрибутов однозначно определяли значения другой группы. Иными словами, первая группа атрибутов может рассматриваться как аргумент некоторой функции, а вторая группа определяет значение этой функции. Вовсе не обязательно, чтобы атрибуты одной группы были соседними в записи отношения. Если отношение функционально, то набор атрибутов, относящихся к аргументу функции, задаваемой этим отношением, будем называть ключевым.
Рассмотрим для примера отношение, заданное таблицей 4.15.
Атрибут Адрес не может быть ключевым, поскольку в одном доме оказгиюсь несколько телефонов. Если среди владельцев имеются однофамильцы, то ат-
рибут Владелец также не может быть ключевым. А вот Номер телефона — это ключевой атрибут. Скорее всего, ключевым будет и набор из двух атрибутов Владелец— Адрес: слишком мала вероятность проживания в доме однофамильцев или владельца двух телефонных номеров сразу. Для отношения, пред-
Таблица 4.15
Номер Владелец Адрес
111-22-33 Иванов Невский, 17
122-33-44 Петров Фонтанка, 4
123-34-45 Сидоров Лиговский, 7
123-35-47 Алексеев Лиговский, 7
166
ставленного таблицей, легко сформулировать критерий того, что данный набор атрибутов является ключевым. А именно
|п| набор атрибутов ключевой, если в таблице нет двух строк иШ с одинаковым набором значений этих атрибутов.
ВОПРОСЫ и ЗАДАНИЯ
О О
0
Какое отношение называют функциональным? Приведите примеры функциональных отношений.
В § 34 в качестве примера рассматривалось отношение быть_ртцом (отец: х, ребенок: у). Является ли это отношение функциональным? Если да, то какой атрибут служит аргументом, а какой — значением функции?
Рассмотрим отношение музыкальное_произведение (название: х, автор: у, характер произведения: г). Вот примеры значений аргументов, для которых отношение имеет место:
музыкальное_произведение (название: Лебединое озеро, автор: П. И. Чайковский, характер произведения: балет);
музыкальное_произведение (название: Пиковая дама, автор: П. И. Чайков-
ский, характер произведения: опера); Таблица 4.16 музыкальное_произведение (назва-
ние: Кармен, автор: Бизе, характер произведения: опера); музыкальное_произведение (название: симфония № 8, автор: Л. ван Бетховен, характер произведения: симфония).
Является ли это отношение функциональным? Если да, то какой набор атрибутов можно рассматривать как ключевой?
Q Рассмотрим на множестве натуральных чисел отношение сумма (слагаемое 1: X, слагаемое 2: у, результат: г). Это отношение имеет место для чисел X, у и г в том и только в том случае, когда г = х + у. Является ли это отношение функциональным? Если да, то какой набор атрибутов можно рассматривать как ключевой?
© В таблице 4.16 для элементов четвертого периода указано строение электронных слоев.
а) Первый атрибут — порядковый номер элемента — является ключевым. Какие еще ключевые наборы атрибутов имеет эта таблица?
б) Какие химические свойства определяют наборы ключевых атрибутов, выделенные вами в задании а?
Порядковый номер элемента Электронный слой
К L М N
19 2 8 8 1
20 2 8 8 2
21 2 8 9 2
22 2 8 10 2
23 2 8 11 2
24 2 8 13 1
25 2 8 13 2
26 2 8 14 2
27 2 8 15 2
28 2 8 16 2
29 2 8 18 1
30 2 8 18 2
31 2 8 18 3
32 2 8 18 4
33 2 8 18 5
34 2 8 18 6
35 2 8 18 7
36 2 8 18 8
167
Логико-математические модели
003;
Логические функции и логические выражения
Логической функцией или, по-другому, предикатом на множестве М называют такую функцию от нескольких аргументов, которая при любом наборе значений этих аргументов из множества М принимает только одно из двух значений. Обычно одно из этих значений называют Истина, другое — Ложь.
В языках программирования часто используются английские слова того же смысла True и False (реже Да и Нет или 1 и 0). Нередко предикат называют еще высказывательной формой, поскольку после подстановки вместо переменных элементов множества получается некое утверждение об этом наборе элементов, которое является либо истинным, либо ложным. Например, предикат «сумма X W. у равна 2» от трех аргументов х, у w. г, рассматриваемый на множестве натуральных чисел, принимает значение Истина при л: = 3, 1/ = 4, 2 = 7и значение Ложь при х = 2, у = 2, г = 5. По аналогии с общим обозначением в математике функции как f(x^, Х2, ..., в качестве общего обозначения предиката мы будем использовать запись P(Xi, Х2, х„). Впрочем, вместо Р можно ис-
пользовать любую букву латинского алфавита.
В приведенном примере переменные х, у и z свободны в том смысле, что могут принимать любые значения из множества натуральных чисел. Поэтому данная логическая функция имеет три аргумента. Но не всегда число аргументов логической функции совпадает с числом фигурирующих в ее описании переменных. Рассмотрим, такой предикат: «существует х, для которого сумма х и у равна 2». Хотя в описании фигурируют три переменные х, у и г, подставлять числа можно только вместо двух из них — у а г. Так что здесь только два аргумента: у и г. В таблице 4.17 приведены значения данной логической функции для некоторых наборов значений аргументов у и г (этот предикат мы рассматриваем на множестве натуральных чисел).
Переменная х в такой функции называется связанной. При этом говорят, что переменная х связана квантором существования. Для него есть специальное обозначение: 3. Происхождение этого знака простое: в английском слове «Exist» — существовать — взята пер-, вая буква и симметрично отражена относительно вертикальной оси. С помощью этого символа рассматриваемый нами предикат записывается так: Зх (х + у = г).
Таблица 4.17
У г Значение функции Комментарий
1 2 Истина Подходит X = 1
2 2 Ложь Не существует подходящего х
3 5 Истина Подходит X = 2
5 3 Ложь Не существует подходящего х
168
X 2 Значение функции Комментарий
1 1 Истина При любом у верно 1 + г/ > 1
1 2 Ложь Не подходит У = 1
3 5 Ложь Не подходит, например, У = 2
5 3 Истина При любом у верно 5 + у> 3
Таблица 4.18 Впрочем, переменная может
быть связанной и по-другому. Рассмотрим, для примера, на множестве натуральных чисел предикат «для любого у выполнено неравенство х + у > z^. Здесь связанной переменной является у. Примеры значений этого предиката приведены в таблице 4.18.
В этом случае говорят, что переменная связана квантором всеобщности, который обозначают символом V. Его происхождение ангиюгично: от слова «АП» (все) взята первая буква и симметрично отражена относительно горизонтальной оси. С помощью этого квантора данный предикат запишется так: \/у {х + у > г).
В предикате могут оказаться связанными не одна, а несколько переменных. Например, можно рассматривать предикат Vy Эл: (л: -Ь + у = г) — для любого у существует х, такой, что выполняется равенство X + у= Z. Или другой предикат: ЗхУу {х + у = z) — существует X, такой, что для любого у выполняется равенство х + у = z. Каждый из них является логической функцией от одного аргумента Z, но это разные функции. Например, на множестве целых чисел первая из этих функций при любом значении аргумента z принимает значение Истина, в то время как вторая функция на том же множестве при любом значении аргумента z принимает значение Ложь. Как видите, порядок, в котором употреблены кванторы, имеет принципиальное значение.
Если в предикате все переменные оказались связанными, то такой предикат является высказыванием. Например, предикат \/z \/у Зх{х + у = z) — это высказывание, утверждающее, что для любых чисел Z и у существует их разность (она обозначена переменной л:). Это высказывание истинно на множестве целых чисел, но ложно на множестве натуральных чисел. Поэтому, обсуждая свойства того или иного предиката, надо всегда указывать множество, на котором он рассматривается. Впрочем, и для числовых функций, которые вы уже много лет изучаете на уроках математики, самое первое, о чем идет речь, — это их область определения.
Над логическими функциями можно выполнять все те же логические операции, которые рассматривгшись нами для высказываний в §30. Чтобы вычислить значение такой «составной» функции, достаточно знать логические значения функций, из которых она составлена. Например, логическая функция Р(х^, Х2, ..., х^) принимает значение Истина тогда и только тогда, когда логическая функция -Р(л:1, Х2, ..., х^) принимает значение Ложь.
169
Логико-математические модели
При словесном описании логической функции построение отрицания к какому-либо утверждению можно выполнить добавлением словосочетания «Неверно, что...», после чего следует исходное утверждение. Например, отрицание высказывания «Я пошел в кино» можно выразить так; «Неверно, что я пошел в кино». Правда, таким образом свою мысль выражают крайне редко. Обычно говорят: «Я не пошел в кино». Но заметьте, что ни одна из фраз «Не я пошел в кино» и «Я пошел не в кино» не является отрицанием исходного высказывания.
А теперь рассмотрим, как строится отрицание высказывания, полученного связыванием переменной при помощи квантора. Вот пример высказывания: «Все ученики нашего класса имеют дома компьютер». Его отрицанием является высказывание «Неверно, что все ученики нашего класса имеют дома компьютер». Но каждому ясно, что это высказывание равносильно такому: «Существует ученик нашего класса, у которого дома нет компьютера». Как видите, при построении отрицания квантор всеобщности преобразуется в квантор существования. Более точно, если через Р(х) обозначить предикат «ученик х имеет дома компьютер», то исходное высказывание запишется так: Vx (Р(х)). А его отрицание запишется как 3jc (Р(л:)). Аналогично можно объяснить, почему при построении отрицания квантор существования заменяется квантором всеобщности.
Итак, для логических функций, имеющих вид
Ql^^l ^2^2 ••• (^(^1’ ^2’ У2’
СИМВОЛЫ V ИЛИ 3, JCj, Х2,
связанные
где Qi, Q2, ..., Qk переменные, у^, i/g, ..., у„ — свободные переменные предиката Р, справедливо следующее правило построения отрицания. Чтобы получить отрицание логической функции, надо каждый квантор всеобщности заменить квантором существования и наоборот, а предикат Р заменить его отрицанием.
ВОПРОСЫ и ЗАДАНИЯ
Какую функцию называют логической? Приведите примеры логических функций.
О
0
О
а) Для предиката «существует х, для которого сумма х \л у равна г», рассматриваемого на множестве натуральных чисел, назовите еще одну пару значений аргументов, для которых этот предикат истинен, и одну пару, для которой он ложен.
б) Для того же предиката, рассматриваемого на множестве слов русского языка (сложение здесь понимается как операция конкатенации), определите значение этого предиката, если у = Ель, г = Газель; у = Гель, г = Газель; у = Газель, г = Газель.
Для каждого из предикатов, приведенных в пунктах а—в, укажите, сколько аргументов он имеет, и назовите, какие его переменные свободны, а какие связаны.
а) Существует только один металл х, который в ряду активности располагается между элементами у \л г.
170
б) Нет такого животного х, которое в ряду эволюции располагалось бы между животными у и г.
в) Для каждого химического элемента х существует химический элемент у, с которым X образует соединение.
О Рассмотрите предикаты, заданные на множестве натуральных чисел:
а) д: — нечетное число, и для любого нечетного числа у выполнено неравенство х<у;
б) X — простое число, и для любого простого числа у выполнено неравенство х<у.
Для каждого из этих предикатов укажите все те значения аргумента х, для которых данный предикат истинен.
0 Рассмотрим предикат Р(х, у): Фигура х вписана в фигуру у.
а) Пусть X пробегает множество всех треугольников, расположенных на некоторой плоскости, а у — множество всех окружностей на той же плоскости. Каждое из высказываний
Va: Vy (Р(х, у)); \/х Зу (Р(х, у));
Эх \/у (Р(х, у)); Эх Зу (Р(х, у))
запишите предложением русского языка. Определите, какое из них истинно, а какое ложно.
б) Выполните то же задание, что и в пункте а, если х пробегает множество всех окружностей, расположенных на некоторой плоскости, а у — множество всех треугольников той же плоскости.
Q Рассмотрим предикат Р{х, у): Фигура х вписана в фигуру у.
а) Пусть X пробегает множество всех выпуклых четырехугольников, а у — множество всех окружностей. Укажите, для каких из четырех вариантов квантор-ных приставок \/х \/у, \/х Зу, Зх \/у, Зх Зу после связывания ими переменных в предикате Р(х, у) получается истинное высказывание.
б) Выполните то же задание, что и в пункте а, если х пробегает множество всех окружностей, а у — множество всех выпуклых четырехугольников.
^ В объяснительном тексте параграфа было показано, что логические функции Vx Зу (Р(х, у, г)) и Зу \/х (Р(х, у, г)), вообще говоря, различны.
а) Различны ли функции \/х \/у (Р(х, у, г)) и Vi/ \/х (Р(х, у, г)), где Р(х, у, г) — произвольный предикат от трех переменных? А функции Зх Зу (Р(х, у, г)) и ЗуЗх(Р(х, у, г))?
б) * Известно, что высказывание Зу \/х (Р(х, у)) истинно. Можно ли утверждать, что высказывание \/х Зу (Р(х, у)) тоже истинно?
{3 На множестве натуральных чисел заданы следующие предикаты: iy(x) — число X нечетно; Щх, у) — число х делится на число у. Используя указанные предикаты, запишите подходящей формулой каждое из следую1цих утверждений:
а) число X четно;
б) число X — нечетный делитель числа у,
в) числа X \л у равны;
г) * число X равно 1;
д) * число г — наибольший общий делитель чисел х и у;
е) * числа х \л у взаимно просты (т. е. их наибольший об1ций делитель равен 1);
ж) * число X простое;
з) * число X равно 2;
и) * если X — простое число, то для любого числа у либо х v\ у взаимно просты, либо у делится на х;
к) * любое число, большее 1, имеет простой делитель.
171
Логико-математические модели
0 На множестве натуральных чисел задан предикат U(x, у, г)\ Число г равно произведению чисел X v\ у. Используя этот предикат, запишите подходящей формулой каждое из следующих утверждений:
а) число X — делитель числа у\
б) числа X \л у равны;
в) число X равно 1;
г) * число X простое;
д) * число X является степенью простого числа.
ф Ниже приведено несколько пар высказываний. Определите, в каких парах одно высказывание является отрицанием другого.
а) «На улице светит солнце» и «На улице пасмурно».
б) «На улице светит солнце» и «На улице идет дождь».
в) «Число 3 простое» и «Число 3 составное».
г) «Число 1 простое» и «Число 1 составное».
д) «В классе есть ученик, который решил все задачи контрольной работы» и «В классе каждый ученик не решил хотя бы одну задачу из контрольной работы».
е) «В классе есть ученик, который решил все задачи контрольной работы» и «В контрольной работе есть задание, которое не решили все ученики класса».
ж) «Все числа иррациональны» и «Существует иррациональное число».
з) «Для любого числа х существует число г, для которогб произведение хг рационально» и «Существует число х, для которого произведение хг иррационально для любого числа г».
и) * «Все нечетные числа простые» и «Существует нечетное простое число», ф Ниже приведено несколько пар логических функций. Определите, в каких парах
одна логическая функция является отрицанием другой функции из той же пары.
а) «Число X положительно» и «Число х отрицательно».
б) «Он мой друг» и «Он мой враг».
в) «Ученик решил все задания контрольной работы» и «Есть задание контрольной работы, которое ученик не решил».
ф а) На множестве действительных чисел задан предикат
Vx (х^у - л:(1/ - 3) -I- 1 > О).
Укажите все значения переменной у, для которых этот предикат истинен, б)* Выполните то же задание, что и в пункте а, если предикат задан на множестве положительных чисел.
Логика СУБД Access
Логические функции, рассматривавшиеся нами в качестве примеров в предыдущем параграфе, были довольно простыми и легко записывались на естественном языке. Но компьютер, как вы знаете, понимает только формальный язык. И любой формальный исполнитель, каким, в частности, является СУБД Access, тоже понимает только формальный язык. Вот об этом языке и пойдет у нас речь. Основу его составляют логические функции, о которых мы рассказывали в предыдущем параграфе.
А теперь вспомните ваш опыт обращения с числовыми функциями на уроках математики. Изобретение буквенных обозначений переменных и языка формул для записи связей между ними стало
172
революционным шагом. Вот и для логических функций естественно ввести некоторый язык формул, позволяющий относительно просто и достаточно стандартно записывать их. Строятся эти формулы, как и формулы в алгебре, из некоторых «кирпичиков», соединенных знаками операций. Для алгебраических выражений «кирпичиками» выступают числа и переменные, в качестве операций выступают арифметические операции — сложение, умножение, вычитание и деление, а также некоторые стандартные функции (показательная, логарифмическая, тригонометрические и т. п.).
Что же выступает в роли «кирпичиков» логического выражения? Это некоторые стандартные предикаты, определяющие, истинно или ложно утверждение о том, что при заданных значениях переменных они находятся в заданном отношении. В качестве таких отношений обычно фигурируют отношения сравнения = (равно), о (не равно), < (меньше), > (больше) и т. п. Более точно можно сказать так: атомарным называется отношение вида AQ В, где А и В — однотипные выражения от переменных, а 6 — один из символов отношения сравнения. Однотипность выражений означает, что после вычисления их значений для любого допустимого набора переменных мы получаем значения одного типа, например числового, или символьного, или еще какого-либо.
Теперь можно формально определить логические выражения. Мы будем обозначать их большими латинскими буквами.
1. Всякое атомарное отношение есть логическое выражение.
2. Истина и Ложь — логические выражения.
3. Если А — логическое выражение, то выражение не (А) тоже логическое выражение.
4. Если А и В — логические выражения, то выражения А и В, А или В VI не В тоже являются логическими.
Вот примеры логических выражений:
не (л: = СЛОН),
{х = 2 + 2) и у > 2*{х + 3).
Правила 1—4 определяют формальную грамматику языка логических выражений. Заметим, что в определении логического выражения мы использовали не все логические операции, но это не сказывается на возможностях данного языка, поскольку, как вы знаете, операции «следование», «равносильность», «исключающее или» выражаются через указанные три операции. Но дело тут не в экономии используемых операций, а в том, что СУБД Access воспринимает, как мы чуть позже убедимся, язык логических выражений с операциями отрицания, дизъюнкции и конъюнкции.
Логические выражения нужны для того, чтобы компьютеру на понятном для него языке сформулировать, с какой логической функцией ему надлежит иметь дело.
Пусть теперь на множестве М нам дано некоторое отношение с атрибутами х^, Xg, ..., Рассмотрим логическую функцию от тех же переменных (не обязательно всех). Возьмем произвольный
173
Логико-математические модели
набор значений атрибутов, который принадлежит данному отношению. Подставим эти значения в логическую функцию вместо соответствующих переменных. Тогда логическая функция примет определенное значение. Выберем из всех наборов значений атрибутов, принадлежащих данному отношению, все те, для которых данная функция принимает значение Истина. Такую операцию над отношением называют фильтрацией, а саму логическую функцию называют фильтром. Если отношение задано таблицей, то фильтрация приводит к отбору тех строк, в которых стоят значения атрибутов, дающих истинное значение заданной логической функции.
Как вы помните, таблицы — это основной способ представления информации в реляционных базах данных. Знакомясь с СУБД Access, вы рассматривали и фильтрацию, т. е. отбор строк таблицы, удовлетворяющих условиям записанным на бланк QBE (эскиз бланка представлен таблицей КП. 5). Теперь, мы надеемся, вам понятно, что на бланк QBE вы специальным образом записывали некоторый предикат (без кванторов!), в котором имена атрибутов — это имена переменных, с помощью союза и в нем соединены атомарные отношения, стоящие в одной строке, а получившиеся таким образом сложные выражения соединяются союзом или. Итак, на бланке QBE записывается не что иное, как логическое выражение, представлено оно в дизъюнктивной нормальной форме. Чтобы это увидеть, достаточно «списать» его с бланка QBE по указанным правилам. Напомним (см. § 32), что любое сложное логическое выражение может быть записано через простые с помощью дизъюнктивной нормальной формы. Так что фильтр в СУБД Access — это фактически бескванторное логическое выражение, записанное в дизъюнктивной нормальной форме.
Наверное, у вас возник вопрос: почему в языке логических выражений СУБД Access отсутствуют кванторы? Ответ такой: в любой базе данных, созданной с помощью СУБД, присутствует лишь конечное число значений для любого атрибута. Представим, что у некоторого атрибута х множество всех его значений — это а^, U2, ..., а„. Легко понять, что тогда для любого предиката
выражение
Р(х, Уп)
\/х{Р{х, У1, У2, ..., yj)
и Р{а„, У1,У2,..., Ук),
равносильно конъюнкции
^(«1. У1У У2У "У Ук) “ ^(«2’ У\у У2У "У Ук) “ а выражение
Зх{Р{х, У1, У2, ..., yj) равносильно дизъюнкции
^(«1. У1У У2У •••> Ук) “ЛИ. ... или Р{а„, У1, У2, ..., у*,). Так что в кванторах нужды нет.
174
Обратимся к нашему «телефонному» примеру. В базе данных телефонной станции имеется таблица, в которой указано, кто именно является абонентом данного телефонного номера (см. табл. 4.15). Она обновляется нечасто. Кроме того, имеется таблица совершенных телефонных звонков (см. табл. 4.9), которая посстоянно обновляется. Имеются еще таблицы, содержащие сведения об оплате телефонных разговоров их владельцами, о выставлении счетов и т. д. Иметь все эти сведения в одной таблице не только неудобно, но и неэффективно, поскольку ее объем будет огромен. Но вот наступает момент, когда надо выписать абонентам счета за текущий месяц. Теперь надо по таблице вызовов через номер телефона определить абонента и записать в счет все относящиеся к нему вызовы. На языке отношений это можно выразить так.
Пусть 5(л:, у, г) — отношение, показывающее, что по телефону с номером X был разговор с пунктом у продолжительностью z минут, а А{х, и) — отношение, показывающее, что v является владельцем телефона с номером х. Нам же нужно отношение M(v, у, г), показывающее, что абонент v разговаривал с пунктом у в течение Z минут. Отношение определяется так: имеет место отношение М(у, у, 2), если существует х, для которого 5(л:, у, z) и А{х, и). В этом случае говорят, что М(о, у, z) является произведением отношений 5(л:, у, 2) и А(х, V).
Как видите, появился квантор существования. Поскольку Access — многотабличная СУБД, то объединения таблиц приходится выполнять операцией умножения отношений. Правда, в документации к этой СУБД такая операция называется соединением таблиц. Поскольку Access имеет графический интерфейс, то установление соединения таблиц по нужным атрибутам производится с помощью мышки «протягиванием веревочки» между этими атрибутами. На рисунке 4.1 показана такая связь между атрибутами а1 и 61 двух таблиц (одна названа нами А, другая — Б).
Если об атрибутах ничего не сказано, то связь выглядит именно так. Если же какой-либо атрибут из А объявлен ключом (см. §35), то около него, над «веревочкой» появляется цифра 1, а на другом конце появится значок °о. Это означает, что каждая строка таблицы А может оказаться связанной с несколькими строками таблицы Б, но каждая строка таблицы Б связана ровно с одной строкой таблицы А. Такую связь таблиц называют связью по типу один-ко-многим. Если же оба атрибута объявлены ключевыми, то на обоих концах появляются 1, которые означают, что в обеих таблицах каждая строка связана ровно с одной
строкой из другой таблицы. Такую связь называют связью по типу один-к-одному. Чтобы атрибут можно было объявить ключом, нужно, чтобы он удовлетво-Рис. 4.1 Связь между атрибутами рял требованиям, сформулиро-
(полями) а1 и 61 ванным в § 35.
175
Логико-математические модели
ВОПРОСЫ и ЗАДАНИЯ
Объясните, почему в языке логических выражений, на котором в СУБД Access записываются запросы на фильтрацию, не нужны кванторы.
0 Для таблицы 4.16 (см. задание 5 к §35) укажите результат фильтрации относительно логической функции: «М > 12 и 2 < ЛГ < 4». По периодической системе Д. И. Менделеева определите, какие химические элементы будут отобраны этой фильтрацией.
0 Даны отношения Нагрузка_учитель (фамилия:, класс_и_предмет:) и Расписание (класс_и_предмет:, день_недели:, номер_урока:). Какую информацию несет произведение этих отношений?
Q Пусть множество М состоит из чисел 1, 2, 3, 4, 5 и 6. На этом множестве заданы следующие отношения:
а) Ri{x, у): число х делится на число у,
б) ДгСУ’ числа у и г таковы, что \у - г\ <3.
Найдите произведение отношений и R2. (Совет. Воспользуйтесь таблицами, составленными вами при выполнении задания 5 из §34.)
0 Для каких целей используется соединение таблиц в СУБД Access?
Q Каким свойством обладает связь атрибутов разных таблиц, если оба атрибута являются ключевыми?
Базы знаний и экспертные системы
Приходилось ли вам советоваться, прежде чем принять то или иное решение? Наверняка да, и, скорее всего, не однажды. Все мы постоянно советуемся с друзьями и родственниками по самым разным вопросам.
Но есть и профессиональные советчики, к которым мы обращаемся, потому что они являются специалистами по интересующему нас вопросу. Если человек заболел, он обращается к врачу, чтобы тот посоветовал ему, какие лекарства принимать и какие процедуры делать. Если возникают правовые проблемы, идут к юристу. Если возникли проблемы в семье, то обращаются к психологу, специализирующемуся на проблемах семейных отношений, и т. д. Таких людей мы будем называть консультантами или экспертами.
Но верно ли, что экспертное заключение может дать только человек в личном общении? Конечно, нет. Существуют справочники и энциклопедии по различным областям знаний, в которых тоже содержатся советы по многим волнующим человека вопросам. Более того, вряд ли всегда можно найти такого же многознающего человека, как, например, какая-нибудь энциклопедия или хорошее руководство. Отличие состоит в том, что эксперту вы задали свой вопрос (или, наоборот, он вам задал какие-то вопросы), после чего эксперт подумал и дал совет. А справочник на помощь не придет — сам ищи, где имеется нужный для тебя совет. Совместить, казалось бы, трудносовместимое — энциклопедичность знаний и актив-
176
ную реакцию на потребность пользователя — позволяет одна из разновидностей систем искусственного интеллекта, а именно, так называемые экспертные системы.
В современном мире информационных технологий экспертные системы находят все большее применение. Конструкторам они помогают подобрать материалы, из которых будут изготавливаться те или иные изделия: ведь здесь надо учесть такие факторы, как прочность, легкость, сочетаемость с другими материалами, простота обработки. Ни один материал не обладает всеми этими свойствами одновременно. Выбрать оптимальный вариант помогают материал оведческие экспертные системы.
Экспертные системы другого вида помогают врачу осуществлять диагностику. Впрочем, «лечить» бывает надо не только людей или животных, но и сложные технические системы.
Эксперту, чтобы дать обоснованный совет, нужны знания. Поэтому каждая экспертная система содержит в качестве ядра базу знаний той предметной области, для работы в которой предназначается экспертная система. Вы уже знакомы с понятием базы данных. Теперь же речь идет о базах знаний. Уже из сопоставления названий каждый, наверное, ощущает, что в этих понятиях должно быть что-то родственное. Чтобы в этом разобраться, вспомним (см. § 11), что знания — это информация, хранимая в некотором обобщенном виде и готовая к применению в схожих ситуациях. Можно сказать, что данные — это всегда информация о конкретных объектах, в то время как знания, как правило, выражают общие зависимости между разными признаками объектов. Конечно, данные тоже представляют собой некоторое знание, но это его весьма частный случай.
Отметим, что различие между знаниями и данными проявляется и в языковом аспекте. При записи знаний на формальном языке (а это необходимо, чтобы для работы со знаниями можно было применять компьютер) мы получаем утверждения в форме предикатов с переменными, хотя не исключается, что все переменные в этом предикате связанные. Например, предикат «для любого натурального числа X существует простое число у, такое, что у > выражает знание, являясь довольно непростой теоремой, хотя известной уже Евклиду. Данные же всегда записываются выражением, не содержащим переменных, например число 101 простое и больше числа 100.
Итак, основу базы знаний составляют описания моделей, выполненные посредством некоторого формального языка, понятного компьютеру. Между этими моделями устанавливаются логические связи, превращающие совокупность моделей, содержащихся в базе знаний, в систему. Как база данных каждая база знаний оснащена системой управления (сокращенно СУБЗ), которая позволяет заполнять и изменять базу знаний (как говорят, редактировать базу), а также отвечать на запросы, направляемые базе знаний.
Другим компонентом экспертной системы является блок, называемый обычно решателем. Он моделирует ход рассуждений экс-
177
Логико-математические модели
перта на основании знаний, имеющихся в базе знаний. По-другому решатель называют блоком логического вывода.
Еще одним компонентом экспертной системы является блок, позволяющий пользователю получить ответы на вопросы: «Как была получена данная рекомендация?» и «Почему экспертная система приняла такое решение?» Отвечая на вопрос «Как...», экспертная система предъявляет пользователю шаг за шагом весь процесс получения решения с указанием использованных фрагментов базы знаний. При ответе на вопрос «Почему...» система демонстрирует последнее применение правила вывода, иными словами, последний шаг в процессе принятия решения.
Наконец, для каждой экспертной системы предусмотрен интерфейс, позволяющий пользователю на некотором языке записывать свой запрос к системе, а самой системе давать ответ на этот запрос.
Существуют специальные готовые оболочки экспертных систем, которые позволяют посредством редактора базы знаний заполнить ядро экспертной системы и превратить схемы правил вывода в конкретные правила. Занимается этим специалист, которого обычно называют инженером по знаниям или когнитологом. Можно сказать, что он выступает промежуточным звеном между живыми экспертами и создаваемой базой знаний.
ВОПРОСЫ и ЗАДАНИЯ
ф Что такое экспертная система? 0
0
О ©
Какие основные блоки включает в себя экспертная система? Каково назначение каждого из них?
Что составляет основу базы знаний, входящей в состав любой экспертной системы? Для чего служит СУБЗ?
В чем проявляются различия между понятиями «данные» и «знания»?
В объяснительном тексте приведены примеры применения экспертных систем в конструкторской и управленческой деятельности, в медицинской практике. Возможно ли применение экспертных систем в научной деятельности? Приведите аргументы в пользу предлагаемого вами ответа.
Реляционная модель экспертной системы
Обычный режим работы любой экспертной системы — диалог с пользователем. Пользователь сообщает в той или иной форме общую постановку задачи, т. е. что он хочет получить в качестве результата. В ответ экспертная система попросит его ввести какие-то исходные сведения об объектах, фигурирующих в задаче. Если «по размышлении» она придет к выводу, что для ответа этих данных недостаточно, то задаст соответствующий вопрос пользователю. Получив ответ, она снова поразмышляет и так шаг за шагом будет продвигаться к нужному ответу. В какой-то момент может оказать-
178
ся так, что у пользователя нет ответа на вопрос системы. Тогда он вправе попросить предъявить уже достигнутый уровень решения и, более того, весь ход рассуждений, который привел к создавшемуся положению. Впрочем, пользователь и в случае полного решения задачи может получить исчерпывающую информацию о том, как этот ответ был получен. В этом смысле экспертная система может выступать как средство обучения, демонстрируя пользователю то, как нужно рассуждать, чтобы принять требуемое решение.
Экспертных систем на сегодняшний день создано много. В их основу положены разные принципы организации баз данных и правил вывода. Существуют специальные языки программирования, предназначенные для разработки систем искусственного интеллекта, и в частности экспертных систем. Одним из таких языков является Пролог. О нем мы расскажем чуть позже. И вы сможете на этом языке создать несложную экспертную систему. Конечно, если транслятор с этого языка имеется на вашем компьютере. А если его нет, то, чтобы рассказ об экспертных системах не остался сказкой о чем-то, что никак нельзя «потрогать руками» обыкновенному школьнику, мы предлагаем создать небольшую и простую экспертную систему средствами, которые на вашем компьютере наверняка есть. Тогда вы сможете увидеть реализацию тех подходов, которые используются в больших экспертных системах.
Для построения модели экспертной системы прежде всего объявим, что мы будем строить эту модель на основе реляционного подхода. Во-первых, потому, что реляционный подход используется сегодня во многих реальных экспертных системах, во-вторых, мы надеемся, что вы уже хорошо его усвоили, а в-третьих, у нас в распоряжении имеется компьютерная технология реализации реляционного подхода — это Access.
Мы в § 38 говорили, что разным классам задач соответствуют разные типы экспертных систем. Система, которую намерены построить мы, относится к классу идентификационных (или диагностических) систем. Системы этого класса решают задачу определения, т. е. идентификации, объекта по его признакам. Такие системы составляют значительную часть существующих экспертных систем. А в качестве примера, как правило, рассматривается задача определения вида животного или растения. Вот и мы будем проектировать такую ботаническую экспертную систему.
Начнем с того, что сформулируем знания по указанному вопросу. Вот эти формулировки.
Если класс голосемянные и форма листа чешуеобразная, то семейство кипарисовые.
Если класс голосемянные и форма листа иглоподобная и конфигурация хаотическая, то семейство сосновые.
Если класс голосемянные и форма листа иглоподобная и конфигурация — 2 ровных ряда и серебристая полоса, то семейство сосновые.
179
Логико-математические модели
Если класс голосемянные и форма листа иглоподобная и конфигурация — 2 ровных ряда и серебристой полосы нет, то семейство болотный кипарис.
Если тип деревья и форма листа широкая и плоская, то класс покрытосемянные.
Если тип деревья и неверно, что форма листа широкая и плоская, то класс голосемянные.
Если стебель зеленый, то тип травянистые.
Если стебель древесный и положение стелющееся, то тип лианы.
Если стебель древесный и положение прямостоящее и один основной ствол, то тип деревья.
Если стебель древесный и неверно, что положение прямостоящее и один основной ствол, то тип кустарниковые.
Мы специально выбрали систему, в которой потребуется не так уж много знаний. Но попробуйте, глядя только в выписанные формулировки, ответить на вопрос, какому семейству принадлежит растение, если в руках вы держите один лист, имеющий форму иголки. Скорее всего, за полминуты это не получится (если вы, конечно, не ботаник).
Систему логического вывода мы изобразим орграфом (рис. 4.2). Каждая вершина графа помечена уточняющим вопросом экспертной системы к пользователю или ее ответом на задачу. Для удобства все вершины перенумерованы, начиная с нуля.
Если вершина помечена вопросом экспертной системы, то из нее выходят две дуги. Одна дуга помечена одним ответом пользователя, другая — его альтернативным ответом. Вершина, соответствующая ответу экспертной системы на задачу, не имеет выходящих дуг. Будем в дальнейшем вершину орграфа называть состоянием экспертной системы.
По существу, работа экспертной системы означает «путешествие» по этому орграфу. Она состоит из последовательности однотипных шагов, на каждом из которых пользователь должен решить, по какой дуге он пойдет из очередной вершины.
Исповедуя реляционный подход, мы должны теперь описать этот орграф подходящими таблицами. Сначала составим таблицу 4.19. В ней три столбца: «Начало» и «Конец», где указаны на-чгшьная и конечная вершины дуги, а также «Ответ пользователя». Назовем эту таблицу Орграф.
Но одной этой таблицы мало, поскольку требуется еще информация о реакциях экспертной системы на ответы пользователя. Реакция же может быть двоякой: ответ системы или очередной вопрос пользователю. Поэтому и таблиц будет две.
Таблица 4.20 Имена имеет два атрибута: Имя и Состояние.
Таблица 4.21 Вопросы имеет также два атрибута: Состояние и Вопрос.
180
©Какой стебель у растения: древесный или зеленый?
зеленый
древесный
Тип: травянистые
стелющееся Тип: лианы
Тип: деревья. Имеют ли листья ^ широкую и плоскую форму >2/ листа?
Класс: покрытосемянные (7
чешуеобразная
Семейство: кипарисовые
©Каково положение стебля:
стелющееся или прямостоящее?
прямостоящее
^ Имеет ли растение один ^ основной ствол?
нет
@ Тип:
: кустарниковые
нет
Класс: голосемянные. Какова форма (8) листа: чешуеобразная или иглоподобная?
иглоподобная
Какова конфигурация ^ расположения игл: хаотическая или в 2 ряда?
хаотическая
в 2 ряда
Имеется ли серебристая полоса снизу иглы?
Семейство: сосновые ^
Рис. 4.2 Структура логического вывода в экспертной системе
Семейство: болотный кипарис
Теперь надо определить взаимодействие этих таблиц. Для этого нам в каждый момент работы экспертной системы потребуется знать, в каком состоянии она находится. Номер этого состояния
181
Логико-математические модели
Таблица 4.19
Начало Конец Ответ пользователя
0 1 стебель — зеленый
0 2 стебель — древесный
2 3 положение — стелющееся
2 4 положение — прямое
4 5 один ствол — да
4 6 один ствол — нет
5 7 форма листа широкая и плоская — да
5 8 форма листа широкая и плоская — нет
8 9 форма листа — чешуеобразная
8 10 форма листа — иглоподобная
10 11 конфигурация — хаотическая
10 12 конфигурация — 2 ряда
12 11 серебристая полоса — да
12 13 серебристая полоса — нет
Таблица 4.20
Имя Состояние
тип — кустарниковые 6
тип — травянистые 1
тип — лианы 3
тип — деревья 5
класс — голосемянные 8
семейство — кипарисовые 9
семейство — сосновые 11
семейство — болотный кипарис 13
класс — покрытосемянные 7
будем хранить еще в одной таблице (табл. 4.22), которую назовем Текущее состояние.
Сейчас в эту таблицу записано начальное состояние экспертной системы.
182
Таблица 4.21
Состояние Вопрос
0 Какой стебель у растения — древесный или зеленый?
2 Каково положение стебля — стелющееся или прямостоящее?
4 Имеет ли растение один основной ствол?
5 Имеют ли листья широкую и плоскую форму?
8 Какова форма листа — чешуеобразная или иглоподобная?
10 Какую конфигурацию имеет расположение игл — хаотическую или в 2 ряда?
12 Имеется ли серебристая полоса снизу иглы?
Таблица 4.22
Состояние
О
По текущему состоянию экспертная система генерирует запрос к таблице Орграф. При этом должно быть реализовано соединение таблиц Текущее состояние и Орграф по атрибутам Начало =■ Состояние. В зависимости от реакции на этот запрос пользователя экспертная система переходит в следующее состояние и либо выдает ответ, либо генерирует очередной запрос. Изменение состояния экспертной системы организуется с помощью макрокоманд, допустимых той программной оболочкой, которая используется для реализации этой модели экспертной системы. Это уже вопросы технические, и мы рассмотрим их при выполнении лабораторной работы 19.
ВОПРОСЫ и ЗАДАНИЯ
^ Какие основные блоки включает в себя экспертная система? Каково назначение каждого из них?
0 Разработанная нами экспертная система в качестве вершин ответов не всегда указывает на семейство, а завершает свою работу указанием, например, класса растения. Это сделано лишь потому, что система носит чисто иллюстративный характер. Разработайте более полный вариант базы знаний данной экспертной системы.
О а) Попытайтесь разработать экспертную систему классификации химических веществ по их свойствам (таких систем может быть несколько в зависимости от выбираемых свойств).
б) Попытайтесь разработать экспертную систему, советующую пользователю, какой выбрать метод для решения имеющегося у него тригонометрического уравнения.
183
Логико-математические модели
§40
Знакомимся с логическим программированием
Выразительные возможности языка СУБД Access весьма ограниченны. Впрочем, они достаточны для решения того круга задач, на который ориентирована любая база данных. А если вы хотите решать другие задачи, строить другие компьютерные модели, пользуйтесь языком программирования. Хотя бы с одним таким языком вы уже знакомы. Его отличительной чертой является так называемый процедурный стиль. Эти слова означают, что компьютер выступает в качестве формального исполнителя, которому нужно подробно и точно описать всю последовательность действий (процедур), необходимую для получения результата.
Теоретики программирования не могли смириться с тем, что компьютеру нельзя сказать: «Подумай сам и получи результат, связанный с исходными данными и известными тебе соотношениями». Например, если тренер предложил вам построиться по росту, то он вряд ли рассказывает вам алгоритм выполнения задачи. Разве что для младших ребятишек первый раз он пояснит, что тот, кто выше, должен стоять правее (т. е. укажет в явном виде связь между исходными данными — вашим ростом — и результатом).
Представлялось соблазнительным предложить такой язык программирования, на котором достаточно было бы описать исходные данные, указать требуемый результат и связи между ними, а построение решения свести к некой стандартной процедуре, которая была бы встроена в транслятор с этого языка.
В 1972 году шотландский ученый Р. Ковальский предложил использовать в качестве такого языка модификацию языка математической логики, оперирующего с предикатами и операциями над ними. Эта идея была практически реализована и обобщена учеными Франции, Великобритании, Португалии, Советского Союза и других стран. Разработанный язык программирования получил название Пролог (от французского PROgramming et LOGicque). И он действительно явился прологом в новом направлении, получившем название логического программирования.
Логическое программирование основано на том, что компьютер должен решать задачу в свойственной человеку манере. Оно предполагает, что сведения о задаче и предположения, достаточные для ее решения, формулируются в виде логических аксиом. Эта совокупность представляет собой базу знаний задачи.
База знаний может быть использована для решения задачи, если ее постановка формализована в виде логического выражения, подлежащего выводу из аксиом и называемого целевым утверждением. База знаний вместе с соответствующим целевым утверждением называются логической программой. А собственно построение решения (которое в этом случае называется исполнением программы) сводится к определенной стандартной процедуре, разработанной специалистами-математиками.
184
База знаний в системе логического программирования делится на две части: описание фактов и описание правил вывода. Как это делается, разберем на небольшом примере большой семьи.
В этой семье есть:
— мама (ее имя Нина);
— папа (его имя Саша);
— сын (его имя Андрей);
— сын (его имя Павел);
— дочь (ее имя Вера);
— сестра мамы (ее имя Ирина);
— брат папы (его имя Юрий);
— брат папы (его имя Игорь);
— отец мамы (его имя Егор);
— мать мамы (ее имя Анна);
— отец папы (его имя Петр);
— мать папы (ее имя Софья);
— жена Андрея (ее имя Татьяна);
— дочь Андрея и Татьяны (ее имя Мария);
— муж Веры (его имя Антон);
— сын Веры и Антона (его имя Виктор).
Остановимся на этом. Видно, что здесь присутствуют следующие отношения:
бытъ отцом (д:, у), быть сыном (х, у), быть братом (х, у), бытъ_мужем (д:, у).
быть матерью (х, у), быть дочерью (х, у), быть сестрой (х, у), бытъ_женой (х, у).
Каждому из этих отношений соответствует предикат, который принимает значение Истина в том и только в том случае, если значения его переменных таковы, что соответствующие им объекты (в нашем случае — субъекты) находятся в данном отношении. Например, если предикат, соответствующий отношению
бытъ отцом (д:, у), обозначить как Father(x, у), то
Father(Caшa, Андрей) = Истина, а Father(Caшa, Мария) = Ложь.
Введем нужные нам предикаты:
бытъ отцом (д:, у) бытъ матеръю (д:, у) бытъ сыном (д:, у) бытъ дочеръю (х, у) бытъ братом (д:, у) бытъ сестрой (д:, у) бытъ_мужем (х, у) бытъ женой (д:, у)
Father(x, у), Mother(x, у), 8оп(д:, у), Daughter(x, у), Brother(x, у), Sister(x, у), Husband(x, у), Wife(x, у).
185
Логико-математические модели
Известная нам информация тогда запишется так:
Мо1Ьег(Нина, Андрей);
Father(Cama, Андрей); Father(Cama, Павел); Father(Cama, Вера); 8оп(Андрей, Нина); Son(Андрей, Саша); 8оп(Павел, Нина); 8оп(Павел, Саша); Father(Erop, Нина); Father(HeTp, Саша); Husband(Антон, Вера); 8оп(Виктор, Вера); 8оп(Виктор, Антон);
Мо1Ьег(Нина, Павел); Мо1Ьег(Нина, Вера); Daughter(Bepa, Нина); Daughter(Bepa, Саша);
Вго1Ьег(Юрий, Саша); Brother(Hropb, Саша); Mother(AHHa, Нина); Mother(Лидия, Саша); Wife(TaTbana, Андрей);
Daughter(Mapna, Андрей); Daughter(Mapna, Татьяна).
8ister(HpHHa, Нина);
Это факты нашей базы знаний. А теперь запишем правила. Вот первое:
Grandfather(a:, у) := Father(a:, z), Father(2, у)
В переводе на обычный язык это правило означает: если х — папа для некоторого z и тот же z — папа для у, то х — дедушка для у. На языке логики предикатов то же самое запишется так:
\/х Vz/ (3z (Father(a:, z) & Father(2, у)) Grandfather(a:, y)).
Как видите, вместо знака конъюнкции пишется запятая, вместо импликации пишется знак присваивания, причем правая и левая части поменялись местами. Предикат, стоящий в левой части правила, называется головой правила, а предикаты, стоящие в правой части, образуют тело правила.
А вот с кванторами немного сложнее. В языке Пролог кванторы не пишутся, а только подразумеваются. При этом если переменные встречаются в голове правила, то к ним применяются кванторы всеобщности, а если переменные встречаются только в теле правила, то к ним применяются кванторы существования.
У многих, наверно, возник недоуменный вопрос: ведь дедушка — это не только папин папа, но и мамин папа. На языке предикатов это записывается так:
\/х Vz/ (3z ((Father(x, z) & Father(2, у)) V (Father(a:, z) &
& Mother(2, z/))) ^ Grandfather(a:, z/)).
Иными словами, нам нужна операция дизъюнкции. А ее в правилах Пролога нет.
Давайте вспомним, как обошлись с дизъюнкцией разработчики СУВД Access. Очень просто: разнесли в разные строки запрашиваемые параметры. Также и в Прологе: предикаты, соединенные дизъюнкцией, разносятся в разные правила. Значит, мы должны просто записать еще одно правило:
186
Grandfather(jc, у) := Father(jc, z), Mother(2, y)
Теперь, когда все условности оговорены, мы будем записывать все утверждения по правилам Пролога. Можно, к примеру, определить предикат, соответствующий отношению бытъ бабушкой или отношению быть_внуком. Совокупность правил, которые вы здесь напишете, и создает «интеллектуальную» начинку разрабатываемой базы знаний «Семья».
О том, как в базе знаний получать информацию, мы расскажем в следующем параграфе. А сейчас продемонстрируем только один запрос:
? Grandfather(jc, Вера)
Ответом будет:
X = Петр X = Егор
Иными словами. Пролог разыскивает те значения х, для которых данный предикат истинен. Поэтому чем больше предикатов вы определите, тем больше запросов сможет обрабатывать эта база знаний.
Правда, для описания фактов пришлось использовать много разных предикатов. Нельзя ли уменьшить их количество? Можно, только предикаты нужны другие. Возьмем, например, такие предикаты: Man(jc) — X является мужчиной;
Woman(jc) — х является женщиной.
Тогда легко определить предикаты Son и Daughter:
Son(jc, у) := Mother(i/, х), Man(jc)
Son(jc, у) := Father(i/, х), Man(jc)
Daughter(jc, у) := Mother(jc, у), Woman(jc)
Daughter(jc, у) := Father(jc, у), Woman(jc)
Чуть сложнее определяются предикаты Sister и Brother:
Sister(jc, у) := Father(2, х), Father(2, у), Woman(jc)
Sister(jc, у) := Mother(2, x), Mother(2, y), Woman(jc)
Brother(jc, y) := Father(2, x), Father(2, y), Man(jc)
Brother(jc, y) := Mother(2, jc), Mother(2, y), Man(jc)
Теперь совокупность фактов запишется по-другому:
Father(Caшa, Андрей); Mother(HnHa, Андрей); Мап(Саша);
Woman(HHHa);
Mother(HHHa, Павел);
Woman(Bepa);
Mother(HHHa, Вера);
Woman(AHHa);
Mother(AHHa, Нина);
■\ДГотап(Лидия);
Mother(Лидия, Саша);
Woman(HpHHa);
Father(Caшa, Павел); Father(Caшa, Вера); Father(Erop, Нина); Father(HeTp, Саша);
Мап( Андрей); Мап(Павел); Мап(Егор); Мап(Петр);
187
Логико-математические модели
Father(Erop, Ирина);
Father(Андрей, Мария);
Father(AHTOH, Виктор); Father(IIeTp, Юрий); Father(IIeTp, Игорь);
Мап(Виктор);
Мап(Антон);
Мап(Юрий);
Мап(Игорь);
Mother(AHHa, Ирина);
W отап(Татьяна);
Mother(Taтьянa, Мария);
W отап(Мария).
Mother(Bepa, Виктор);
МоШег(Лидия, Юрий);
Mother(Лидия, Игорь).
Но дело не только в простоте. Давайте напишем запрос:
? 8оп(Юрий, л:)
В первой базе знаний ответа не будет, хотя ясно, что Юрий, будучи братом Саши, имеет тех же родителей. А во второй базе благодаря написанным нами правилам для предиката Son мы получим ответ:
X = Петр
X = Лидия
Значит, вторая база знаний нами спроектирована точнее. Как мы уже знаем из § 37, проектирование базы знаний — дело непростое, и занимаются им специалисты-когнитологи.
ВОПРОСЫ и ЗАДАНИЯ
^ в чем состоят отличия процедурного и логического стилей программирования?
Q Каковы основные части базы знаний, создаваемой на языке логического программирования?
е Каковы составные части правила, записанного в соответствии с требованиями синтаксиса языка Пролог? Как такое правило переводится на язык логики предикатов?
Q Запишите, пользуясь предикатами второй (улучшенной) версии базы знаний «Семья», правила, определяющие предикаты Graпdmother(бaбyшкa), ипс1е(дядя), Aunt(TeTa), СоизюМ(двоюродный брат), Соизт\/\/(двоюродная сестра).
§41
Запросы в базе знании на Прологе
Пусть имеется некоторая база знаний, созданная на языке Пролог, например вторая версия базы знаний «Семья», описанная в предыдущем параграфе. Как и для баз данных, ответ от базы знаний мы получаем, направив ей запрос.
Запросы к базе знаний можно разделить на два типа: запросы на подтверждение факта и запросы на перечисление значений переменных, удовлетворяющих запросу.
Запрос на подтверждение факта выглядит так:
? 8оп(Юра, Петр)
Ответ будет «да».
188
Или другой запрос:
? 8оп(Виктор, Саша)
Ответ будет «нет».
Теперь о запросах второго типа. В таком запросе каждую переменную Пролог воспринимает как требование найти такое значение, чтобы предикат оказался истиной. Например, на запрос
? Grandfather(x, у) будет дан следующий ответ:
X = Петр, у = Андрей X = Петр, у = Павел X = Петр, у = Вера X = Егор, у = Андрей X = Егор, у = Павел X = Егор, у = Вера X = Саша, у = Виктор X = Саша, у = Мария
Поймет Пролог и запрос, сформулированный в виде конъюнкции предикатов:
? Grandfather(x, у), Brother(x, 2)
Мы в этом запросе спрашиваем, кто является одновременно дедушкой и братом и кому именно. Ответ таков:
X = Саша, у = Виктор, г = Юрий X = Саша, у = Виктор, г = Игорь X = Саша, у = Мария, г = Юрий X = Саша, у = Мария, г = Игорь
Впрочем, вас могут не интересовать подробности, кому именно некто будет дедушкой и в то же время еще кому-то братом. Тогда запрос можно записать так:
? Grandfather(x, _), Brother(x, _)
Символ _ обозначает, как говорят, пустой аргумент и фактически исполняет роль квантора существования. Надо только помнить, что, употребленный в разных местах, он обозначает разные переменные. Если предикат, определяющий логическое выражение данного запроса (надеемся, что вы помните: каждый запрос реализуется неким логическим выражением), записать на языке математической логики, то получится так:
Эу Эг Grandfather(x, у), Brother(x, 2), а не так:
Эу Grandfather(x, у), Brother(x, у).
Сам механизм поиска ответов на запросы мы рассказывать не будем. Но не потому, что это государственная тайна, просто это относится не к информатике, а к математике.
189
Логико-математические модели
ВОПРОСЫ и ЗАДАНИЯ
0 Определите, какие ответы будут получены из базы знаний «Семья» на следующие запросы;
а) ?Grandmother(at, Мария)
б) ?Uncle( Игорь, Виктор)
в) ?Соивш\Л/(Мария, х)
г) ?Uncle(_, х), Woman(at)
0 Запишите запросы по правилам языка Пролог для получения следующей информации из базы знаний «Семья».
а) Кто является внуками Лидии?
б) Кто является тетей?
в) У кого есть братья?
г) Кто отец племянницы Юрия?
д) У какого деда есть братья?
Встроенные предикаты в логических языках программирования. Простейшие программы
В § 40 мы, строя базу знаний «Семья», сами определяли все нужные для этой базы предикаты: часть из них определялась совокупностью фактов, другая часть — правилами вывода. Но представьте себе, как было бы неудобно, работая с процедурными языками программирования, каждый раз писать, например, алгоритм сложения двух чисел, или алгоритм вычисления значения
функции у[х , или алгоритм конкатенации двух слов. От всей этой работы вы освобождены благодаря тому, что указанные операции и функции встроены в язык.
Так же и в логических языках программирования: наиболее употребительные предикаты имеются в самом языке. Например, для организации простейших арифметических операций имеется встроенный предикат, который мы назовем Linear(jc, у, г, v); в реальных языках логического программирования он может называться по-другому. Этот предикат принимает значение Истина в том и только в том случае, когда его аргументы связаны соотношением V = ху + Z. На основе этого предиката легко определить предикаты, позволяющие подсчитывать сумму и произведение двух чисел:
Sum(jc, у, г) := Linear(jc, 1, у, г),
Mult(jc, у, г) := Linear(jc, у, 0, г).
Обратите внимание, что переменные в описании предиката — это формальные параметры и вместо них, как обычно, могут быть
I 190
записаны имена любых других переменных того же типа или соответствующие константы. В нашем случае мы воспользовались числовыми константами 0 и 1.
В каждом языке логического программирования есть предикат сравнения. Будем считать, что он записывается так: Сотра-rison{x, у, г), где х тл. у — числовые или символьные переменные, а 2 — логическая переменная, принимающая два значения: Истина и Ложь. Этот предикат дает значение Истина в том и только в том случае, когда х < у и г имеет значение Истина (в случае символьных переменных это означает, что значение переменной х по алфавиту располагается раньше значения переменной у). На основе этого предиката легко определить предикаты, соответствующие отношению «меньше», «не меньше», «равно», «больше»:
Less(jc, у) := Comparison(jc, у. Истина);
Notless(jc, у) := Comparison(jc, у. Ложь);
Equal(jc, у) := Comparison(jc, у. Ложь), Comparison(i/, х. Ложь);
More (х, у) := Less(i/, х).
Встроенные логические предикаты (в них все переменные логические) отрицания и конъюнкции мы запишем так:
Not(jc, у) истинен тогда и только тогда, когда х — Истина, а у — Ложь или X — Ложь, а у — Истина;
And(jc, у, г) истинен тогда и только тогда, когда х — Истина, у — Истина и 2 — Истина.
Благодаря законам де Моргана предикат дизъюнкции определяется так:
Ог(лг, у, 2) := Not(jc, и), Not(i/, ш), And(u, w, s), Not(s, 2).
A теперь попрограммируем. Тип переменных, входящих в предикаты (целый, вещественный, символьный и т. д.), объявляется, как и в процедурных языках, в начале программы. Однако мы не будем этого делать, поскольку все создаваемые нами программы носят иллюстративный характер и обычно понятно по умолчанию, переменные какого типа в них используются.
Пусть требуется найти объем прямоугольного параллелепипеда с ребрами 10, 20 и 30. Пишем предикат, определяющий объем:
Vol(a, Ь, с, v) := Mult(a, b, 2), Mult(2, с, v).
И делаем запрос:
? Vol(10, 20, 30, v)
Легко предсказать, какой ответ даст Пролог на этот запрос. Но заметьте, что для решения другой задачи — найти высоту прямоугольного параллелепипеда длины 10, ширины 20 и объема 600 — мы обращаемся к тому же предикату, но с другим запросом:
? Vol(10, 20, с, 600)
191
Логико-математические модели
Это и понятно — база знаний о том, что такое объем прямоугольного параллелепипеда, не меняется. А какие задачи вы будете решать — дело ваше.
Можно сказать так, что база знаний — это модель объекта, процесса или явления, записанная на языке логического программирования, а запросы к ней — это использование данной модели для решения конкретных задач.
А теперь запрограммируем нахождение наибольшего общего делителя двух натуральных чисел а и Ь. О НОД(а, Ь) мы знаем следующее:
1) НОД(а, а) = а;
2) Если а < &, то НОД(а, Ь) = НОД(а, Ь - а);
3) Если а > Ь, то НОД(а, Ь) = НОД(а - Ь, Ь).
Вот и запишем это с помощью уже известных нам предикатов:
LCD(a, а, а);
LCD(a, Ь, с) := Less(a, Ь), Sum(a, у, Ь), LCD(a, у, с);
LCD(a, Ь, с) := Моге(а, Ь), 8ит(л:, Ь, а), LCD(a:, Ь, с).
В этой базе знаний один факт и два правила вывода. Сделаем к этой базе знаний запрос:
? LCD(20, 35, х)
Поскольку 20 ^ 35, под факт наш запрос не попадает. Не попадает он и под второе правило, поскольку значение предиката Моге(20, 35) — Ложь. А в первом правиле предикат Less(a, Ь) истинен, поэтому разыскивается такой у, чтобы был истинен предикат Sum(20, у, 35). Такое значение у только одно: 15. Поэтому надо разыскивать такое х, чтобы был истинен предикат LCD(20,15, х). Для поиска такого значения переменной х снова обращаемся к базе знаний. Теперь придется воспользоваться вторым правилом и разыскивать х, для которого истинен предикат LCD(5,15, лс). Следующий шаг приведет к поиску х, для которого истинен предикат LCD(5,10, х). Еще один шаг приводит к предикату LCD(5, 5, х). И тут происходит обращение к факту, и получается ответ: лс = 5.
Разобравшись в этом процессе, легко понять, что в базе знаний нами было записано рекурсивное правило, т. е. правило, в котором предикат, записанный в голове, фигурирует и в теле этого правила. Впрочем, как и для алгоритмов, рекурсия может создаваться не одним правилом, а некоторой их совокупностью.
В реальном языке логического программирования есть много других встроенных предикатов, в том числе позволяющих строить графические изображения на экране компьютера. Мы, однако, не преследуем цель научить вас программированию на языке Пролог, но надеемся, что представление о таком программировании вы получили.
й 192
ВОПРОСЫ и ЗАДАНИЯ
Для чего нужны встроенные предикаты?
@ Какое правило называется рекурсивным?
@ а) Используя встроенные и определенные в объяснительном тексте предикаты, определите предикат Square(jc, у), позволяющий возводить число х в квадрат.
б) Требуется извлечь квадратный корень из числа. Можно ли для этого воспользоваться предикатом Square(jc, у), определенным вами при выполнении задания из пункта а?
в) Используя предикат Square(jc, у), составьте запросы, позволяющие узнать, можно ли извлечь квадратный корень из числа 16, из числа О, из числа -1.
^ а) Используя встроенные и определенные в объяснительном тексте предикаты, определите предикат СиЬе(л:, у), позволяющий возводить число х в куб. б) Используя предикат Square(jc, у) из задания 1 и предикат СиЬе(л:, у), составьте запрос, позволяющий находить числа, меньшие 1000, которые одновременно являются квадратом и кубом некоторых целых чисел. Считайте, что в этих предикатах переменные объявлены имеющими целый тип.
а) Используя встроенные и определенные в объяснительном тексте предикаты, постройте базу знаний, позволяющую для каждого числа находить его абсолютную величину.
б) Постройте базу знаний, позволяющую из двух чисел выбрать большее.
в) * Постройте базу знаний, позволяющую из трех различных чисел выбрать то, которое расположено между двумя другими.
@ Используя встроенные и определенные в объяснительном тексте предикаты, постройте базу знаний, позволяющую для числа а ^ 0 и целого неотрицательного числа п вычислить а".
Последовательностью Фибоначчи называется последовательность чисел 1, 1, 2, 3, 5, 8, ..., в которой каждый член, начиная с третьего, равен сумме двух предыдущих.
а) Постройте базу знаний для предиката Fib(«, х), позволяющего по номеру п находить п-й член х данной последовательности.
б) Укажите, какие ответы будут получены на запросы:
а) ?ПЬ(л, 55), б) ?Fib(8, 16), в) ?Fib(0, 0), г) ?Fib(-1, л:), д) ?Fib(«, -1).
ИТОГИ ГЛАВЫ
Повторим кратко то основное, что вы узнали, изучив главу 4.
Наука, изучающая закономерности рассуждений, называется логикой. Ее раздел, изучающий формальные модели логических рассуждений, получил название математической логики. Расширение сферы исследований на всю интеллектуальную деятельность человека привело к построению моделей, которые стали называть системами искусственного интеллекта. Любая система искусственного интеллекта как одна из разновидностей информационных
193
Логико-математические модели
моделей, обязательно содержит набор параметров, описывающих существенные факторы. Поскольку система искусственного интеллекта направлена на принятие того или иного решения, то в качестве связей между параметрами, описывающими исходные данные, и результатом выступают так называемые правила вывода. Их суть в том, что они указывают, какое решение должно быть рекомендовано в рамках данной модели при тех или иных значениях исходных параметров.
Повествовательное предложение, в отношении которого имеет смысл говорить о его истинности или ложности, называется высказыванием. Над высказываниями можно производить логические операции: конъюнкции (операция и), дизъюнкции (операция или), отрицания (операция не), импликации (операция следования), равносильности. Результат применения каждой из логических операций задается с помощью таблицы истинности.
Из переменных, принимающих логические значения Истина и Ложь, с помощью логических операций составляются формулы. Формулы называются тождественно равными или равносильными, если при подстановке вместо переменных всевозможных значений получаются равносильные высказывания. Это означает, что формулы равносильны в том и только в том случае, когда у них одинаковы таблицы истинности. Формула называется тождественно истинной или тавтологией, если она принимает значение Истина при любых значениях входящих в нее переменных.
По каждой таблице истинности можно написать формулу, для которой таблица истинности совпадает с данной. Формула, получающаяся применением стандартного для этой цели алгоритма, имеет вид дизъюнкции нескольких конъюнктивных выражений, в которых знаком конъюнкции соединены переменные или их отрицания, причем в каждом конъюнктивном выражении присутствует каждая переменная, и притом ровно один раз. Такой вид называется совершенной дизъюнктивной нормальной формой (СДНФ).
Современные базы данных, реализующие фактографические модели, в большинстве своем создаются на основе реляционного подхода. Суть этого подхода заключается в том, что информация об объектах представляется в виде отношений, т. е. связанных между собой характеристик изучаемых объектов. Каждое отношение имеет имя и набор аргументов, которые в теории баз данных называются атрибутами (в СУБД Access атрибуты реализуются подходящим полем). Количество атрибутов в отношении называется его арностью.
Отношение называется функциональньт, если его атрибуты можно разбить на две группы так, чтобы значения первой группы атрибутов однозначно определяли значения второй группы. Иными словами, первая группа атрибутов может рассматриваться как аргумент некоторой функции, а вторая группа определяет значение этой функции. Если отношение функционально, то набор атрибу-
7—Гейн, 10 ]
о 194
тов, относящихся к аргументу функции, задаваемой этим отношением, называется ключевым. Набор атрибутов является ключевым, если в таблице нет двух строк с одинаковым набором значений этих атрибутов.
Логической функцией или, по-другому, предикатом на множестве М называют тгпсую функцию от нескольких аргументов, которая при любом наборе значений этих аргументов из множества М принимает одно из двух значений: Истина или Ложь. Переменные, которые используются при записи предиката в виде логического выражения, могут быть свободными или связанными посредством кванторов всеобщности и существования.
Над логическими функциями можно выполнять те же операции, что и над высказываниями. При построении отрицания действует правило: каждый квантор, фигурирующий в записи логического выражения, заменяется на двойственный, а бескванторная часть заменяется ее отрицанием.
Выбор из всех наборов значений атрибутов, находящихся в дгш-ном отношении, тех, для которых некоторая заданная логическая функция принимает значение Истина, называют фильтрацией, а саму эту функцию называют фильтром.
При работе с многотабличной базой данных важную роль играет операция соединения таблиц по заданным атрибутам. Тип связи между атрибутами соединяемых таблиц зависит от того, объявлены ли эти атрибуты ключевыми. Если один из связываемых атрибутов ключевой, а другой нет, то устанавливается связь типа «один-ко-многим», если же оба связываемых атрибута ключевые, то устанавливается связь типа «один-к-одному».
Одной из разновидностей систем искусственного интеллекта являются экспертные системы. Каждая экспертная система содержит в качестве ядра базу знаний той предметной области, для работы в которой она предназначена. Другой компонент экспертной системы — решатель. На основании сведений, имеющихся в базе знаний, он моделирует ход рассуждений эксперта. По-другому решатель называют блоком логического вывода.
На основе языка математической логики созданы языки логического программирования. Логическое программировгшие основано на том, что сведения о задаче и предположения, достаточные для ее решения, формулируются в виде логических аксиом. Эта совокупность представляет собой базу знаний задачи. Постановка самой задачи формализована в виде логического выражения, подлежащего выводу из аксиом и называемого целевым утверждением. База знаний и соответствующее целевое утверждение называется логической программой. При этом построение решения (которое в этом случае называется исполнением программы) сводится к определенной стандартной процедуре. Языки логического программирования активно используются для создания систем искусственного интеллекта. Первым языком логического программирования явился язык Пролог.
в 195
ПРОВЕРЬ СЕБЯ
Логико-математические модели
ЧЭСТЬ 1. При выполнении предложенных ниже заданий запишите у себя в тетради шифр задания и номер правильного ответа. По окончании работы сверьте получившуюся у вас запись с ключами на с. 269.
АЗ. Высказывание (X -► У) & (Х-» У) равносильно высказыванию:
И X & У; И X V У; 3) X © У; 4) X - У.
А2. Отрицанием к высказыванию «Для любого натурального числа, оканчивающегося цифрой 3, существует кратное ему число, оканчивающееся цифрой 1» служит высказывание:
ЩЦ Нет натурального числа, оканчивающегося цифрой 3, для которого существовало бы кратное ему число, оканчивающееся цифрой 1.
Существует натуральное число, оканчивающееся цифрой 3, для которого любое кратное ему число не оканчивается цифрой 1.
Любое натуральное число, оканчивающееся цифрой 3, не имеет кратного числа, оканчивающегося цифрой 1.
Отличное от указанных в пунктах 1—3.
АЗ. Таблицу истинности, совпадающую с таблицей 4.23, имеет формула: Щ* ((X — У) — X) V Х& У;
X — У V (XV У) & X;
И (У - X) & (XV У);
отличная от указанных в пунктах 1—3.
Таблица 4.23
X у ^’(Х,У)
и и и
и л и
л и л
л л л
А4. Отрицанием к высказыванию Зх Vj/ {х^ -Ь = 1) служит высказывание:
il Vx3j/(x2-(-j/3=l); Щ:\/уЗх{х^ + у^^\у, И Vx 3j/(х^^ 1); Щ1 отличное от указанных в пунктах 1—3.
А5. Формула, принимающая при всевозможных значениях логических переменных значение Истина, называется:
правильной;
PJF совершенной дизъюнктивной нормальной формой;
7*
I 196
3) тавтологией;
^4y,i по-другому, нежели в пунктах 1—3.
А6. В совершенной дизъюнктивной нормальной форме представлена формула от трех переменных X, Y и Z:
1); X & Z V X &Y V Y & Z;
2У X &Y & Z У X &Y & Еу X &Y & Z;
Щ X &Y & Z &Y У X &Y & Z & X У X &Y & Z & Z;
Щ. среди вариантов, записанных в пунктах 1—3, нет формулы в СДНФ.
А7. Если соединение таблиц в СУБД Access осуществляется по ключевым атрибутам, то устанавливаемая связь имеет тип:
1) ? один-к-одному;
2} один-ко-многим;
ЗУ многие-ко-многим;
■4У между такими атрибутами нельзя установить связь.
А8. На награждение отличившихся работников компании собираются прийти президент компании, генеральный директор или ведущий менеджер. Уже известно, что:
а) если на награждение не придет президент или придет ведущий менеджер, то обязательно придет генеральный директор;
б) если придет генеральный директор, то придет и ведущий менеджер. Наименьшее число представителей управления компанией, которые придут награждать отличившихся работников,
Щ 1; -Щ' 2; Щ 3;
4у нельзя определить по заданным условиям.
А9. Высказывание Зх \/у (х^у^ < О) можно прочитать так:
ly Хотя бы для одного значения х найдется значение у, чтобы выполнялось неравенство х^у^ < О.
2) * При некотором значении х для каждого значения у выполняется неравенство х^у^ < О.
.Щ Каким бы ни было значение у, найдется значение х, для которого х’^у^ < о.
41 При каждом значении х для любого значения у имеет место неравенство х^у^ < О.
А10. Термин «реляционный» происходит от слова:
;1) функция; 2)| отношение; связь;
4) другого слова, нежели в пунктах 1—3.
197
Логико-математические модели
Таблица 4.24
а)
№ п/п Фамилия Имя Класс Школа
1 Смирнов Николай 9 15
2 Иванов Вадим 9 28
3 Белов Сергей 10 135
4 Петров Павел 11 36
5 Сидоров Андрей 11 72
6 Смирнов Алексей 11 135
б)
№ п/п Школа Район
1 135 Центральный
2 72 Юго-западный
3 36 Юго-западный
4 28 Центральный
5 15 Юго-западный
6 103 Западный
All. В таблицах 4.24, а и 4.24, б дан фрагмент базы данных. Эти таблицы соединены по атрибуту Школа. Согласно запросу по признаку Район = Юго-западный сформирована таблица-результат со следующими атрибутами, причем записи в ней отсортированы по номерам школ в порядке возрастания.
№ п/п Фамилия Имя Класс
После исполнения запроса в строке с номером 1 таблицы-результата будет стоять фамилия:
Иванов; Петров; ijp Сидоров;
# другого ученика.
А12. В таблице КП 4.24, а ключевым атрибутом является:
Фамилия; {Щ Имя; Класс; Школа.
Часть 2. При выполнении предложенных ниже заданий запишите у себя в тетради шифр задания и ответ в виде последовательности символов. Сверьте получившуюся у вас запись с ключами на с. 269.
В1. В таблице для некоторого атрибута нет двух строк, в которых значения этого атрибута совпадали. Этот атрибут является_________________.
В2. На множестве натуральных чисел рассматривается предикат \/х Зг/ (г/ < гх^ - Зл:). Количество значений переменной г, для которых
он ложен, равно ______.
ВЗ. На множестве слов рассматривается высказывание Зх'^у {х + у = у + л:). Определите, истинно оно или ложно, и закончите предложение: «Данное высказывание _______________».
198
В4. Ниже приведено несколько повествовательных предложений:
В бесконечной десятичной дроби, представляющей число 1/7, нет двух рядом стоящих одинаковых цифр.
XI Четырехугольник является квадратом.
На столе лежит яблоко.
4) В некотором царстве, в некотором государстве живет царевна-лягушка.
5) Хочешь быть счастливым, будь им.
6) Кому-то на Руси жить хорошо.
Запишите номера тех предложений, которые являются высказываниями, в порядке возрастания без знаков препинания и пробелов.
LVHifc
До сих пор мы строили модели процессов, считая, что факторы, влияющие на функционирование объекта, неизменны. Они заданы самой природой и не подвергаются воздействиям человека. На самом деле человек, познавая природу и общество, все активнее и шире вмешивается в действие этих факторов, иногда не осознавая своего влияния, но чаще сознательно, преследуя конкретную цель — заставить тот или иной объект функционировать нужным человеку образом.
-vE.vv; ..г*^
Воздействие на объект или процесс, имеющее своей целью получение ^ требуемых значений параметров этого объекта или процесса, называет-I ся управлением.
в этой главе мы на примерах покажем, как информационные технологии и компьютерное моделирование могут применяться для решения задач управления.
04В) Что такое управление
Выше мы уже сформулировали определение управления. Но чтобы хорошо понимать его суть и уметь самим осуществлять управление, надо знать основные принципы и способы его организации. Общие закономерности управления в системах различной природы и принципы его организации изучаются кибернетикой. Такое название дал этой науке один из ее основоположников — Нор-берт Винер.
Для простоты будем считать, что управляющее воздействие оказывает некий объект. Мы надеемся, что никого не смутит то обстоятельство, что под словом «объект» может подразумеваться человек (например, шофер), автоматическое устройство (например, светофор), организация (например. Министерство внутренних дел, устанавливающее правила дорожного движения на территории России) и т. п. Простейшая ситуация управления, когда взаимодей-
200
Управляющий Управляющее Управляемый
объект воздействие объект
Рис. 5.1 Схема взаимодействия двух объектов в процессе управления
ствуют два объекта: управляющий и управляемый. Такое взаимодействие можно изобразить в виде схемы (рис. 5.1).
Физически управляющее воздействие может быть реализовано по-разному. Управление телевизором его владелец осуществляет нажатием кнопок и вращением ручек настройки, управление движением автотранспорта светофор осуществляет посредством цветовых сигналов с заранее оговоренным смыслом каждого из них, управление собакой хозяин осуществляет голосовыми командами. Говоря об управлении вообще, необходимо отвлечься от физической формы управляющего воздействия. Тогда становится ясно, что суть управляющего воздействия — это передача информации от управляющего объекта к объекту управления.
Управляющая информация может быть представлена инструкцией о том, что должен делать объект управления. Если объект управления — формальный исполнитель, то такая инструкция, как вы знаете, обычно представляет собой алгоритм. Алгоритмическое управление формальным исполнителем является одним из важнейших вариантов реализации управления, особенно часто встречающимся в технических системах. Но в живой природе и обществе далеко не всякое управление сводится к алгоритмическому; существуют и другие формы управления, о которых мы расскажем в последующих параграфах.
Телевизор как объект управления вместе с допустимыми для него воздействиями один, а управлять им могут разные люди, причем с совершенно различными целями — одному хочется смотреть фильм, а другому — спортивную программу; для одного звук слишком громкий, а для другого, наоборот, тихий. Та или иная социальная группа (например, учащиеся одного класса) как объект управления тоже может подвергаться воздействию разных управляющих объектов (в том числе и находящихся внутри этой группы) с весьма разными целевыми установками. Экономический регион как объект управления тоже может подвергаться управляющему воздействию со стороны совершенно различных управляющих объектов. Отвлекаясь опять-таки от физической реализации управляющего объекта (а это, как отмечалось выше, естественно при теоретическом рассмотрении понятия управления), мы видим, что каждый управляющий объект характеризуется целевыми установками и своими возможностями воздействовать на управляемый объект. Что же касается объекта управления, то он характеризу-
Информационные модели
201
Рис. 5.2 Схема управления объектом
ется своими функциональными возможностями (т. е. тем, что он может сделать или в какое состояние перейти) и допустимыми на него воздействиями.
Допустимые воздействия для каждого объекта, как правило, предопределены самой его природой. С кибернетической точки зрения воздействие на объект управления — это восприятие им информации через специальные входы. Реакция объекта на входную информацию, т. е. изменение его состояния, тоже описывается соответствующей информацией. Можно считать, что эта информация подается на тот или иной выход: именно благодаря этой информации управляющий объект может судить о том, достигнута ли поставленная цель. Поэтому схема управления выглядит так, как показано на рисунке 5.2.
Важно иметь в виду, что говорить об управлении можно только применительно к динамическим системам, т. е. системам, меняющимся во времени или как-то функционирующим. Ведь если система статична, то ею нельзя управлять — что бы вы с ней ни делали, она не откликается на ваши воздействия; ее можно только сломать. Даже когда речь идет об управлении автомобилем (который сам, конечно, в результате управления не изменяется), то на самом деле рассматривается движение автомобиля по некоторой дороге, т. е. фактически управляемым объектом выступает система «автомобиль -I- дорога».
В следующих параграфах мы на примерах покажем, как информационные технологии и компьютерное моделирование могут применяться для решения задач управления.
ВОПРОСЫ и ЗАДАНИЯ
Что такое управление объектом или процессом?
Ниже приведено несколько ситуаций, в которых осуществляется управление. Укажите, в чем состоит процесс управления: попытайтесь определить цель управления, управляющий и управляемый объекты, допустимые воздействия на управляемый объект.
а) Движение поезда метро.
б) Объявление начала посадки в самолет.
в) Ловля рыбы на удочку.
г) * Обработка детали на фрезерном станке.
д) * Лечение пациента.
О
0
202
©
Среди процессов, перечисленных ниже, укажите процессы управления.
а) Сталевар разливает металл в ковши.
б) Следователь допрашивает подозреваемого.
в) Кандидат в депутаты выступает на митинге с призывом голосовать за него.
г) Художник рисует пейзаж.
д) Режиссер снимает фильм.
Почему управлять можно только динамическими системами?
Для каждого из следующих объектов управления укажите, что для него является допустимыми воздействиями:
а) утюг; б) автомат по продаже железнодорожных билетов;
в) продавец мороженого; г)* ваш класс.
Сколько можно взять у природы
Богата российская земля различными ресурсами. Ее недра хранят самые разнообразные полезные ископаемые. Ее леса служат источником для работы лесоперерабатывающей промышленности. В озерах и реках водится рыба...
Вот о ловле рыбы и пойдет у нас речь. Не на удочку, конечно, а в промышленных масштабах.
Рыба с промышленной точки зрения относится к так называемым возобновляемым ресурсам — вы ее ловите, а она снова рождается и растет в том же водоеме. В отличие, скажем, от железной руды, которую' если один раз добыл, то больше ее на этом же месте не найдешь. Поэтому руды получили название невозобновляемых ресурсов. Но о них мы здесь говорить не будем.
Рыба рождается ежегодно, но растет не так уж быстро, и если сразу выловить ее слишком много, то можно остаться без рыбы. Возникает задача управления: сколько рыбы можно вылавливать ежегодно, чтобы обеспечить ее нормальное воспроизводство?
Мы знаем модель прироста растительной массы без вмешательства человека — это модель ограниченного роста (см. § 21). Кроме того, мы видели, что управляемый объект удобно изображать в виде предмета, имеющего входы и выходы. Изобразим и рассматриваемую нами рыбную популяцию в виде схемы (рис. 5.3).
Входы и выходы — это масса рыбы в л-м году и соответственно спустя год. И если рыбу никто не ловит, то эта масса меняется по следующему рекуррентному закону:
М(л) Популяция М(п +1)
рыбы
М(п + 1)= l +
L-M(0)
Min),
Рис. 5.3 Модель изменения возобновляемого ресурса
где М(0) — масса рыбы в начальный момент времени; L — предель-
I 203
ное значение массы рыбы для данного водоема; k — коэффициент ежегодного прироста.
Теперь у нас появился еще один вход — воздействие человека R (рис. 5.4). Если мы считаем, что ежегодно вылавливается одна и та же масса рыбы R, то наша модель ограниченного роста изменится по внешнему виду незначительно:
Информационные модели в задачах управления
М(п + 1) ►
Рис. 5.4 Модель потребления возобновляемого ресурса
М(л +1) =
1+
L -М(0)
М(л) - R.
Построенную модель назовем моделью потребления возобновляемых ресурсов.
ВОПРОСЫ и ЗАДАНИЯ
Приведите примеры управления какими-либо объектами или процессами.
О
0
0
Какие предположения положены в основу модели потребления возобновляемых ресурсов?
а) Подготовьте заполнение электронной таблицы для вычисления массы рыбы через заданное количество лет, используя модель потребления возобновляемых ресурсов.
б) Составьте алгоритм для вычисления массы рыбы через заданное количество лет, используя модель потребления возобновляемых ресурсов.
Задача о лесопарке
В окрестностях города Екатеринбурга по берегам озера Шарташ раскинулся замечательный лесопарк «Каменные палатки». Когда-то он был практически за городом, но теперь около него возник огромный жилой микрорайон, и с лесопарком стало происходить что-то неладное.
Причина понятна — резко возрос поток посетителей и парк уже не справляется с их нашествием. Подобная проблема характерна для любого крупного города.
Управлять потоком посетителей лесопарка невозможно. Но есть места (природные парки, заповедники и заказники), куда можно ограничить вход любителей отдохнуть на природе. Возникла управленческая задача: как организовать посещение природного парка, чтобы не нанести ему непоправимого ущерба?
Решение задачи надо начинать с построения модели. Нужно прежде всего решить, что значит «организовать посещение». Можно это понимать так: парк открыт для посещения подряд несколь-
204
ко дней (обозначим это число ^Г) и в эти дни его ежедневно посещает N человек. Потом парк закрывается до практически полного его восстановления.
Теперь об ущербе, наносимом посетителями. Любая природная система способна к самовосстановлению. Ученые-экологи научились измерять ущерб в процентах к исходному состоянию и установили, что за ночь восстанавливается примерно 30% нанесенного ущерба. Если ущерб составляет 80%, то такая ситуация становится непоправимой — парк погибает. Для другого парка в других условиях обе цифры могут быть другими.
Итак, пусть за один день посетители нанесли парку некоторый ущерб. Обозначим его величину через А и будем считать, что она зависит только от числа посетителей N и не меняется в зависимости от дня посещения.
Прошел день, и прошла ночь — парк встречает новых посетителей уже с ущербом; уровень его состояния оценивается на 100% - (100% - 30%)А. Если мы не хотим все время писать значок процентов, то можем уровень состояния выражать просто в долях от 1. Формула уровня состояния парка к началу второго дня получится такая:
1 - (1 - 0,3)А.
Нетрудно понять, что к началу третьего дня уровень состояния будет уже
(1 - (1 - 0,3)А)2,
к началу четвертого —
(1 - (1 - 0,3)А)3
и т. д. к началу последнего К-го дня уровень состояния будет
(1 - (1 - 0,3)А)^ “Ч
Иными словами, если мы допустим посетителей еще на один день, то ущерб станет непоправимым, т. е. уровень состояния, равный (1 - (1 - 0,3)А)^, будет ниже чем 1 - 0,8.
Итак, если нам известно А, то значение К — это наибольший показатель степени в выражении (1 - (1 - 0,3)А)^, для которого данное выражение остается больше чем 0,2.
Теперь надо решить задачу, как величина А связана с числом посетителей, т. е. определить А как функцию от N.
Для этого надо снова провести исследования. Что ж, в управлении без науки осмысленного шага не сделаешь. Прикидки на глазок да надежда на авось до добра не доводят.
Опять-таки экологи установили, что величина А хорошо описывается функцией Ь + с у[м. Вот только Ь и с для каждой местности свои. Известны также для нашего парка показатели ущерба (табл. 5.1).
Теперь надо подобрать числа Ь и с так, чтобы значение А, вычисленное по формуле, не сильно отличалось от значений, приве-
I 205
денных в таблице. Воспользуемся снова электронной таблицей. Пример ее заполнения показан в таблице 5.2.
Во второй клетке второго и третьего столбцов будут подбираться значения & и с, для которых наибольшее из отклонений будет минимальным. Подобным вы уже занимались, когда исследовали броуновское движение частицы.
После того как будет найдена формула для А, мы сможем находить значение по iV и, наоборот, N по К. Но этим вы займетесь на лабораторной работе.
Информационные модели в задачах управления
Таблица 5.1
Число посетителей Ущерб, %
30 7,0
50 10,8
100 18,3
120 20,7
180 27,0
250 33,0
400 43,5
600 55,0
Таблица 5.2
■■■ ;а _ ■ D ; ’ Е
1 N ь С Ущерб Отклонение от значения, вычисленного по формуле
30 0,07 |В2Ч-С2*л/а2-В2|
50 Макс. m£ix(E2:E9) 0,108 |B24-C2*Va3-D3|
■.А 100 0,183 |B24-C2*Va4-D4|
120 0,207 |B24-C2*Va5-D5|
6 180 0,27 |В2Ч-С2*л/а6-В6|
.'т 250 0,33 1 В2-Ю2*л/а7-В71
8 400 0,435 |В2Ч-С2*л/а8-В8|
9 600 0,55 1В2Ч-С2*л/а9-В9|
ЗАДАНИЕ
Пусть уже найдены коэффициенты 6 и с в формуле для А. Продумайте, как по заданному числу ежедневных посетителей N вычислить число К, показывающее, сколько дней подряд можно посещать парк. И наоборот, как по заданному числу К найти ежедневное количество посетителей парка.
206
Учимся у природы правильной организации управления
В предисловии к этой главе мы определили управление как целенаправленное воздействие на те или иные факторы объекта или процесса. Поэтому название параграфа на первый взгляд вы-глядит странно: природа в своем существовании не преследует какие-либо цели, поэтому и управлять природа ничем и никем не может. Как же тогда учиться управлению у природы?
Наблюдая природные явления, мы можем «подсмотреть» у нее те механизмы, которые позволяют природе в течение тысячелетий существовать и развиваться. Ведь и человек обычно стремится к тому, чтобы его деятельность тоже могла обеспечить устойчивое существование и развитие. Это не всегда ему удается. Попробуем разобраться почему.
Вспомните свойство живой природы, которое вы обнаружили, выполняя лабораторную работу 22, — явление саморегулирования: природа стремится восстановить то стабильное состояние, из которого ее вывели тем или иным способом. Это возможно только в том случае, когда само состояние, в котором находится объект, является воздействующим на него фактором.
Если представлять себе управляемый объект как систему со входами и выходами (рис. 5.2), то в этом случае некоторые его выходы одновременно являются его входами. Именно так обстоит дело в модели ограниченного или неограниченного роста: выходной параметр М(л -Ь 1) характеризует очередное состояние системы, т. е. одновременно является входом. Вход и выход различают только моменты времени, в которых рассматриваются значения этого параметра.
Следовательно, изображая управляемый объект с элементами саморегуляции, мы должны такие выходы замкнуть на соответствующие входы (рис. 5.5).
В модели управления добычей возобновляемых ресурсов эта схема выглядит так, как показано на рисунке 5.6.
Воздействие выходных параметров динамической системы на ее же входные параметры называют обратной связью.
В живой природе любая система обязательно обладает механизмом обратной связи. Простейший пример — увеличение теплоотдачи живым организмом при увеличении выделения энергии (например, при интенсивной работе). Этот механизм настолько эффективен, что при здоровом состоянии организма он способен поддерживать постоянную температуру тела при воздействии самых разнообразных внешних и внутренних факторов. Здесь мы имеем дело с так называемой отрицательной обратной связью. Эпитет «отрицатель-
207
Информационные модели в задачах управления
в
ы
X
о
д
ы
Рис. 5.5 Схема управления с обратной связью
М{п + 1)
Рис. 5.6 Модель потребления возобновляемого ресурса как системы с обратной связью
нал» означает, что она обеспечивает выработку управляющего воздействия, направленного на уменьшение рассогласования между заданным и действительным значениями параметра системы. Возникающий при этом эффект устойчивости системы к внешним воздействиям называют гомеостазом системы.
Нередко в динамических системах встречается и положительная обратная связь, усиливающая возникшее рассогласование. В природе примером положительной обратной связи является реакция пищеварительной системы на слабое раздражение пищей, вызывающее выделение пищеварительных энзимов и тем самым усиление раздражения с еще большим выделением энзимов и т. д. Это явление описывается народной приметой «Аппетит приходит во время еды». В школьных курсах физики и химии изучается другой тип явлений с положительной обратной связью — цепные реакции. К ним относится атомный взрыв, взрыв гремучего газа и т. д.
Понятие обратной связи возникло в ходе построения различных автоматических регуляторов. Одним из первых таких регуляторов был регулятор Уатта (рис. 5.7), управлявший подачей пара в цилиндры паровой машины (о нем вам, скорее всего, рассказывали на уроках физики). Позже понятие обратной связи было выделено как самостоятельное, описывающее саморегулирующиеся системы.
Рис. 5.7 Схема работы регулятора Уатта
I 208
Объект с саморегуляцией может быть достаточно четко структурирован; в частности, в нем могут быть выделены управляю-н^ий и управляемый подобъекты. Эти под объекты связаны информационными каналами: по одним каналам передается управляющая информация от управляющего объекта к управляемому, по другим — информация о результатах управления. Для паровой машины с регулятором Уатта управляющий объект — сам регулятор, управляемый — паровой котел.
|ц| Главным в понятии обратной связи является то, что измене-iMi ние состояния объекта непосредственно связано с этим состоянием.
В паровой машине, как только скорость маховика начинает превышать установленные пределы, объем подачи пара уменьшается пропорционально этой скорости и, наоборот, когда скорость падает ниже установленных пределов, увеличивается объем подачи пара. Отметим, что в этой системе регулятор не «выясняет» причин увеличения или уменьшения скорости (разнообразие этих причин не поддается описанию), он просто поддерживает заданный режим работы паровой машины.
ВОПРОСЫ и ЗАДАНИЯ
Q При каких условиях возможно явление саморегулирования? Приведите примеры саморегулирующихся динамических систем.
Q Что такое обратная связь?
Q Какую обратную связь называют отрицательной, положительной? Приведите примеры систем с отрицательной и положительной обратной связью.
Q Что такое гомеостаз системы?
Q Среди приведенных ниже примеров взаимодействия укажите те, которые относятся к понятию обратной связи. Для каждого приведенного вами случая укажите тип обратной связи, т. е. положительна она или отрицательна:
а) изменение диаметра кровеносных сосудов организма и теплоотдачи организма;
б) раскрытие (или закрытие) зонтика и начало (или прекращение) дождя;
в) изменение доходности производства и объема выпускаемой продукции;
г) изменение покупательского спроса и цены на товар;
д) изменение яркости горения лампочки и подаваемого напряжения;
е) изменение скорости бега и сопротивления воздуха;
ж) изменение скорости бега и частоты пульса;
з) восход (заход) солнца и выключение (включение) осветительных приборов;
и) звонок будильника и пробуждение человека.
Q Выполняя тестовые задания к главам нашего учебника, вы получали информацию о том, насколько хорошо усвоен изучаемый материал. Мы надеемся, что вы использовали эту информацию для построения управления своим процессом обучения. Какой тип обратной связи при этом реализуется?
209
Информационные модели в задачах управления
Изучаем системы с обратной связью
Из предыдущего параграфа вы уже, наверно, поняли, что системами с обратной связью мы занимались еще в главе 3, изучая модели ограниченного и неограниченного роста. Но вы об этом тогда не догадывались. Да это было и не нужно — в то время вы осваивали понятия границ адекватности. Теперь же мы сосредоточим внимание именно на обратной связи. Начнем с обсуждения такой задачи.
На некотором острове живут лисы и кролики. Кролики питаются травой, которой вдоволь на острове, а лисы охотятся на кроликов. Экологи время от времени пересчитывают кроликов и лис. Вот что они установили:
; коэффициент прироста числа кроликов зависит от условий обитания (холодная или теплая зима, сухое или влажное лето, ранняя или поздняя весна и т. д.) и колеблется в пределах от 3,2 до 4,7;
коэффициент прироста числа лис пропорционален коэффициенту прироста числа кроликов.
Требуется установить, как меняется численность кроликов и лис с течением времени.
Решение задачи, как обычно, начинаем с построения модели. Нам даны две популяции: кролики и лисы. Схематично изобразим их так, как показано на рисунке 5.8. Здесь М{п) — масса кроликов через п лет, а L{n) — масса лис в тот же момент времени.
Но эти популяции не существуют раздельно, каждая сама по себе, а взаимодействуют друг с другом. Это взаимодействие можно изобразить схемой, приведенной на рисунке 5.9. В этой системе легко просматриваются три контура обратных связей. Опишем их расчетными формулами.
Сначала займемся кроликами. Поскольку корма у них вдоволь, то их прирост идет в соответствии с моделью неограниченного роста. Вот только лисы их поедают. Конечно, аппетит у раз-
а)
Рис. 5.8 Модели простейших экологических систем
8—Гейн, 10 КЛ.
210
ных лис может оказаться разным, но в среднем можно считать, что съедаемая крольчатина по лисам распределяется равномерно, т. е. масса кроликов, съеденных одной лисой, пропорциональна общему числу кроликов. Эту массу можно записать как сМ(п), где с — коэффициент, характеризующий, можно сказать, «неувертливость» кроликов или, наоборот, умелость лис в охоте. Значит, изменение массы кроликов за год можно записать так:
М(п + 1)- М(п) = hM(n) - сМ(п)Цп).
Здесь k — коэффициент прироста кроликов за год.
То же соотношение можно переписать так:
М(п + 1) = (1 + ft - cL(n))M(n).
А как обстоят дела у лисиц? Ясно, что прирост численности лис пропорционален их имеющемуся количеству L{n) и приросту крольчатины М{п -Ь 1) - М(п). Если прирост нулевой, то новым лисам нечего будет есть; если же прирост отрицательный (т. е. число кроликов уменьшается), то должно уменьшаться и число лис. Обозначим коэффициент пропорциональности через s. Значит, для лис можно написать такую формулу:
L(n -Ь 1) - L(n) = s(M(n -Ь 1) - M(n))L(n).
Перепишем эту формулу в виде, удобном для вычисления L(n + 1):
L(n +!) = (!+ s(M(n + 1) - M(n)))L(n).
Выбрав теперь некоторый год в качестве начального (т. е. считая п = 0), мы, зная массу кроликов М(0) и массу лис -С<(0), можем последовательно вычислить М(1) и L(l), М(2) и L(2) и т. д. Коэффициенты ft, с и S известны из наблюдений экологов.
Модель построена; можно приступать к компьютерному эксперименту с этой моделью. Вы его проведете, выполняя лабораторную работу 24.
211
Информационные модели в задачах управления
ВОПРОСЫ и ЗАДАНИЯ
^ Как сказано в объяснительном тексте, в рассмотренной модели «лисы и кролики» имеется три контура обратных связей. Укажите их. Какие из этих связей являются положительными, а какие — отрицательными?
0 а) Предположим, что выполняется равенство 1,(0) = —. Какие значения будут иметь М(1) и L(l); М(2) и Д2)......М(п) и Ди)?
б) Пусть имеет место равенство, записанное в пункте а. Говорят в этом случае, что значения М = М(п) \л L = L(n) характеризуют положение экологического равновесия в данной биологической системе. Как вы думаете, почему используется такое название?
е Какую роль играют положительные обратные связи в эволюции биологических систем?
Q Подставим в формулу, полученную для L(n + 1), выписанное ранее соотношение для М(п -I- 1) - М(п). Тогда
Ш -I- 1) = (1 -I- s(ft - cL(n))M(n))L(n).
Какая модель для популяции лис описывается этой формулой, если предположить, что популяция кроликов имеет постоянную массу М(и)?
Управление по принципу обратной связи
Сравним функционирование двух систем — экологической системы «лисы и кролики» и паровой машины с регулятором Уатта (табл. 5.3). Сходство налицо, не правда ли? Можно сказать, что популяция лис выступает регулятором численности кроликов.
Таблица 5.3
Изменение в системе Реакция системы на изменение
Лисы и кролики Увеличение (или уменьшение) численности кроликов Увеличение (соответственно уменьшение) численности лис
Паровая машина с регулятором Уатта Увеличение (или уменьшение) скорости Увеличение (соответственно уменьшение) сброса пара в котле
Конечно, в природной системе ни о какой целенаправленности воздействия речь идти не может. Но природа подсказывает нам, что и при создании управляемой системы ее устойчивость обеспечивается наличием обратной связи между управляемым и управляющим (регулирующим) объектами системы. Управление, использующее обратную связь между управляемым и управляющим объектами, называется управлением по принципу обратной связи. Мы можем продемонстрировать это схемой, изображенной на рисунке 5.10.
8*
212
Рис. 5.10 Управление по принципу обратной связи
Сравним управление по принципу обратной связи с работой светофора, который управляет движением на перекрестке. Здесь отсутствует всякая обратная связь, ибо каждый сигнал горит заранее заданное время вне зависимости от того, есть ли машины, движущиеся в данном направлении. Вот и получается нередко, что на зеленый свет ехать некому, хотя в то же время на красный стоит вереница машин. К сожалению, в нашей социальной жизни часто имеет место управление именно такого типа. Не случайно большинству людей управление представляется как грубое насилие, выражающееся в указах, приказах, законах, постановлениях. Подобное управление стремится предусмотреть и регламентировать все возможные случаи поведения управляемого объекта, и если вдруг обнаруживается лазейка для обхода того или иного постановления, то проводится расследование причин и принимаются меры по дальнейшему недопущению. Но лазейки-то всегда есть и будут... Напомним, что главное преимущество управления по принципу обратной связи состоит в том, что регулятору не требуется выяснять причины и обстоятельства, которые привели к изменению состояния управляемого объекта, а он просто реагирует на это изменение.
В экономической сфере принцип обратной связи проявляется в действии рыночных законов. Повышение спроса приводит к повышению цены, повышение цены делает выгодным увеличение производства данного товара, увеличение производства приводит к снижению спроса, снижение спроса влечет падение цены и т. д. На рисунке 5.11 изображена схема экономического взаимодействия.
Конечно, эта модель весьма упрощена. Здесь, к примеру, не отражено действие такого фактора, как покупательная способность населения и многое другое. Но мы обращаем ваше внимание именно на наличие обратной связи уже в данной, совсем простой модели экономического управления.
Проведенный вами компьютерный эксперимент с моделью «лисы и кролики» демонстрирует еще один важный момент в функционировании динамической системы. Вспомните, если числен-
Рис. 5.11 Простейшая экономическая модель
213
Информационные модели в задачах управления
ность лисиц намного отличалась от той, которая необходима для экологического равновесия, система не могла прийти к этому равновесию и разрушалась.
Гв™1 Для каждой системы существуют определенные границы ус-IMJ тойчивости этой системы, в которых она сохраняет свою целостность; выход за эти границы приводит к разрушению системы.
Именно выходом за границы устойчивости объясняются экологические катастрофы и экономические кризисы. И чтобы система была восстановлена, необходимо вернуть ее в область саморегулирования. А для этого важно знать, каковы же границы этой области. Находить их как раз и помогает компьютерное моделирование задач управления.
ВОПРОСЫ и ЗАДАНИЯ
^ Что такое управление по принципу обратной связи?
0 В чем причины разрушения систем, способных к саморегулированию? @ Приведите примеры управления по принципу обратной связи.
Покупательная
способность
населения
Рис. 5.12 Дополнительный элемент экономической системы
На рисунке 5.11 приведена простейшая схема экономического взаимодействия. Введем еще один элемент экономической системы (рис. 5.12).
Как, по вашему мнению, его следует встроить в указанную схему? Перечислите возникающие при этом контуры обратных связей и для каждой из обратных связей определите, положительна она или отрицательна.
В §44 рассматривалась задача об организации посещения парка. Предложенное для этой задачи решение не предусматривает обратной связи в управлении посещениями парка. Предложите управление, регулирующее посещение парка и основанное на принципе обратной связи. (Совет. При построении управления используйте экономические факторы.)
а) Известна история о том, что правитель одного из восточных государств платил своему врачу только в то время, когда он не болел. Рассмотрите эту ситуацию как управление в системе «врач — пациент». Укажите используемый здесь тип обратной связи — положительна она или отрицательна.
б) Какой тип обратной связи используется в современном, наиболее распространенном виде платного медицинского обслуживания?
в) Какой тип управления реализуется при бесплатном медицинском обслуживании?
Практически все государства мира законодательно борются с мздоимством (дачей и получением взяток) своих чиновников. Эта борьба иногда бывает более успешной, зачастую менее, но не может искоренить зла, поскольку опирается только на страх перед разоблачением и последующим наказанием. Предложите какой-либо механизм борьбы со взяточничеством, основанный на принципе обратной связи.
214
Глобальные модели
В предыдущих параграфах мы рассмотрели весьма простые модели управления. Относятся они к малым территориям или весьма малым совокупностям объектов. Это так называемые локальные модели. В реальном управлении используются намного более сложные модели, учитывающие многочисленные и разнородные факторы. Но принципы моделирования и управления остаются общими как для больших моделей, так и для маленьких. А главное, что роль маленьких моделей совсем не маленькая. Ведь мы можем соединять их между собой, словно элементы конструктора, и получать сложные модели, описывающие большие пространства и многофакторное воздействие. Такие модели, описывающие многофакторные процессы, протекающие на территориях больших регионов, стран или даже всего земного шара, получили название глобальных моделей. В 70-е годы в Вычислительном центре Академии наук СССР под руководством академика Н. Н. Моисеева была начата разработка первой глобальной модели биосферы Земли, способной показать, что будет происходить с Землей в результате тех или иных воздействий на нее человечества. Именно на этой модели были предсказаны последствия ядерной войны, в которой не может быть победителя, ибо последствия ее будут необратимы.
Другие глобальные модели, построенные в 80-е годы XX века, показали, что безудержный рост потребления человечеством даже возобновляемых ресурсов тоже приведет к краху. Нужна продуманная, экологически выверенная стратегия управления на всех уровнях — от района до государства и сообщества государств, чтобы человечество осталось на Земле. Такие стратегии есть, и находить их помогают информационные компьютерные технологии.
ВОПРОСЫ
Q Что такое глобальные модели?
Q в чем вы видите роль информатики и информационных технологий в жизни современного общества?
ИТОГИ ГЛАВЫ
Повторим кратко то основное, что вы узнали, изучив главу 5.
Наука, изучающая информационные процессы в управлении живыми организмами, социальными и техническими системами, называется кибернетикой. Управлением называется воздействие на объект или процесс, имеющее своей целью получение требуемых значений параметров этого объекта или процесса.
215
Информационные модели в задачах управления
Одним из важнейших вариантов реализации управления, особенно часто встречающимся в технических системах, является управление на основе заранее подготовленной инструкции, определяющей программу действий объекта. Однако в живой природе преобладает другой принцип управления — управление на основе обратной связи.
Обратной связью называют воздействие выходных параметров управляемого объекта (процесса) на его же входные параметры. При наличии обратной связи объект (процесс) обладает способностью к саморегуляции. Осуществление обратной связи возможно лишь в том случае, когда состояние, в котором находится рассматриваемый объект (процесс), является фактором, воздействующим на него самого.
Обратная связь называется отрицательной, если она обеспечивает выработку управляющего воздействия, напрешленного на уменьшение рассогласования между заданным и действительным значениями параметра системы. Возникающий при этом эффект устойчивости системы к внешним воздействиям называют гомеостазом системы. Положительной называется обратная связь, обеспечивающая выработку управляющего воздействия, увеличивающего возникшее рассогласование. В живых природных системах все процессы подчинены принципу обратной связи.
Для каждой системы существуют определенные границы устойчивости ее функционирования, в которых она сохраняет свою целостность; выход за эти границы приводит к разрушению системы.
ПРОВЕРЬ СЕБЯ
Часть 1. При выполнении предложенных ниже заданий запишите у себя в тетради шифр задания и номер правильного ответа. По окончании работы сверьте получившуюся у вас запись с ключами на с. 269.
А1. Воздействие выходных параметров объекта на его входные параметры называется:
1) гомеостазом; ;,2)^ обратной связью; Я)^ эволюцией;
4) среди вариантов, указанных в пунктах 1—3, нет правильного.
А2. Основоположником кибернетики является:
1) Дж. фон Нейман;
Щ Н. Винер;
3) К. Шеннон;
4) А. Н. Колмогоров.
АЗ. Для того чтобы обеспечить устойчивость системы при управлении по принципу обратной связи, обратная связь должна быть:
i 216
% стабильной;
положительной;
"Щ отрицательной;
■f^ любой.
А4. Система может быть управляемой только в том случае, если она: t)f материальная;
Щ информационная;
3:) динамическая;
4) находится в состоянии гомеостаза.
Часть 2. При выполнении предложенных ниже заданий запишите у себя в тетради шифр задания и ответ в виде последовательности символов. По окончании работы сверьте получившуюся у вас запись с ключами на с. 269.
В1. Обратная связь, при которой возникшее в системе рассогласование увеличивается, называется ___________.
В2. Целенаправленное воздействие на объект или процесс, совершаемое с целью получения требуемых значений параметров этого объекта или процесса, называется ____________.
ВЗ. Ниже приведены примеры некоторых регулирующих устройств:
f) регулятор подачи воды в бак: поплавок, соединенный с заглушкой, перекрывающей доступ воды;
2) светофор;
% демпферный регулятор двери: чем меньше открыта дверь, тем медленнее она закрывается; ft) терморегулятор утюга;
5) электрический предохранитель;
Щ солнцезащитные стекла: чем интенсивнее свет, тем они темнее. Выберите из этого списка регуляторы, действующие по принципу обратной связи, и запишите их номера в порядке возрастания без пробелов и знаков препинания.
fiOOOOOO« 3
« ^ ^ <>Т r^'v?
Выполнять задания лабораторных работ, помещенных в этом разделе учебника, вы будете в компьютерном классе. Поэтому напомним правила техники безопасности — ведь к каждому рабочему месту подведено опасное для жизни напряжение электричества.
1. Если вы обнаружили какую-либо неисправность, немедленно сообщите об этом преподавателю. Не работайте на неисправном оборудовании!
2. Не включайте и не выключайте компьютеры без разрешения учителя.
3. Не трогайте, а тем более не дергайте различные провода.
4. Не стучите по клавиатуре и мышке.
5. Не работайте на компьютере с грязными руками.
Для вашего здоровья важно и то, как вы сидите перед компьютером:
Позвоночник должен быть вертикально прямым; спина опирается на спинку стула.
Ступни удобно стоят на полу или специальной подставке.
Не наклоняйтесь к экрану. Расстояние от глаз до экрана должно быть не менее вытянутой руки.
Верхний край экрана располагается примерно на уровне ваших глаз.
Если вы посмотрите на центр экрана, то линия вашего взгляда должна быть перпендикулярной плоскости экрана, т. е. экран должен быть развернут немного вверх.
Плечи отведены назад и опущены, и тогда вам не составит труда удобно расположить руки над основными клавишами среднего ряда.
Хотя практикум называется компьютерным, это вовсе не означает, что, приступая к выполнению заданий лабораторной работы, нужно тут же включать компьютер. Мы советуем сначгша внимательно прочитать задание и поразмышлять, как именно будет использоваться та или иная компьютерная технология для его выполнения.
218
*□ Лабораторная робота 1 (к §5)
Обработка числовой информации
Первые компьютеры были призваны облегчить человеку обработку числовой информации. Правда, они делали это далеко не в самой удобной для человека форме. Настоящий переворот в технологии обработки числовой информации произошел, когда в 1979 году Д. Бриклин и Р. Фрэнкстон создали первую электронную таблицу. Мы тоже предлагаем вам начать компьютерный практикум с обработки числовой информации с помощью электронной таблицы. В описании работы мы ориентируемся на электронную таблицу Microsoft Excel, которой, вероятнее всего, будет пользоваться большинство из вас.
Приступая к выполнению лабораторной работы, вы должны вспомнить, как заполняется электронная таблица и как с ее помощью производятся вычисления. Основные правила мы приводим ниже; если вам понадобится дополнительная информация, вы легко ее получите, воспользовавшись встроенной в Excel справкой.
При использовании электронной таблицы часть исходной числовой информации заносится прямо в ее клетки (ячейки электронной таблицы). Эту информацию называют исходные данные. Кроме того, в другие ячейки необходимо записать формулы, по которым рассчитываются те данные, которые являются интересующими вас результатами.
Каждая страница электронной таблицы разбита на столбцы, обозначенные буквами латинского алфавита, и на строки, пронумерованные целыми числами, но само это разбиение при выводе на принтер не печатается.
Благодаря разбиению на пронумерованные строки и поименованные столбцы, каждая ячейка электронной таблицы имеет свой собственный адрес.
Для каждой таблицы существуют специальные правила ее заполнения, указанные в инструкции пользователю. Для электронной таблицы Microsoft Excel эти правила таковы:
• Если среди символов, вводимых в ячейку, есть буквы или другие символы, которых не может быть в числе, то это текст.
Например, текстом являются следующие последовательности символов: Василий, или 10.234.245, или а!234.
9 Если вводится правильное число, то это число.
Например, 234.
® Чтобы электронная таблица распознавала, что вводится текст или формула, используется заранее обусловленный знак. Формула всегда начинается со знака «=».
219
Компьютерный практикум
Электронная таблица имеет довольно значительный набор стандартных функций, облегчающих жизнь пользователю. Пусть, к примеру, надо в ячейке С6 получить сумму чисел, записанных в ячейках В6, В7, В8, В9, В10, В11, В12. Для этого в С6 можно записать формулу
=В6-1-В7-1-В8-1-В9-1-В10-1-В1И-В12
А если надо сложить не семь, а двадцать семь или сто семь чисел? Чтобы не писать длинное выражение, можно воспользоваться стандартной функцией, которая называется суммирование содержимого блока ячеек’.
СУММ(В6:В12)
Напомним, что блоком ячеек в электронной таблице называется совокупность всех ячеек, заполняющих некоторый прямоугольник. Для того чтобы электронная таблица знала, с каким блоком ей иметь дело, указывают через двоеточие адреса ячеек, стоящих в левом верхнем и правом нижнем углах прямоугольника. У электронной таблицы есть много разных операций над блоками ячеек. Это поиск максимального или минимального элемента, расчет среднего значения и т. д. Блок ячеек можно скопировать или перенести в другое место таблицы. При этом надо учитывать, что в Excel основной является относительная адресация ячеек. Это означает, что при копировании формулы из одной ячейки в другую адреса ячеек, входящих в формулу, изменяются на те величины, на которые отличается адрес новой ячейки. Например, если указанную выше формулу из ячейки Сб скопировать в ячейку ЕЗ, то в ячейку ЕЗ будет записана формула СУММ(ПЗ:П9) — ведь буква Е получается из буквы С сдвигом на две позиции вправо, поэтому В в формуле заменяется на D; а число б от числа 3 отличается на -3. Если необходимо, чтобы какой-то элемент адреса не менялся при копировании (так называемая абсолютная адресация), то перед ним ставится знак $. Например, если бы в Сб была написана формула СУММ($Вб:В$12), то после копирования этой формулы в Еб там была бы записана формула СУММ($ВЗ:П$12).
А теперь попробуем приспособить электронную таблицу для решения задачи, которая может возникнуть в практической деятельности.
1 Владелец автостоянки хочет автоматизировать расчеты с клиентами за услуги. Разработайте заполнение электронной таблицы, которое позволило бы это сделать.
Договоримся информацию об использовании места на стоянке записывать в строку. Чтобы таблица не была очень большой по числу строк, договоримся, что на стоянке 10 мест. Простейший вариант заполнения таблицы может выглядеть так, как показано в таблице КП.1.
Для времени приезда и отъезда выбран формат, в котором до запятой указываются часы, а после запятой — минуты. Это позволяет работать с этими данными как с числами.
Таблица КП. 1 К о
' ' В > ■' '■С. D . ■ ^ В ^ '• ' F
1 места Время приезда Время отъезда Продолжительность стоянки, мин Цена за час Стоимость
' 2. 1 10,43 12,58 40*(Целое(В2)-Целое(С2))+(С2-В2)*100 10 D2*$E$2/60
3 2 8,15 11,33 40*(Целое(ВЗ)-Целое(СЗ))+(СЗ-ВЗ)*100 D3*$E$2/60
4 ' > V ' 1 13,37 16,05 40*(Целое(В4)-Целое(С4))+(С4-В4)*100 D4*$E$2/60
^ > « ... ... ... ... ... ...
м - 7 40*(Целое(В21 )-Целое(С21 ))+(С21-В21 )* 100 D21*$E$2/60
Таблица КП. 2
№ места 1 2 1 4 3 5 2 7 2 5 8 3 10 1 6 5 9 10
Время приезда 10,43 8,15 13,37 6,10 7,25 13,40 12,25 8,10 15,15 16,50 8,50 17,23 13,24 20,12 7,45 20,05 9,10 21,17
Время отъезда 12,58 11,33 16,05 18,23 14,10 16,13 13,47 17,25 17,05 18,30 23,11 18,18 20,20 22,57 16,33 23,12 20,34 21,43
221
Компьютерный практикум
^ Требует обсуждения и формула расчета продолжительности стоянки. Перевод времени приезда в минуты выглядит так:
60*Целое(В2)+(В2-Целое(В2))*100,
где Целое(В2) — это целая часть числа, записанного в ячейку В2. Теперь уже легко понять, как получаются формулы, записанные в столбце D. Формулу можно написать только один раз, а затем скопировать ее в другие ячейки столбца D. Аналогично заполняется столбец F (не забудьте отметить некоторые элементы адресов как абсолютные).
2 Заполните столбцы В и С в соответствии с таблицей КП.2.
3 А теперь в ячейке ЕЗ подсчитайте дневной доход автостоянки. Введите в ячейку G7 формулу:
=ЕСЛИ(И(В2> 11; А2<12); 1 ;0)+ЕСЛИ(И(ВЗ> 11; А3<12); 1 ;0)+
+ЕС ЛИ(И(В4> 11; А4< 12); 1; 0)+ЕС ЛИ(И(В5> 11; А5< 12); 1 ;0)+ +ЕСЛИ(И(В6>11;А6<12);1;0)+ЕСЛИ(И(В7>11;А7<12);1;0)+ +ЕСЛИ(И(В8> 11; А8<12); 1 ;0)+ЕСЛИ(И(В9> 11; А9< 12); 1 ;0)+ -ЬЕСЛИ(И(В10>11;А10<12);1;0)-ЬЕСЛИ(И(В11>11;А1К12);1;0)-Ь +ЕСЛИ(И(В12>11;А12<12);1;0)+ЕСЛИ(И(В13>11;А13<12);1;0)+ +ЕСЛИ(И(В14>11;А14<12);1;0)+ЕСЛИ(И(В15>11;А15<12);1;0)+ -ЬЕСЛИ(И(В16> 11 ;А16< 12); 1 ;0)-ЬЕСЛИ(И(В17> 11; А17<12); 1 ;0)-Ь +ЕСЛИ(И(В18>11;А18<12);1;0)+ЕСЛИ(И(В19>11;А19<12);1;0)+ +ЕСЛИ(И(В20> 11; А20< 12); 1 ;0)+ЕСЛИ(И(В21> 11; А2 К12); 1 ;0)
^ Напомним, что оператор И(х; у) дает значение Истина, если истинны оба аргумента х и у; оператор ЕСЛЩл:; у; г) дает значение у, если аргумент х истинен, и дает значение z в противном случае. Легко понять, что указанный оператор подсчитывает количество мест, которые были заняты между 11 и 12 ч. <3
4 А теперь в ячейки G2—G6 запишите выражения, согласно которым будет подсчитано количество занятых стоянок между 6 и 7 ч, между 7 и 8 ч, ..., между 10 и 11ч соответственно; в ячейки G8—G19 запишите аналогичные данные для промежутка от 12 до 24 ч. Подумайте, как можно облегчить ввод таких длинных формул. Теперь можно проанализировать, когда загрузка автостоянки была больше.
^ Нетрудно подсчитать, что при круглосуточном полном заполнении автостоянки дневная выручка составила бы 2400 р. Сравнивая это число с полученным результатом в ячейке ЕЗ, можно увидеть, что возможности используются далеко не полностью. ^
5 Повысить эффективность можно, если обеспечить круглосуточную работу автостоянки. В этом случае машину можно ставить в один день, а забирать в другой. Для организации учета в такой ситуации нужно ввести в таблицу еще два столбца: дату
222
приезда и дату отъезда — и соответствующим образом модифицировать расчет продолжительности стоянки.
6 Предположим, что владелец решил ввести дневной и ночной тарифы оплаты: с 7 до 22 ч действует дневной тариф, а с 22 до 7 ч — ночной. Модифицируйте таблицу для этой ситуации.
7 Для привлечения клиентов владелец объявил скидки в случае, если место занято более суток, а также ввел дополнительную услугу: абонирование места. Хозяин машины платит абонентскую плату за место, закрепленное за его машиной, когда автомобиля там нет (более низкую, чем за стоянку самого автомобиля). Сделайте необходимые модификации заполнения электронной таблицы.
Лабораторная работа 2 (к § 6) ;йбра^от|от
в курсе информатики, изучавшемся вами в 8—9 классах, вы знакомились с текстовым и графическим редакторами. Выполняя эту работу, вы вспомните имеющиеся знания.
1 Представьте, что вы сотрудник небольшой полиграфической фирмы и вам поступил заказ на изготовление визитной карточки. Визитная карточка — это информационная модель ее владельца. Поэтому нужно сразу определить с заказчиком, какую существенную информацию он хочет на ней разместить. Вот один из возможных вариантов:
® фамилия, имя и отчество;
® название фирмы, в которой заказчик работает;
® занимаемая должность;
9 эмблема фирмы;
9 почтовый адрес;
« телефон, факс, e-mail; е адрес сайта.
2 Теперь надо определить, как эту информацию расположить на карточке, размеры которой стандартны: 90 х 50 мм. Можно, например, расположить так, как показано на рисунке КП.1.
Придумайте, как будет называться фирма, как зовут клиента, его адрес и т. д. Вам необходимо также принять решение, каким шрифтом будет представлен каждый информационный элемент визитной карточки.
► Напомним, что каждый шрифт характеризуется кеглем (т. е. высотой букв), гарнитурой (графическим образом букв) и начертанием (прямой, наклонный, жирный). Отметим, что шрифты делятся на рубленые и с засечками. Вот примеры:
223
Компьютерный практикум
Эмблема фирмы Название фирмы Фамилия
Имя Отчество
Должность Телефон: Факс:
Почтовый E-mail:
адрес: Сайт:
Рис. КП.1 Макет визитной карточки
Этот текст набран рубленым шрифтом гарнитуры Futuris.
А этот текст набран шрифтом с засечками гарнитуры Times.
Шрифты с засечками визуально как бы объединяют слово в одно целое, и это увеличивает скорость чтения на 10—15%. Рубленые шрифты обычно применяют для заголовков. Создавая карточку, поэкспериментируйте со шрифтами и выберите для каждого текстового элемента наиболее, по вашему мнению, удачный. Не забудьте, что шрифт может быть цветным, однако карточка не должна быть слишком пестрой.
3 А теперь запустите текстовый редактор. Для того чтобы информационные элементы располагались на карточке так, как вы задумали, ее удобно создавать в виде таблицы, у которой выделена только внешняя рамка, а внутренние стороны клеток не прорисовываются. Конечно, размер клетки для каждого элемента будет свой, так что вам предстоит поэкспериментировать с перемещением границ клеток.
4 Теперь займемся эмблемой. Ее тоже можно создавать средствами графики, встроенной в текстовый редактор. Но эффективнее воспользоваться графическим редактором. Запустите имеющийся в вашем распоряжении графический редактор и создайте подходящую эмблему. Цвета, применяемые вами в эмблеме, должны хорошо сочетаться с цветами шрифтов. Возможно, после создания эмблемы вы захотите поменять шрифтовые решения. Импортируйте эмблему в визитную карточку. Оцените созданный вами продукт в целом. Если что-то не понравилось, еще не поздно изменить.
► Визитная карточка может отражать вовсе не профессиональный облик заказчика, а его увлечения или интересы. Возможно, он является членом какого-либо спортивного клуба (например, туристического) или клуба по интересам (например, филателистского). Разработайте соответствующую информационную модель и создайте визитную карточку для такого представления вашего заказчика.
I 224
Лабораторная работа 3 (к §7)
Программирование основных алгоритмически|с, крнстру|^ий
в курсе информатики, изучавшемся вами в 8—9 классах, вы знакомились с языком программирования. Наиболее распространенными в российских школах являются языки Бейсик (версия QBasic) и Паскаль (версии TurboPascal или FreePascal). В таблице на форзацах показано, как на этих языках выглядят основные алгоритмические конструкции. Если же вы изучали другой язык, то описание этих конструкций вам напомнит учитель или вы найдете его в соответствующем справочнике.
А теперь выполните несколько заданий.
1 Запрограммируйте алгоритм Евклида — он приведен в объяснительном тексте § 7. Протестируйте вашу программу на небольших числах, для которых легко найти НОД и без компьютера. Убедившись, что программа работает правильно, найдите НОД(178 357, 1049 254).
2 Модифицируем алгоритм следующим образом:
Алгоритм НОДм
цел: т, п, k;
{ Запросить т;
Запросить п;
k := т + п;
Делать пока (не (п = 0))
{ т := п;
п := k mod п; к := т;
}
Сообщить т;
Запрограммируйте и отладьте модифицированный алгоритм.
^ Давайте сравним эффективность этих двух алгоритмов. Для этого в программы надо вставить операторы, показывающие время.
В языке Бейсик можно воспользоваться функцией TIMER. По команде t = TIMER переменной t будет присвоено значение, равное числу секунд, которые прошли от 0 часов текущих суток.
В языке Паскаль для вывода времени нужно записать следующую конструкцию:
Uses Dos;
Var h, m, s, ss: word; begin
gettime(h, m, s, ss); end.
225
1€о2(«1Г8ьютерный npoecTS^Kyivi
Переменной h будет присвоен текущий час, переменной т — минуты, S — секунды, ss — миллисекунды. <3
3 По результатам исполнения алгоритмов НОД и НОДм заполните таблицу КП.З.
Таблица КП.З
1-е число 178 357 5 386127 35 364128 213 457 281 3 245 798457
2-е число 1 049 254 7 267 849 76124 956 751457 358 7 254 124 751
Время работы алгоритма НОД
Время работы алгоритма НОДм
Для каждой пары чисел найдите отношение времени работы алгоритма НОД к времени работы алгоритма НОДм. Как, на ваш взгляд, можно охарактеризовать это отношение?
4 Запрограммируйте алгоритм, представленный схемой алгоритма в задании 18 из § 7. Запустите отлаженную программу для некоторых начальных данных. Подтвердилась ли ваша гипотеза о том, для чего предназначен этот алгоритм?
5 Запрограммируйте алгоритм, приведенный в задании 23 из § 7. Напомним, что операция LEN(W) в языке Бейсик записывается LEN(W$), а в языке Паскаль — length(W), операция Часть (S, а, Ь) в языке Бейсик записывается MID$(S$, а, Ь), а в языке Паскаль — COPY(S, а, Ь).
Лабораторная робота 4 (к § 12)
Фактографическая модель «Класс»
Выполнив задания 9 и 10 из §12, вы определили параметры информационной модели «Класс». Перечислим параметры, которые фигурируют в этих заданиях:
фамилия; * информация о братьях и cecTpeix:
имя; год рождения и имя;
дата рождения; спортивные результаты;
адрес; увлечения.
телефон;
Теперь на основе этой модели создадим базу данных. Предварительно соберите нужную информацию об учениках своего класса в соответствии с параметрами информационной модели.
I 226
Мы опишем создание базы данных в СУБД Access. СУБД Access является одним из приложений ОС Windows и обычно входит в набор офисных технологий. Главными объектами СУБД Access являются таблицы с информацией, но, кроме них, данная СУБД способна создавать производные объекты — формы, запросы, отчеты, которые облегчают пользователю его работу и восприятие информации. Но сначала поговорим о создании таблиц. СУБД Access позволяет создавать не одну, а несколько связанных между собой таблиц. Но нельзя осваивать все сразу, и мы пока остановимся на однотабличном варианте.
После запуска СУБД открывается окно базы данных. Оно позволяет увидеть, какие объекты (кроме скрытых) имеются в базе, и выполнить над ними такие операции, как копирование, вставка, переименование, удаление. Основные операции, выполняемые в этом окне, представлены в контекстном меню, открываемом нажатием правой клавиши мыши. Это операции, выполняемые над объектом в целом и не требующие его открытия. Отметим, что если был выделен не объект, а его имя, то нажатие правой клавиши открывает другое контекстное меню, где собраны команды, относящиеся к имени объекта.
В меню Файл вы можете выбрать либо режим Создать, либо режим Открыть. В первом случае Access попросит вас ввести имя и место сохранения создаваемого файла. Имени файла будет автоматически присвоено расширение mdb.
А теперь приступим к созданию базы данных.
1 Запустите СУБД Access. В меню Файл выберите режим Создать. В диалоговом окне Создание таблицы щелкните на кнопке Новая таблица. Перед вами появится макет таблицы в режиме конструктора. Заполните в первой строке имя поля «Фамилия» и укажите тип — его можно выбрать из раскрывающегося списка. После этого в нижней части окна откроется бланк свойств данного поля. Для текстового поля надо указать размер поля — допустимую длину значения. При создании числового поля надо указать формат представления числа, например целое. Клетки в столбце «Описание» заполнять необязательно.
Второе поле «Имя» тоже текстовое.
Для поля «Дата/время» (вы же будете указывать дату рождения) можно выбрать Краткий формат даты, тогда компьютер будет ждать от вас введения даты в формате ДД.ММ.ГГГГ, где ДД — число, когда вы родились (например, 05, если это произошло пятого числа), ММ — номер месяца (например, 07, если это произошло в июле) и ГГГГ — четырехзначный номер года.
Приступая к описанию параметра «Адрес», подумайте, целесообразно ли отвести под него одно поле. Ведь может потребоваться отыскать всех, кто живет на какой-либо одной улице.
Так, обдумывая каждый параметр, создайте макет вашей базы данных.
227
Компьютерный практикум
2 Завершив создание макета, сохраните его (через меню Файл-Сохранитъ как...). Напомним, что расширение этому имени СУБД присвоит сама.
3 Закройте конструктор.
4 Откройте файл с созданным макетом базы данных.
5 Заполните ее подготовленной вами информацией.
6 Сохраните созданную вами БД.
► Теперь у вас имеется несложная база данных, которой может пользоваться даже непрофессионал.
Лабораторная работа 5 (к § 12)
□
'Г
Как уже говорилось, главная задача любой СУБД — выдавать информацию на запросы пользователя. Ответом на запрос будет также таблица, содержащая только те атрибуты и строки, которыми мы интересуемся. Этому действию соответствует так называемый запрос на выборку.
Но прежде чем осваивать формирование запроса на выборку, мы научим вас создавать фильтр — как вы позже увидите, действия будут очень похожими.
Если воспринимать СУБД как некоторого формального исполнителя, а это так и есть, то фильтрация — это не что иное, как выполнение команды «Если (строка таблицы содержит нужную информацию), то ее включить в таблицу-результат». Но в условном операторе в качестве условия должно фигурировать высказывание, проверка истинности которого является допустимым действием исполнителя. Как и в большинстве языков программирования, такое высказывание записывается в виде выражения, составленного из простейших высказываний с помощью операций И, ИЛИ и НЕ. Простейшие же высказывания построены так:
— если атрибут числового типа, то пишется выражение, в котором значение атрибута сравнивается с заданным числом (при помощи операций =, <, >, < и >);
— если атрибут текстовый, то пишется выражение, в котором значение атрибута сравнивается с заданным значением только при помощи операции =.
Например, для числового атрибута Вес можно написать выражение Вес > 3, а для текстового атрибута Имя можно написать Имя = = Мария. Как было сказано, такие простейшие выражения могут быть соединены в более сложные с помощью логических операций. Например, (НЕ (Вес > 90)) И (НЕ (Имя = Вася)). Это, как вы понимаете, означает, что разыскивается информация о человеке, вес которого не больше 90 (килограммов), причем его не зовут Вася.
228
Таблица КП. 4
Поле Вес Имя
Сортировка
Условие отбора > 90 Вася
ИЛИ <=50 Мария
Как же оформляется фильтр в Access? Для этого в Access есть несколько возможностей. Сейчас мы рассмотрим только одну из них — использование так называемого бланка QBE (от Query By Example — запрос по образцу). Для этого надо воспользоваться специальным окном Фильтр, вызываемым командой Записи-Фильтр-Расширенный фильтр (меню Записи появляется при открытой таблице).
Окно фильтра состоит из двух частей. В верхней части находится прямоугольник, содержащий имя таблицы и перечень атрибутов; в нижней части находится сам бланк QBE. Его вид представлен в виде таблицы КП.4.
Как видно, бланк QBE начинается строкой ПОЛЕ. В ней указываются атрибуты, по которым осуществляется либо фильтрация, либо сортировка. Ниже располагается строка СОРТИРОВКА, в которой, если нужно, указывается порядок сортировки (по убыванию или по возрастанию). Еще ниже располагается строка УСЛОВИЕ ОТБОРА и несколько строк ИЛИ (из них обычно видна только одна).
Фактически бланк QBE — это снова таблица, в клетках которой для атрибута указываются операции сравнения и значения, с которыми сравниваются значения атрибута. Каждая клетка тем самым представляет простейшее логическое выражение или его отрицание, а имя атрибута вынесено как заголовок столбца. Выражения из клеток, стоящих в одной строке, соединяются операцией И, т. е. каждая строка — это некоторое сложное логическое выражение. А вот между собой эти «строковые» выражения соединяются уже союзом ИЛИ, о чем и напоминает слева от строки стоящее слово. Таким образом, на приведенном в качестве примера бланке QBE одна из строк задает логическое выражение (Вес > 90 И Имя = Вася). Вы вправе спросить, откуда взялся знак =, связывающий атрибут Имя со значением Вася. Ответ прост: разработчики Access для облегчения жизни пользователю разрешили его не писать на этом бланке (но и не запретили его писать!). Для другой строки получается выражение (Вес < 50 И Имя = Мария). Теперь эти два выражения надо соединить союзом ИЛИ.
Возникает вопрос: всякое ли условие, выражаемое каким-нибудь логическим выражением, можно записать в таком виде, чтобы отрицания относились только к простейшим выражениям, союзом И связывались только простейшие выражения и их отрицания и уже на последнем месте шла операция ИЛИ? Ответ на этот вопрос утвердительный, но мы обоснуем его в § 32.
229
Компьютерный npoKT^fscyM
Если вы намерены данным фильтром пользоваться неоднократно, то его можно сохранить как запрос на выборку. Однако, открыв окно запроса-выборки, вы обнаружите на бланке QBE еще одну строку — Вывод на экран. Если в этой строке в клетке соответствующего атрибута стоит перечеркнутый квадратик — так называемый флажок, то значения этого атрибута будут выводиться на экран после выполнения данного запроса. Это весьма удобно — на экран могут не поместиться все атрибуты, которых может оказаться гораздо больше, чем нужно для получения интересующей вас информации. В остальном работа по созданию и использованию запроса на выборку совершенно аналогична работе с фильтром.
Откройте созданную вами базу данных и выполните в ней следующие задания:
1 Попытайтесь с помощью базы данных составить список всех мальчиков вашего класса. Для этого создайте соответствующий фильтр так, как это объяснено выше.
2 Определите, у кого лучшие результаты в прыжках в длину (или в беге на 60 м). Для этого в меню выберите режим Записи, а затем режим Сортировка.
3 Подумайте, как сделать так, чтобы в таблице сначала шли записи про всех девушек, а затем про всех юношей. Потом вернитесь к алфавитному расположению фамилий в записях.
4 Попытайтесь организовать получение ответов на все вопросы, сформулированные в задании 10 из § 12.
Лабораторная робота 6 (к § 13)
Компьютерная обработка
экспер|1ментсщьи тщнных
в § 13 мы достаточно подробно обсудили, как на основе экспериментальных данных разыскивать коэффициент прямо пропорциональной зависимости k. Физический смысл коэффициента зависит от рассматриваемой задачи; в нашем случае это была величина, обратная сопротивлению проводника электрического тока.
1 Заполните электронную таблицу так, как указано в таблице 2.4, приведенной в объяснительном тексте § 13, и найдите величину сопротивления.
Вычисление по методу наименьших квадратов легко провести и без электронной таблицы, например с помощью инженерного калькулятора. Таблица удобнее, поскольку при проведении дополнительных опытов вы просто дописываете данные в последующие строки и меняете параметры суммирования в формуле, помещенной в ячейку Е1.
230
► Обсудим теперь другой способ выбора наилучшего приближения к экспериментальным данным. Рассмотрим еш;е раз рисунок 2.3. В методе наименьших квадратов величина коэффициента k выбиралась так, чтобы минимизировать сумму квадратов отклонений. Но можно руководствоваться другим критерием наиболее подхо-дяш;его значения к. При заданном значении к выберем из всех отклонений максимальное по абсолютной величине. Для каждого значения это к будет различным. А теперь выберем к так, чтобы это число оказалось наименьшим. В этом случае говорят, что мы разыскиваем равномерное приближение. Однако нельзя указать формулу для вычисления к. А электронные таблицы благодаря запрограммированным в них математическим методам позволяют решить эту задачу. Продемонстрируем это на том же примере поиска сопротивления проводника по экспериментальным данным.
2 Заполните электронную таблицу так, как показано в таблице КП.5. Ячейка С1 отведена под разыскиваемое значение коэффициента к (сейчас там записан 0). В ячейках С2—СИ находятся абсолютные значения отклонений отношений силы тока к напряжению от коэффициента к. В ячейке С12 вычисляется максимум этих отклонений. Именно значение в этой ячейке мы хотим минимизировать за счет изменения значения ячейки С1. Функцию, значение которой требуется минимизировать или максимизировать, называют целевой. Так что в ячейке С12 у нас записана целевая функция.
Таблица КП. 5
Л- ; '^1-. с*
Напряжение Сила тока 0
ABS(B2-C1*A2)
3 ABS(B3-C1*A3)
' ... ... ...
11 ABS(B11-C1*A11)
12 MAKC(C2:C11)
► А теперь обратимся к специальной программе, которая называется Поиск решения. Эта программа является дополнительной, поэтому надо убедиться, что она была установлена при инсталляции пакета MS Office. Для этого в меню Сервис выберите пункт Надстройки. В открывшемся диалоговом окне против этой программы, если она доступна, должна стоять галочка. Если галочки нет, то поставьте ее. Обраш;ение к программе осуш;ествляется выбором в меню Сервис пункта Поиск решения.
3 Приступим к поиску к.
231
Компьютерный практикум
Для этого нужно выполнить следующие действия:
1) Установите курсор в ячейку С12.
2) Вызовите подпрограмму Поиск решения.
3) В открывшемся диалоговом окне укажите адрес ячейки целевой функции С12, адрес изменяемой ячейки С1 (если изменяться будет несколько чисел, т. е. у целевой функции несколько аргументов, то в поле «Изменяя ячейки» записывается область изменяемых ячеек).
4) Щелчком мыши отметьте, что мы разыскиваем минимум.
5) Щелчком по кнопке Выполнить запустите программу на исполнение.
Найденное значение k появится в окне Результат поиска. Вы можете сохранить это значение в ячейке С1, щелкнув по кнопке ОК.
Сравните это значение коэффициента k с тем, которое получилось по методу наименьших квадратов. Какому из них отдать предпочтение, решать вам.
А теперь постарайтесь с помощью электронной таблицы закончить выполнение задания 3 к этому же параграфу. Коэффициенты а и 6 найдите двумя способами: по методу наименьших квадратов и как равномерное приближение.
Лабораторная работа 7 (к § 14)
Мотрд^
Перед тем как приступить к выполнению лабораторной работы, вспомните, как в языках Бейсик и Паскаль оформляются подпрограммы. Основные операторы для этих языков приведены на форзацах вашего учебника.
А теперь выполните несколько заданий.
1 Используя ваше решение задачи 3 из § 14, напишите программы, реализующие решение задачи о нахождении разложения натурального числа на простые множители. Отладьте эти программы.
2 Запрограммируйте решение задачи 5 из § 14. Отладьте составленные вами программы.
3 Запрограммируйте решение задачи 6 из § 14. Отладьте составленные вами программы.
4 Запрограммируйте решение задачи 8 из § 14. Отладьте составленные вами программы.
5* Запрограммируйте решение задачи 7 из § 14. Отладьте составленные вами программы.
6* Запрограммируйте решение задачи 9 из § 14. Отладьте составленные вами программы.
I 232
Лабораторная работа 8 (к § 15)
Рекуррентные соотношения и рекурсие1|ые окорит
Вы еще мало знаете о программировании, но уже вполне достаточно, чтобы без подсказок выполнить следующие задания.
1 Запрограммируйте решения задач 4а, 46 и 4в из § 15. Отладьте составленные вами программы.
2 Напишите программы, реализующие алгоритм из задания 6 и рекурсивную подпрограмму-функцию ФОК. Отладьте их.
3 Запрограммируйте и отладьте составленный вами алгоритм, решающий ту же задачу.
4 Проведите сравнение эффективности этих двух алгоритмов по той же схеме, как в задании 3 лабораторной работы 3.
5 Запрограммируйте решение задачи 7 из § 15. Отладьте составленные вами программы.
6 Для программирования решения задачи 8 из § 15 договоримся, что диски на стержне перенумерованы числами 1, 2, 3, ..., п, начиная с верхнего диска. Запишите и отладьте программу решения задачи о ханойской башне.
7 Запрограммируйте решение задачи 9 из § 15. Отладьте составленные вами программы.
* О Лабораторная работа 9 (к § 16)
Профаммь! для обрабрт1а<1 массивов
Одной из наиболее часто используемых структур данных являются массивы. Каждый массив имеет имя, тип и размерность. Размерность массива — это количество индексов, которыми снабжен каждый элемент массива. Для каждого индекса требуется указать диапазон его изменения.
Для выполнения заданий этой лабораторной работы нужны заполненные массивы. Заполнять массивы вручную — дело долгое и малоинтересное. Поэтому мы предлагаем создавать массивы программным путем. Алгоритмы заполнения массивов включены в тексты заданий. А теперь выполните несколько заданий.
1 Запрограммируйте решения задач 7а и 76 из §16. Отладьте составленные вами программы на массивах с небольшим числом элементов (эти отладочные массивы создайте самостоятельно).
233
Компьютерный практикум
2 Создайте массив А[1:10, 1:10, 1:10], запрограммировав следующий алгоритм:
Алгоритм
цел: I, J, К; веш: А[1:10, 1:10, 1:10];
{ Делать от J := 1 до 10 { Делать от J := 1 до 10 { Делать от IsT := 1 ао 10
{ А(1, J, К) := 2*COS (/ Ч- 2*J) + 1*Е,\Щ1''2/КУ,
} (* конец цикла *)
} (* конец цикла *)
} (* конец цикла *)
}
Решите для этого массива задачи 7а и 76.
3 Запрограммируйте решения задач 8а и 86 из § 16. Отладьте программы на массивах с небольшим числом элементов.
4 Создайте массив М[1:100, 1: 20, 1:75], запрограммировав следующий алгоритм:
Алгоритм
цел: I, J, К; веш: М[1:100, 1:20, 1: 75];
{ Делать от 7 := 1 ао 100 { Делать от J := 1 до 20 { Делать от К := 1 по 75
{ М(1, J, К) := ls:*COS (I + 2*J) + J*SIN(I^2/Ky,
} (* конец цикла *)
} (* конец цикла *)
} (* конец цикла *)
}
Решите для этого массива задачи 8а и 86.
5 Запрограммируйте решение задачи 9 из § 16. Отладьте программу на массиве с небольшим числом элементов.
6 Создайте массив М[1: 2, 1:100], запрограммировав следующий алгоритм:
Алгоритм
цел: I, J; веш: М[1:2, 1:100];
{ Делать от J := 1 до 2 { Делать от J := 1 ао 100
{ М(1, J) := COS (I + 2*J) + J*SIN(J^2/7);
} (* конец цикла *)
} (* конец цикла *)
}
Решите для этого массива задачу 9.
7 Пусть прямоугольная таблица, о которой идет речь в задании 10 из § 16, имеет 10 строк и 20 столбцов. Тогда она представляет-
234
ся некоторым массивом А[1:10, 1: 20]. Запрограммируйте решение задачи для этого массива. Отладьте составленную вами программу на массиве с небольшим числом элементов.
8 Создайте массив М[1:10, 1:20], запрограммировав следующий алгоритм:
Алгоритм
цел: I, J, А[1:10, 1:20];
{ Делать от 7 1 по 10
{ Делать от J := 1 по 20
{ А(7, J) := INT(COS (7 + 2*J) + J*SIN(J^2/7));
}
}
}
Решите для этого массива задачу 10.
(* конец цикла *) (* конец цикла *)
Лабораторная работа 10 (к §17)
В объяснительном тексте § 17 приведен алгоритм решения уравнения методом деления пополам.
1 Запрограммируйте этот алгоритм для /(jc) = х - sinjc - 2тс(1 - d). Отладьте программу и получите ответ для d = 0,8. Вычислите глубину погружения бруска, взяв радиус бревна 0,2 м.
2 Запрограммируйте алгоритм, который вы составили, выполняя задание 4в из § 16.
► У вас может возникнуть вопрос: неужели программирование — единственная компьютерная технология, позволяющая пользователю решать уравнения? Конечно нет. Уравнения можно эффективно решать, используя электронную таблицу.
Можно воспользоваться режимом Поиск решения, который вы осваивали, выполняя лабораторную работу 6. Возможно, вы обратили внимание, что в диалоговом окне режима Поиск решения есть пункт Равной значению, после выбора которого появляется окно для ввода числа (по умолчанию там всегда стоит 0). Воспользуйтесь этим режимом и решите уравнение х — sinjc - 2тс(1 - d) = 0. При этом вам не требуется помнить и вводить значение числа тс, достаточно написать ПИ().
В описании лабораторной работы 6 мы говорили, что режим Поиск решения — это надстройка, и потому не обязательно входить в электронную таблицу Excel. Но в любой таблице Excel есть функция Подбор параметра, позволяющая автоматически подобрать значение в изменяемой ячейке так, чтобы в ячейке, где записана целевая функция, оказалось требуемое ее значение. Вызов этой функции
235
Компьютерный практикум
осуществляется через меню Сервис и пункт Подбор параметра. Например, для решения уравнения х - sin л: - 2ti(1 - d) = О электронную таблицу можно заполнить так, как показано в таблице КП.6.
Таблица КП. 6
/У- i-; V'
<х>
м А1 -SIN(A1 )-2*ПИ( )*( 1-А2)
В ячейку А2 нужно ввести значение удельной плотности дерева, ячейка А1 является изменяемой, а в ячейке В2 записана целевая функция, значение которой нужно сделать равным 0.
3 Найдите значение х с помощью функции Подбор параметра.
Лабораторная работа 11 (к § 20)
Прежде всего выберите, какую компьютерную технологию вы намерены использовать для моделирования движения в среде с сопротивлением (будет интереснее, если какая-то часть класса воспользуется программой, а какая-то — электронной таблицей).
1 Если вы предпочитаете язык программирования, то воспользуйтесь своим решением задачи 2 из § 19 и отладьте составленную вами программу.
Если вы решили применить электронную таблицу, то заполните ее так, как опять-таки сказано в § 19. Правда, у вас может возникнуть вопрос: сколько строк в этой таблице надо заполнить? В программе написан цикл в форме «пока», в электронной таблице так не сделаешь (точнее, вы еще этого делать не умеете). Ответ наш таков: заполните пока 200 строк.
2 А теперь начинаем компьютерный эксперимент.
В качестве первого опыта выберите v = 600, h = 1300 и А = 0. Это означает, что тело начинает свое движение на высоте 1300 м со скоростью 600 м/с и в горизонтальном направлении.
Тот, кто воспользовался программой, получил три столбика цифр. А те, кто использовал электронную таблицу, получили пять столбиков. Хватило ли строк, чтобы тело «долетело» до поверхности Земли? Если нет, скопируйте еще строки столько раз, сколько окажется необходимым.
3 Сравните, одинаковое ли получилось время «приземления». А «дальность» полета? Надеемся, что результаты у вас оказались близкими независимо от использовавшейся технологии. Если нет, то разберитесь, у кого ошибка.
и 236
Разглядывая столбики цифр, вы должны были еще раз убедиться в том, что человек лучше приспособлен к восприятию визуальной информации, нежели символьной. Мы знаем теперь, сколько времени продлится «полет» и как далеко «улетит» тело, но проанализировать характер движения уже весьма непросто.
Потребуем от компьютера, чтобы он изображал получаемые данные в виде графика. Чтобы осуществить это в программном варианте, потребуются графические операторы. Некоторые из них приведены в таблице КП.7.
Операторы включения графики, очистки экрана и назначения системы координат должны стоять в самом начале программы. После них, пользуясь оператором построения отрезка, можно создать на экране систему координат. А вот построение самого графика — это фактически замена в программе оператора Сообщить оператором вывода на экран точки с нужными координатами.
В случае применения электронной таблицы построение графика надо поручить самой таблице. Напомним, как это делается.
Нас в первую очередь интересует траектория полета тела. Поэтому выделите столбцы, содержащие высоту и дальность, т. е. блок ячеек В2:С200 (или большее значение второго параметра при С, если потребовалось больше строк). Щелкните по кнопке Мастер диаграмм. Дальнейшие действия осуществляются по шагам в соответствии с указаниями Мастера диаграмм.
1) Выбор типа диаграммы. Выбираем тип Точечная. Выберите вид со сглаживанием. Щелкните по кнопке Далее.
2) Выбор источника данных. Фактически вы этот шаг выполнили выделением блока ячеек. Но если что-то не устраивает (например, диапазон участвующих ячеек), можно поменять, не выходя из Мастера диаграмм. Щелкните по кнопке Далее.
3) Выбор параметров. Здесь вы можете сделать все поясняющие надписи, установить или отменить линии сетки и т. п. Щелкните по кнопке Далее.
4) Выбор места размещения. Обычно размещают на том же листе, где и данные для графика. Отметьте этот вариант и щелкните по кнопке Готово. У вас на экране появится траектория движения тела,
4 Если вы использовали программу, то модифицируйте ее соответствующим образом и отладьте. Для электронной таблицы постройте график, как показано выше.
5 Поэкспериментируйте с разными значениями начальной скорости и начальной высоты. Похожи ли, на ваш взгляд, полученные графики на привычную параболу?
|> Мнения, скорее всего, разделились. Чтобы ответ стал более очевидным, попробуем «бросать» тело под ненулевым углом к горизонту. Но надо иметь в виду, что угол мы измеряем в градусах, а функции синус и косинус воспринимают аргумент в радианах.
237
Компьютерный практикум
Таблица КП. 7
Назначение Qbasic Pascal
Включение и завершение графического режима SCREEN 12 Uses Graph; Var gd,gm:integer; Begin gd:=detect; lnitGraph(gd,gm,’BGr); (Вместо ‘BGI’ должен стоять путь к папке, где расположен графический инициализатор egavgabgi, но обычно это папка BGI в корне Паскаля) CloseGraph; End
Очистка экрана CLS
Назначение новой системы координат WIND0W(X1,Y1)-(X2,Y2) (XI — значение абсциссы самой левой точки экрана, Х2 — значение абсциссы самой правой точки экрана, Y1 — значение ординаты самой левой точки экрана, Y2 — значение ординаты самой правой точки экрана)
Изображение точки заданного цвета PSET(X,Y),Z (X — абсцисса точки, Y — ордината точки, Z — номер цвета; числу 0 соответствует черный цвет, 1 — синий, 4 — красный, 15 — белый) PutPixel(X, Y, Z); (X — абсцисса точки, Y — ордината точки, Z — номер цвета; числу 0 соответствует черный цвет, 1 — синий, 4 — красный, 15 — белый)
Изображение отрезка с заданными концами LINE(X1,Y1)-(X2,Y2),Z (X1;Y1 — координаты одного конца отрезка, Х2, Y2 — координаты другого конца отрезка, Z — номер цвета) line(Xl,Yl,X2,Y2); (X1;Y1 — координаты одного конца отрезка, X2.Y2 — координаты другого конца отрезка)
Для перевода из градусов в радианы в Excel есть специальная функция РАДИАНЫ(д:). Чтобы вычисления были правильными, в ячейки D2 и Е2 надо ввести формулы 65*81К(РАДИАНЫ(66)) и 65*С08(РАДИАНЫ(66)) соответственно.
238
Траектория снаряда
Рис. КП.2 Движение тела под углом 45° с начальной скоростью 600 м/с
Траектория снаряда
Рис. КП.З Движение тела под углом 30° С начальной скоростью 600 м/с
6 Теперь проведите вычисления при и = 600, h = 0 и А = 45. Траектория получилась такой, как на рисунке КП.2. На параболу эта линия не похожа.
7 Еще один эксперимент — А = 30. Траектория для этого случая показана на рисунке КП.З.
► Мы уверены, что результаты, полученные вами, дают такую же картину. Обратите внимание: горизонтальная составляющая скорости с течением времени стремится к нулю, движение становится практически отвесным (т. е. тело перестает перемещаться в горизонтальном направлении), а сама скорость становится практически постоянной. Иными словами, с течением времени движение в среде с сопротивлением становится практически вертикальным и равномерным. Вот какой удивительный факт мы обнаружили в результате компьютерного моделирования данного процесса.
Равномерность движения тела в среде с сопротивлением означает, что сила тяжести уравновешивается силой сопротивления среды. Иными словами, при таком движении имеет место равенство
mg - mkv^ = 0.
Отсюда Таким образом, скорость тела, движущегося
в среде с сопротивлением, с течением времени должна быть все
ближе к величине
8 Проверьте, выполнено ли приближенное равенство ~
в расчетах при достаточно долгом движении тела в среде с сопротивлением. Если оно наблюдается, то это важный аргумент в пользу адекватности построенной нами компьютерной модели.
239
Компьютерный практикум
► Конечно, наш компьютерный эксперимент не доказывает, что обнаруженное с его помощью свойство движения тела в среде с сопротивлением имеет место всегда. И сколько бы экспериментов с различными начгшьными условиями мы ни провели, всегда будет грызть червячок сомнения, а вдруг при каких-то начальных данных обнаруженное свойство отсутствует.
И тут на помощь физике приходит математика. Именно в математике разработаны методы исследования поведения функции. На уроках математики вы учились для функций, заданных какой-либо формулой, исследовать ее поведение и строить график. В нашем случае никакой формулы, определяющей зависимость скорости от времени, нет; есть только некоторые соотношения, связывающие скорость и ускорение. Математики разработгши методы, позволяющие по таким соотношениям определять, какими свойствами обладает функция. В рассматриваемом случае можно доказать, что обнаруженные свойства справедливы при любых начальных значениях высоты, скорости и угла наклона.
В результате исследования движения в среде с сопротивлением мы пришли к выводу, что со временем это движение становится близким к равномерному движению. Не означает ли это, что можно было с самого начала считать модель равномерного движения вполне адекватной данному процессу? Подумайте над этим вопросом и постарайтесь дать аргументированный ответ. Продолжим компьютерный эксперимент.
9 Попытайтесь выяснить, при каком угле наклона дальность полета будет наибольшей. Начальная скорость и начальная высота прежние: v = 600, Л = 0. Для этого можно применить метод деления пополам или воспользоваться режимом электронной таблицы Поиск решения.
У нас получилось « 29°. А какой ответ у вас?
10 А теперь попробуем выяснить, какова начальная скорость снаряда из задания 3 § 19. Для этого воспользуйтесь вашим решением задачи 3 из § 20.
11 Если вам хочется узнать, насколько нагревается тело во время полета в среде с сопротивлением, реализуйте компьютерную модель, созданную вами при выполнении задания 4 из § 19.
Лабораторная работа 12 (к §21)
в § 21 описаны две модели роста популяции живых организмов. Проведем с ними компьютерный эксперимент. И снова здесь можно применить две технологии: электронные таблицы и язык программирования. Чтобы было интереснее, разделитесь в классе так.
! Природная Коэффи-
1 зона циент к
I Тундра 0,6
j Тайга 1.8
1 Степь 1,2
1 Пустыня L_ 0,8
Таблица КП. 8 чтобы одна часть из вас работала с электронной таблицей, а другая — с языком программирования. Ниже мы приводим задания, описывая их выполнение с помощью электронной таблицы. Надеемся, что выполнить те же задания, используя программу, составленную при выполнении задания 5 из §21, для вас не составит труда.
Для проведения компьютерного эксперимента надо знать исходные данные: М(0), k, а, L. В качестве М(0) возьмем массу, равную 1. В конце концов для нашего эксперимента совершенно безразлично, будет ли это 1 грамм, или 1 тонна, или 1 мегатонна. Аналогично величина верхней границы L тоже не имеет принципиального значения. Пусть L будет, например, 11000. А вот коэффициент прироста весьма существенный параметр процесса. Поэтому предусмотрительно запасемся значениями коэффициента к, экспериментально полученными учеными-биологами для растений в разных природных зонах (мы уже отмечали, что не играет роли, какие именно живые организмы рассматриваются в этой модели, пусть это будут растения). Значение к для различных природных зон приведено в таблице КП.8.
Теперь, используя эти числа, попытайтесь предсказать, через сколько лет масса растений превысит 100, если первоначально масса растений на некотором участке была всего 1. Запишите ваш прогноз, чтобы потом сравнить его с результатом, полученным на компьютере.
Осталось определить коэффициент а. Из формулы к(,п) = = a(L - М(п)) видно, что для нахождения коэффициента а достаточно разделить fe(0) на L - М(0). В свою очередь, число А(0) — это коэффициент прироста в самом начале процесса, и потому его нужно взять равным числу к из таблицы КП.8.
Приступим к компьютерному эксперименту.
1 Загрузите электронную таблицу и занесите в нее необходимые
данные так, как показано в таблице КП.9.
^ Как же узнать, через сколько лет масса растений в тундре превысит 100 т? Представим, что в таблице заполнены все строки, начиная с 7-й. Тогда достаточно в столбце С найти ячейку, когда первый раз встретится число, большее 100, и в той же строке в первом столбце мы увидим год, в котором масса растений превысит 100 т. Точно так же можно поступить со столбцами, в которых отображена информация для других природных зон.
Конечно, заполнить все строки таблицы сразу слишком трудоемкая да, наверно, и ненужная работа. Проще поступить так: последовательно копировать блок ячеек А7: J7 в последующие строки.
CD
I
Ю
Таблица КП. 9
■>U. '«"t'- A В г: 'с^ ■ п"' *' ” Е '''
год Природная зона Тундра Тайга
fe'M Тип модели Неогр. Огран. Неогр. Огран.
1^- Коэффициент размножения k 0,6 0,6 1,8 1.8
Предельное значение массы L 11000 11000
Шй Коэффициент а D3/(D4-D6) F3/(F4-F6)
9^*1; ^ M 0 Начальная масса М(0) 1 1 1 1
A6+1 Масса через 1 год С6*(И-СЗ) D6*(H-D5*(D4-D6)) Е6*(1-ЬЕЗ) F6*(H-F5*(F4-F6))
1^^ A7+1 Масса через 2 года С6*(И-СЗ) D7*(H-D5*(D4-D7)) Е6*(И-ЕЗ) F7*(1-I-F5*(F4-F7))
A8+1
0 S a г
5
H
Ф
■o
X
г
X(
a
■o
Q
X
H
X
X
1
I 242
(Подумайте, адреса каких ячеек при таком копировании не должны меняться.) Как только во всех столбцах С, D, Е, F, G, Н, I, J возникнут числа, большие 100, копирование можно прекратить. ■<
2 Проделайте указанную работу с таблицей. Для каждой природной зоны запишите год, когда произошло превышение числа 100. Сравните получившиеся данные с вашим прогнозом, записанным ранее.
3 Теперь после первого опыта попробуйте угадать, когда масса растений станет равной 1000 т.
► Проверьте свой прогноз с помош;ью электронной таблицы или программы. (Интересно, улучшились ли ваши прогностические способности?)
Скорее всего, теперь ваш прогноз оказался завышенным (как и у авторов этой книги, проводивших такой же компьютерный эксперимент). Удивительный факт, не правда ли: масса увеличилась в 10 раз, а на ее «производство» потребовалось всего лишь два-три дополнительных года. Полученные результаты тоже запишите к себе в тетрадь.
На следующее «удесятерение» массы живых организмов в модели неограниченного роста понадобится тоже два-три года (убедитесь в этом сами и внесите результаты в таблицу). ■<
4 Каждая современная электронная таблица позволяет автоматически построить график зависимости между величинами, вычисленными с ее помощью. Воспользуйтесь этой возможностью и постройте графики зависимости массы растений от числа прошедших лет (для каждой из природных зон). Какие общие особенности этих графиков вы смогли обнаружить?
► Разница в поведении этих моделей налицо. В модели ограниченного роста время «удесятерения» растет, причем быстрее для тех растений, где коэффициент k меньше. Это неудивительно: чем медленнее рост, тем больше времени требуется для «удесятерения» массы. Этот качественный анализ различий между моделями неограниченного и ограниченного роста мы в следующей лабораторной работе дополним количественным анализом.
Лобороторноя робота 13v (к ]§22)
Исследовать модель неограниченного роста на адекватность мы будем уже при известных нам параметрах: значение k возьмем 1,8 (как для тайги), а L будем считать равным 11000.
1 Заполните электронную таблицу, как показано в таблице 3.2 из § 22, и внесите исходные данные. Последовательно копируя
243
Компьютерный практикум
блок A4:D4 в последующие строки, найдите, в какой год отклонение превысит границу 10%. (При этом не забудьте указать электронной таблице, адреса каких ячеек не должны меняться при копировании.)
Теперь исследуйте значение k, равное 1,2.
2 Скопируйте блок B1:D... (здесь вы должны указать номер последней заполненной строки в таблице), начиная с клетки F1. Запишите в F1 коэффициент 1,2. В каком году отклонение превысит границу 10% ? Пришлось ли вам еще копировать строки? Уже эти два компьютерных эксперимента показывают, что с уменьшением k граница п отодвигается.
3 Для подкрепления этого вывода проведите компьютерный эксперимент еще и при Л = 1.
► Теперь можно исследовать, как граница адекватности зависит от величины L. Общие соображения подсказывают, что с ростом L граница п должна увеличиваться. Но каков характер этой зависимости? Давайте, к примеру, удвоим значение L.
4 Введите удвоенное значение L при Л = 1.
Посмотрите, граница отодвинулась на один год.
5 А если еще раз удвоить? Проведите этот эксперимент.
Опять граница отодвинулась на один год.
6 А если исходное L уменьшить вдвое? Проведите эксперимент при L = 5500 (но по-прежнему Л = 1).
► Эффект тот же самый — теперь граница п уменьшилась на 1. Напрашивается гипотеза, что L образует геометрическую прогрессию относительно границы адекватности п. Если вспомнить формулу общего члена геометрической прогрессии, то получим
L = b-2""S
где Ъ — некоторый коэффициент. Найти этот коэффициент нетрудно — достаточно разделить L на соответствующую степень 2.
Задумаемся, однако, над полученной формулой. Ведь в общей формуле для L, наверно, еще должно участвовать k. Учитывая, что при Л = 1 выполнено соотношение 2 = 1 4- Л, можно предположить, что
Ь = Ы1 + kf-^.
Осталось найти Ъ и убедиться, что этот коэффициент практически не зависит от k.
7 Найдите Ь при L = 5000 при различных k: 1; 1,2; 1,5; 2. Убедитесь, что во всех случаях Ь ~ 8.
► Итак, наши компьютерные эксперименты показали, что моделью неограниченного роста можно пользоваться с уровнем по-
9*
I 244
грешности 10% при выполнении условия L > 8(1 + fe)" “ Тот, кто знает, как решаются показательные неравенства, легко получит явное выражение для п, показывающее, как долго можно пользоваться моделью неограниченного роста при заданных L (предельный уровень массы живых организмов) и k (коэффициент ежегодного прироста). Вот эта формула:
_ ^ , lg(0,125L)
л ^ 1 Н-г—г:--7Т—.
lg(l + k)
Цель, поставленная в начале лабораторной работы, достигнута. Но мы надеемся, что вы в ходе выполнения этой работы научились большему. Вы наблюдали, как с помощью средств информационных технологий исследуется характер зависимости между различными переменными, выдвигаются, а затем проверяются в компьютерном эксперименте гипотезы о формуле для этой зависимости. Здесь и сейчас вы получили первый опыт этой интересной исследовательской деятельности.
Возможно, не всех устроил наш поиск на глазок коэффициента Ь, да и уверенности в выражении 1 4- тоже нет. Вот только характер зависимости L = Ь(1 4- sfe)" “ ^ сомнений не вызывает. Поступим так. Прологарифмируем это равенство и обозначим IgL через у, Igb - (1 4- sk) через с, а. 1 + k через d. Получаем зависимость у = с + dn. Это линейная зависимость, для которой из экспериментальных данных требуется подобрать коэффициенты cud. Вспомните, такую задачу мы обсуждали в § 13, а о ее компьютерной реализации рассказали в лабораторной работе 6.
8 Организуйте подбор коэффициентов end одним из описанных ранее способов. По полученным значениям end найдите коэффициенты bus. Значительно ли отличается Ь от 8, а s от 1?
■ъ
Лабораторная работа 14 (к § 23)
1 Как сказано в § 23, компьютерная модель эпидемии гриппа строится на основе модели ограниченного роста. Реализуйте сначала компьютерную модель, описываемую формулой
В(п + 1)
А
1 + k
L - В(п)
В(п).
V
2 Проведите с ней эксперимент.
► Этот эксперимент показал, что модель неадекватна реальной ситуации: все болеют и болеют, эпидемия никак не заканчивается. Причина неадекватности понятна — не учли существенный фактор, что люди выздоравливают. -4
245
Компьютерный практикум
3 Корректировка модели проведена в объяснительном тексте § 23. Постройте соответствующую компьютерную модель и проведите с ней эксперимент. Для наглядности постройте графики, отражающие количество больных в разные дни эпидемии.
Лабораторная работа 15 (к §25)
Любой пользователь с доверием относится к программному обеспечению компьютера, которым он пользуется. Однако, как говорится, доверяй, но проверяй. Мы вовсе не призываем вас с недоверием относиться к широко применяемым инструментам информационных технологий. Но надо помнить, что датчики слз^айных чисел всего лишь моделируют слз^айность, и потому совсем не факт, что псевдослучайная последовательность, которую вырабатывает стандартный ДСЧ, годится для решаемой вами задачи.
Между тем нетрудно проверить, хороша ли вырабатываемая ДСЧ псевдослучайная последовательность.
Есть такая игра — «Орлянка». Условия игры таковы: берут монетку и подбрасывают ее. Если выпадает орел, то выигрывает один игрок, если решка — выигрывает другой.
А теперь смоделируем эту игру с помощью ДСЧ. Поскольку датчик вырабатывает числа от О до 1, то договоримся так: если получается число, меньшее 0,5, то, значит, выпадает орел, а в противном слз^ае — решка.
Тем самым алгоритм таков:
Алгоритм Орлянка
цел: а, к, п; веш: х;
{ Запросить п; (* число подбрасываний монеты *)
а := 0;
Делать от fe := 1 до га
{ X := rand(l);
Если X < 0,5 IQ { а := а + 1; }
}
Сообщить "Число выпадений герба", а;
Сообщить "Частота выпадения герба", а/га;
Для перевода этого алгоритма на язык Бейсик надо использовать два новых для вас оператора RANDOMIZE и RND. Первый оператор инициализирует датчик случайных чисел. Он пишется один раз в самом начале тела программы, если в ней предполагается использовать ДСЧ. Но если вы просто напишете оператор RND, то, выполняя его, компьютер запросит у вас первое слз^ай-ное число. Чтобы этого не происходило, вы можете сразу после оператора через пробел написать какое-нибудь число. Но тогда RND
246
будет всегда генерировать одну и ту же случайную последовательность. Это удобно для отладки программы (помните, мы обсуждали это в § 24), но совершенно не годится при моделировании случайных процессов. Поэтому обычно пишут так:
RANDOMIZE TIMER
В этом случае каждый раз, выполняя программу, компьютер в качестве начального значения будет брать текущее время. Ясно, что оно всегда разное, так что и псевдослучайные последовательности будут получаться тоже разными.
Что касается оператора RND, то его надо писать вместо каждого употребления оператора rand(l) в наших алгоритмах.
В языке Паскаль используются аналогичные операторы: Randomize и Random(a). Первый из них инициализирует датчик случайных чисел и задает первое число, определяемое внутренним временем компьютера. Второй оператор задает целое случайное число в промежутке [0; а).
А теперь заполните таблицу по образцу таблицы КП. 10. У нас она получилась такой (использовался стандартный датчик фирмы Microsoft, имеющийся в языке QBasic, входящем в систему MS DOS версии 5.0).
Таблица КП. 10
Количество бросаний, п Количество выпадений герба, а Частота выпадений герба, а/п
10 5 0,5
50 22 0,44
100 48 0,48
200 85 0,425
500 254 0,508
1000 498 0,498
2000 1000 0,5
5000 2470 0,494
10000 5031 0,5031
20000 10102 0,5051
50000 24790 0,4958
100000 50216 0,50216
Наверное, у вас получилась другая таблица. Но мы уверены, что в третьем столбце и у вас записаны числа, близкие к 0,5. Для вас это не должно быть удивительным (если вы выполнили задание 5 б из § 24) — есть два равновозможных исхода, так что вероятность выпадения герба равна 0,5.
Чем же может помочь нам эта таблица? Ясно, что совсем плохой датчик будет все время давать частоту 0,5 — это полное отсут-
247
Компьютерный практикум
ствие случайности: через раз выпадает герб, через раз — решка. Идеальный датчик должен выдавать отклонения от этой частоты. Оказывается, известно, каким должно быть это отклонение для идеального датчика. Степень удовлетворительности того или иного датчика определяется тем, с какой вероятностью отклонение, получившееся у проверяемого датчика, может быть у идеального. Иными словами, при оценке качества мы имеем дело с функцией, связывающей три параметра: п — число бросаний;
d — отклонение среднего числа выпадения герба от 0,5; р — вероятность того, что для идеального ДСЧ отклонение будет не меньше чем d.
Нужную нам формулу еще в начале XIX века получил французский выдающийся математик Пьер Симон Лаплас:
р = 2(1 - Ф(2d^/n)).
В этой формуле фигурирует функция Ф(х), известная математикам еще до Лапласа, которая называется нормальной функцией распределения. Формула для этой функции использует математические символы, которые вам еще неизвестны. Но сама формула нужна лишь в теоретических исследованиях, а нам достаточно таблицы значений, которая есть в любом справочнике по математике. А вы можете получить ее значение, например, записав в ячейке электронной таблицы Excel формулу =НОРМСТРАСП(А1), если в ячейку А1 записан аргумент функции Ф(л:). Для данных, приведенных в таблице КП. 11, получаем следующие результаты:
Таблица КП. 11
Количество Частота Отклонение, X = 2d'Jn р = 2(1 - Ф(2й7л))
бросаний, п выпадений герба, а/п d
10 0,5 0 0 1
50 0,44 0,06 0,85 0,396
100 0,48 0,02 0,4 0,689
200 0,425 0,075 2,12 0,034
500 0,508 0,008 0,36 0,721
1000 0,498 0,002 0,13 0,899
2000 0,5 0 0 1
5000 0,494 0,006 0,85 0,396
10000 0,5031 0,0031 0,62 0,535
20000 0,5051 0,0051 1,44 0,149
50000 0,4958 0,0042 1,88 0,060
100000 0,50216 0,00216 1,378 0,172
I 248
Какой вывод можно сделать? Хорош ли наш датчик?
Давайте рассуждать. Если, скажем, р получилось равным 0,89, то это значит, что в 89 случаях из 100 идеальный датчик будет давать отклонение большее, чем наш. Иными словами, наш датчик недостаточно случаен.
А если р = 0,15, то наш датчик опять плох — такое и большее отклонение идеальный датчик дает всего лишь в 15 случаях из 100.
Значит, для хорошего датчика значение р должно быть близким к 0,5, скажем, попадать в интервал от 0,3 до 0,7. У нас в таблице КП. 11 таких случаев всего лишь 4 из 12. Более того, с ростом п ситуация не улучшается. Видно, наш датчик хоть и фирменный, но не слишком хороший. Возможно, вам повезло больше (мы специально взяли довольно старую версию программного обеспечения и в следующих лабораторных работах пользовались более надежными ДСЧ).
Лабораторная робота 16 (к § 26) Компьютерная модель системы
в объяснительном тексте § 26 построена модель системы массового обслуживания покупателей в магазине. Более того, выполнив задание 7, вы написали программу, позволяющую проводить компьютерный эксперимент.
1 Отладьте эту программу.
2 Проведите компьютерный эксперимент для предложенных ниже вариантов исходных данных.
1) = 4; Го = 0,5; Г^ = 2; Fo = 3,5; Fi = 6; m = 3;
2) No = 10; Го =1; = 3,5; Fo = 4; Fi = 10; m = 3;
3) No = 6; Го = 1; Г^ = 3,5; Fo = 4; Fi = 8; m = 3;
4) какие-нибудь свои данные. 3 Запишите результаты в таблицы. подобные таблицам 3.6—3.8
из объяснительного текста § 26.
Г
Лабораторная работа 17 (к §26)
Приступим к компьютерному моделированию броуновского движения частицы. Выполнив задание 8 из § 26, вы построили две модели броуновского движения: в пункте а — с постоянной скоростью движения и в пункте б — со случайной скоростью движе-
249
Компьютерный практикум
ния. Сначала рассмотрим первую модель. Как и раньше, компьютерное моделирование может быть выполнено либо средствами языка программирования, либо с помощью электронной таблицы.
Если вы предполагаете воспользоваться языком программирования, то программу можете составить в соответствии с алгоритмом, который приведен ниже.
Алгоритм
веш: V, X, у, f; цел; п, I; { Запросить и;
Запросить п;
X := 0;
У := 0;
Делать от / = 1 до п
{ f := 2*3.14*rand(l);
(* скорость частицы *) (* количество толчков *) (* начальное значение абсциссы *) (* начальное значение ординаты *)
}
}
(* вычисление случайного угла, определяющего очередное направление движения *) л: := х -I- y*cos(/); (* вычисление нового значения абсциссы *)
у •.= у + u*sin(/); (* вычисление нового значения ординаты *) Сообщить "Абсцисса частицы", х, ", ордината частицы", у,
(* конец цикла *)
Если же вы намерены использовать электронную таблицу, то прежде всего уточните, как в ней реализуется получение последовательности случайных чисел. В Excel она получается с помощью оператора СЛЧИС(). Подробную информацию о том, как работает этот оператор, вы можете получить, заглянув в Справку. Вот как можно заполнить таблицу, чтобы реализовать данную модель:
Таблица КП. 12
А- / ,
т Время Абсцисса Ордината
2 0 0 0
А2Ч-1 B2-l-D2*COS(D3) B2-I-D2*SIN(D3) 2*ПИ()*СЛЧИС()
4. АЗ-1-1 B3-l-D2*COS(D3) B3-I-D2*SIN(D3)
5 A4-I-1 B4-l-D2*COS(D3) B4-I-D2*SIN(D3)
... ... ... ...
Проведите компьютерный эксперимент с моделью броуновского движения с постоянной скоростью для п = 100. Используя средства изображения зависимостей, вычертите траекторию частицы. Далеко ли ушла частица от своего начального положения?
250
Рис. КП.4 Траектория частицы при п = 100
2 Повторите компьютерный эксперимент с тем же значением п.
3 А теперь проведите эксперимент для п = 200, 300, 400, 500, 600, 700, 800, 900.
4 Постройте график зависимости расстояния I, на которое ушла частица от начального положения, от п. Похож ли получившийся у вас график на график кгпсой-либо знгпсомой вам функции?
^ В наших экспериментах зависимость получилась похожей на
функцию I = а-у/л. Коэффициент а мы не сообщаем специально. Если и у вас график оказался похожим на график такой функции, найдите этот коэффициент (методом наименьших квадратов или методом наименьших отклонений).
Перейдем к исследованию второй модели броуновского движения — случайной величиной является не только направление движения, но и скорость. Внесите нужные изменения в алгоритм и/или в заполнение электронной таблицы.
5 Проведите компьютерный эксперимент с этой моделью для п = 100. На рисунке КП.4 приведены три такие траектории при указанном значении п. У вас траектории получились иные.
6 Проведите компьютерный эксперимент для п — 200, 300, 400, 500, 600, 700, 800, 900. Найдите и для этой модели зависимость расстояния I (ут п.
► Еще две траектории, полученные нами при п = 500, изображены на рисунке КП.5.
Но наблюдение за траекториями еще не дает значительной информации, хотя можно заметить, что каждая из траекторий на рисунке КП.4 умещается в квадрате со стороной 10. А для траекторий на рисунке КП.5 получается аналогичный квадрат со стороной 20. Но поскольку все направления равноправны, то более естественно говорить не о квадрате, а о круге, внутри которого располагается
251
Компьютерный практикум
Рис. КП.5 Траектория частицы при п = 500
траектория. В мире случайного возможно, что частица вообще будет двигаться в каком-то одном направлении, но это маловероятно.
Попытаемся оценить величину радиуса круга, содержащего траекторию, в зависимости от числа шагов п. Иными словами, мы хотим решить следующую задачу: ^Имеется несколько точек на плоскости. Найдите круг наименьшего радиуса, содержащий все данные точки*.
Мы будем считать, что точки заданы своими координатами. Поэтому для решения задачи требуется найти координаты центра окружности, при которых радиус принимает наименьшее значение. В § 13 мы обсуждали похожую задачу для двух переменных, но там зависимость была линейной. Здесь эта зависимость более сложная, поэтому и метод решения намного сложнее. Его мы здесь излагать не будем, но у вас есть подходящий инструмент решения подобных задач — надстройка Поиск решения в электронной таблице Excel. Как применять этот инструмент, описано в лабораторной работе 6.
7 Подготовьте заполнение электронной таблицы для расчета указанных величин. А теперь, проводя компьютерные эксперименты, вычислите в каждом из них отношение квадрата радиуса R наименьшего круга к числу шагов п. Впишите полученные результаты в таблицу.
п 100 200 300 400 500 600 700 800 900
R^/n
^ Числа в клетках получились различные, но обратите внимание, что у многих в классе они близки к одному и тому же числу. Запишите открытую вами згнсономерность подходящей формулой.
I 252
Пз Лабораторная работа 18 (к §27)
Вычисление площадей и объемов методом Монте-Карло.
]^рде|щр1рщанце
Познакомившись в § 27 с применением метода Монте-Карло для вычисления плош;ади произвольной фигуры, некоторые из вас могли усомниться, можно ли с помош;ью вероятностной модели получить достаточно точный результат для такой вполне определенной величины, какой является плош;адь фигуры. На подобные вопросы отвечает специальный раздел математики — теория вероятностей. Математиками доказано, что метод Монте-Карло действительно применим для нахождения плош;адей фигур.
Конечно, применяя этот метод, вы получите значение плош;а-ди лишь приближенно. Но при вычислении по тем или иным формулам (например, плош;ади поверхности прямоугольного стола) вы все равно обязаны провести какие-то измерения, а они-то всегда имеют определенную погрешность. На величину этой погрешности влияет такое большое количество разнообразных и трудноучитыва-емых факторов, что можно считать ее случайной величиной. Так что от случайности в нашем мире никак не избавиться. А вот компьютерный эксперимент поможет вам убедиться, что метод Монте-Карло дает вполне хорошие результаты.
1 Первый эксперимент по нахождению плош;ади круга проведем, используя алгоритм, записанный в объяснительном тексте § 27. По результатам эксперимента заполните таблицу.
Число точек, N 1000 5000 15 000 50 000 100 000
Площадь, S
► Вы легко подсчитаете без эксперимента, что плош;адь круга единичного радиуса равна я (я ~ 3,14159265358979). Число, близкое к этому, должно было получиться в вашем эксперименте. При каком из указанных значений N совпали первые три знака после запятой?
Проводя эксперимент для N = 100 000, вы, наверно, заставили компьютер снова 100 000 раз исполнить тело цикла. Но ведь у вас уже был готовый результат для первых 50 000 исполнений. Зачем же так непроизводительно тратить компьютерное время?
2 Модифицируйте алгоритм (а затем и программу) так, чтобы можно было использовать уже имеюш;иеся результаты вычис-
253
Компьютерный практикум
лений для получения новых. В возможности такого постепенного наращивания результатов, в частности, состоит важное преимущество метода Монте-Карло перед другими вычислительными методами.
3 А теперь с помощью метода Монте-Карло найдите площади фигур, о которых говорится в задании 1 из § 26. Сообщим, что для
первой фигуры результат должен быть близким к для вто-рой — к —, а площадь третьей фигуры вы легко найдете сами.
► Метод Монте-Карло можно применить и для вычисления объема тела. Для этого тело надо поместить в куб или прямоугольный параллелепипед и выбрать подходящим образом систему координат. Теперь каждая точка, случайным образом бросаемая в этот параллелепипед, задается тремя своими координатами, т. е. вместо двух чисел нужно генерировать три случайных числа.
4 Составьте математическую модель, алгоритм и программу для вычисления объема шара единичного радиуса.
► Эллипсоидом называется тело, полученное из шара растяжением вдоль координатных осей. Если исходный шар имел единичный радиус, а его центр находился в начале координат, то после растяжения вдоль оси Ох в а раз, вдоль оси Оу в Ь раз и вдоль оси Oz в с раз получается эллипсоид, точки которого удовлетворяют неравенству
1-2 7у2 ^2
Такой эллипсоид полностью содержится в параллелепипеде, задаваемом неравенствами -а < л: < а, -6 < г/ < 6 и -с < э < с.
5 Найдите методом Монте-Карло объем этого параллелепипеда при а = 2, 6 = 3ис = 4. Сравните полученное значение со зна-
4
чением объема, вычисляемого по формуле = —nabc.
О
6 Проведите расчеты для задачи 3 из § 27. Ваш ответ должен быть близок к 0,234375. В задаче 4 результат должен быть
близок к
24
► Это не совпадает с вероятностью события, которое описывается поговоркой «Бабушка надвое сказала», т. е. с вероятностью 0,5, но довольно близко к этому числу.
7 Напоследок желаем успеха в реализации проектов, предложенных вам в заданиях 5 и 6.
254
*ъ
Лабораторная работа 19 {к §3^ и 33)
,Кс||М1п^и||:е|^|,<^^41^<^овры1еда^
Составление таблицы истинности для заданной логической формулы — дело, весьма далекое от творчества. Так почему бы не поручить его компьютеру? Как всегда, это можно сделать и с помощью алгоритмического языка, и с помощью электронной таблицы. Сейчас мы предложим вам вариант использования Excel, а программу для нахождения таблицы истинности вы разработаете самостоятельно.
1 Рассмотрим для примера формулу (А V Б & (А V С)). Подготовим заполнение электронной таблицы по образцу таблицы КП. 13.
Таблица КП. 13
А ^ . в ■ 1# ФМ
1 А в с (А V в & (А V С))
ИСТИНА ИСТИНА ИСТИНА =НЕ(А2;ИЛИ(В2;И(А2;ИЛИ(НЕ(С2)))))
ш Ш, ИСТИНА ИСТИНА ложь =НЕ(АЗ;ИЛИ(ВЗ;И(АЗ;ИЛИ(НЕ(СЗ)))))
ИСТИНА ЛОЖЬ ИСТИНА ...
Ш ИСТИНА ложь ложь ...
ЛОЖЬ ИСТИНА ИСТИНА ...
ЛОЖЬ ИСТИНА ложь ...
ЛОЖЬ ЛОЖЬ ИСТИНА ...
9 ложь ложь ложь ...
Отметим, что в столбцах А, В и С вместо слов ИСТИНА и ЛОЖЬ можно писать 1 и О соответственно.
В столбце D вы получили значения рассматриваемого выражения при всевозможных наборах значений переменных А, В и С, т. е. на вашем экране расположилась искомая таблица истинности этой логической формулы.
А теперь в столбец Е введите формулы, позволяющие находить для тех же наборов значений переменных А, Б и С значение
А & Б & С.
Вы видите, что таблицы истинности для этих формул совпали. Значит, эти формулы равносильны!
Выясните аналогичным образом, равносильны ли логические формулы в следующих парах:
1) А&Б&СУА&Б&СУБ&С и (AV В) & С;
2) (А & Б — С) & (Б & С — А) и А & С — Б;
255
Компьютерный практикум
6
3) A&BWC и C-^AVC-^B;
4) (AV В) & (А & С) & {В VC) и А ^ С.
А теперь с помощью электронной таблицы решите задачу, похожую на ту, которая разобрана в объяснительном тексте § 33.
Задача. В нарушении правил торговли подозреваются четыре работника магазина: Антонов, Борисов, Васильев и Денисов. Торговая инспекция выяснила:
1) если Антонов нарушал правила, то вместе с Борисовым;
2) если Борисов нарушал правила, то Васильев нарушал или Антонов не нарушал;
3) если Денисов не нарушал правила, то Антонов нарушал, а Васильев не нарушал.
Кто из подозреваемых наверняка нарушал правила торговли?
Обозначьте простые высказывания «Антонов нарушал правила», «Борисов нарушал правила», «Васильев нарушал правила» и «Денисов нарушал правила» логическими переменными и составьте высказывание, описывающее вскрытые торговой инспекцией факты.
Заполните электронную таблицу так, чтобы получилась таблица истинности для составленного вами высказывания. Поскольку логических переменных четыре, то эта таблица будет содержать 16 строк. С ее помощью ответьте на вопрос задачи.
Дополнительное расследование показало, что если Денисов нарушал правила, то и Борисов нарушал. Выясните, изобличает ли эта информация кого-то еще в нарушении правил и если да, то кого именно.
Лабораторная р^о^а^0 (к §37) ~
Выполнив задание 6 из § 34, вы подготовили две таблицы: одна из них содержит информацию о нагрузке учителей (ее атрибуты — Фамилия, Класс, Предмет), другая — о расписании (ее атрибуты — Класс, Предмет, День недели. Номер урока).
1 Создайте эти таблицы в рамках одной базы данных. Вы это делаете не в первый раз, так что надеемся, что проблем у вас не будет. Впрочем, один вопрос наверняка возник: при создании таблицы СУБД Access предлагает какой-либо из атрибутов объявить ключевым. У вас в таблицах вряд ли будет хотя бы один атрибут, который может претендовать на роль ключа: учитель может вести уроки в разных классах, класс бывает на уроках у разных учителей, в каждом классе изучается много предметов и т. д. Так что на предложение СУБД придется ответить отказом.
I 256
► Теперь давайте обсудим, какие запросы мы хотели бы иметь возможность формулировать нашей базе данных. Например: ведет ли учитель Иванова уроки во вторник? (У вас фамилия учителя может быть другой.) Но тогда нам нужно использовать информацию из обеих таблиц. Как бы поступил человек в этой ситуации? Он в первой таблице нашел бы фамилию «Иванова», посмотрел бы, какой предмет она ведет, затем во второй таблице нашел этот предмет в тех строках, где указан «вторник». Иными словами, он соединил бы таблицы по атрибуту Предмет. Вот и мы поступим так же.
2 Выберите в меню Сервис пункт Схема данных. В открывшемся окне появился список таблиц, имеюш;ихся в данной БД. Выделите атрибут Предмет в таблице Нагрузка учителей и нажатой левой клавишей мыши перемеш;айте его на такой же атрибут в таблице Расписание. После совмеш;ения (об его успешности можно судить по изменению вида курсора мыши) отпустите клавишу мыши. Между атрибутами протянулась «веревочка»: связь установлена. Поскольку мы отказались объявить хотя бы один из атрибутов ключевым, то эта связь имеет тип «многие-ко-многим», хотя никаких значков «°о» на концах «веревочки» не появилось.
3 А теперь создайте запрос (с помош;ью бланка QBE), посредством которого для данного учителя можно было бы выяснить, в каких классах и в какое время (т. е. указать номер урока) он работает в заданный день недели. Мы предлагаем вам действовать в режиме Конструктора. Первым шагом надо в окно бланка QBE занести ваши таблицы. Для этого ш;елкните в поле окна правой клавишей мыши и в появившемся контекстном меню выберите пункт Добавить. Введите обе ваши таблицы, они изобразятся с установленной вами связью атрибутов. А теперь сформируйте нужный запрос и сохраните его под каким-либо именем.
4 Запустите запрос на исполнение и посмотрите на результат. Все ли получилось, как вы задумали? Если да, то поменяйте в запросе фамилию учителя, день недели. Попытайтесь получить аналогичную информацию не для одного учителя, а сразу для нескольких.
► Неуверенность в успехе, которая явно чувствуется в предыду-ш;ем абзаце, вполне обоснованна. Вернемся к рассмотрению действий человека и еш;е раз проанализируем ситуацию. После того как будет найден нужный предмет в строке, где указан «вторник», вполне может оказаться, что это урок не в том классе, в котором работает данный учитель. Ведь, к примеру, физику в одном 10 классе может вести один учитель, а в параллельном классе — совсем другой учитель. Если задуматься о теоретических причинах этого явления, то станет ясно, что она кроется в самом определении произведения отношений, которое, как мы говорили, лежит в основе понятия соединения таблиц.
257
Компьютерный практикум
Может быть, тогда нам соединить таблицы по атрибуту Класс? Давайте попробуем.
5 Снова вызовите режим Схема данных и сделайте изменение связи. Для этого проще всего навести курсор мыши на связующую атрибуты «веревочку» и щелкнуть правой кнопкой. В открывшейся таблице укажите, какие теперь атрибуты надо связать. Сохраните новую связь и начинайте эксперименты с запросами.
► Результат от сделанных изменений стал только хуже. Наш учитель теперь ведет вообще не свои предметы. Попытайтесь объяснить, почему так получилось.
Еще раз вернемся к действиям человека с этими двумя таблицами. Найдя во вторник нужный предмет, человек посмотрит, в каком классе этот урок проводится, и затем по первой таблице проверит, ведет ли данный учитель уроки в этом классе. Иными словами, связь между таблицами устанавливается не только по атрибуту Предмет, но и по атрибуту Класс.
6 Свяжите в ваших таблицах атрибуты Предмет и Класс.
Вот теперь на все запросы будут получаться корректные ответы.
► Обдумывая пройденный путь проб и ошибок, нетрудно сделать вывод, что успех нам обеспечило то обстоятельство, что набор двух атрибутов Предмет и Класс является ключом для первой таблицы. Не случайно разработчики данной СУБД настойчиво советуют искать ключевой атрибут при создании таблицы — это убережет от многих неприятностей. Если же назначить ключевой атрибут не удастся, нужно очень внимательно проектировать соединение таблиц.
И напоследок сделаем еще одно замечание. Мы соединяли атрибуты с одинаковыми именами. Конечно, это необязательно: в разных таблицах одно и то же содержание может иметь разные имена. Как писал У. Шекспир: «Роза пахнет розой, хоть розой назови ее, хоть нет». И СУБД Access допускает соединение таблиц по атрибутам с разными именами, если только у этих атрибутов одинаковый тип. Если же вы попытаетесь связать текстовый атрибут с числовым, то СУБД укажет вам на ошибку.
Лабораторная работа 21 (к §39)
1 Прежде всего надо создать те таблицы, которые описаны в тексте § 39, при этом полезно объявить ключевым атрибут Состояние в таблицах Имена, Вопросы и Текущее состояние.
2 Создаем запрос Варианты, который позволяет выбрать те дуги орграфа, по которым пользователь может двигаться из текущего состояния к следующему. Но предварительно надо со-
258
Рис. КП.6 Образец заполнения бланка запроса Варианты
единить таблицы Текущее состояние и Орграф, связав атрибуты Состояние и Начало.
3 Сформируйте запрос, руководствуясь рисунком КП.6.
4 Теперь нужно предложить пользователю выбрать одно из этих ребер и поместить Конец этого ребра в таблицу Текущее состояние. Все это мы реализуем с помощью формы с полем со списком. Эта форма будет иметь единственное поле, в котором и будет выпадать список доступных в данном состоянии ребер (рис. КП.7).
> Чтобы построить эту форму, надо вызвать Конструктор форм (рис. КП.8).
После щелчка по кнопке ОК появляется Конструктор форм и панель элементов. На рисунке КП.9 показано, как выглядит
Щелкните мышью по стрелочке Появится список вариантов ответов. Выберите один из них щелчком мыши
8 широкая полоса - да
9 I широкая и плоская - нет
Рис. КП.7 Форма для выбора ответа пользователем
259
Компьютерный практикум
Новая форма
Самостоятельное создание новой формы
Выберите в качестве источника данных таблицу или запрос
?!х|
Мастер форм Автоформа: в столбце Автоформа:ленточная Автоформа: табличная Диаграмма Сводная таблица
ТЕКУЩЕЕ
ок
Отмена
4 Область данных
ПанельВ
Аа аб1
П Н
® F
Поле со списком -------,-J---1—
Рис. КП.8 Вид меню Создать новую форму с выбранной таблицей Текущее состояние
Рис. КП.9
Вид конструктора форм и панели инструментов
Создание полей со списком
ххххххх
хххххххххххх
ххххххххх
Создается поле со списком, из которого допускается выбор значений.
Задайте способ, которым поле со списком получает свои значения:
0 поле со списком использует значения из таблицы или запроса
О будет введен фиксированный набор значений
Отмена
<Назад
Далее>
Готово
Рис. КП. 10 Диалоговое окно при создании поля со списком
Конструктор форм, панель инструментов и инструмент Поле со списком, которым мы дальше намерены воспользоваться.
Расширим область данных, потянув ее мышью за границы. Выберем инструмент Поле со списком и нарисуем им поле. После этого система предлагает диалог, от которого мы откажемся, нажав кнопку Отмена (рис. КП. 10).
260
Поле со списком: ПолеСоСписком2
т
Макет Данные События Другие Все
ПолеСоСписком2|
Данные.................... СОСТОЯНИЕ
Формат поля...............
Число десятичных знаков .... Авто
Маска ввода...............
Тип источника строк....... Таблица/запрос
Источник строк............ ВАРИАНТЫ
Число столбцов............^
Заглавия столбцов.........
Ширина столбцов........... ^
Присоединенный столбец....^
Число строк списка........ ^
Ширина списка.............
Текст строки состояния....
Ограничиться списком......
Автоподстановка...........
Значение по умолчанию.....
Условие на значение.......
Сообщение об ошибке.......
Вывод на экран............
Режим вывода.............. Всегда
Доступ.................... Дэ
Блокировка................
Разрешить автозамену...... ^
Переход по Tab............ ^
Индекс переход поТаЬ......
От левого края............ 4,598см
От верхнего края.......... 0,899см
Ширина.................... 11,187см
Высота.................... 0,499см^
Тип фона.................. Обычный
Цвет фона................. 16777215
Оформление................ Утопленное
ЕЕ)
Рис. КП. 11 Изменение свойств поля со списком
Щелчком мыши внутри поля выделим его.
Нарисовав поле со списком, из меню Вид-Свойства вызываем его свойства. В появившемся окне (рис. КП. 11) присвоим свойствам следующие значения: Данные — Состояние, Источник строк — Варианты, Число столбцов — 2, Ширина столбцов — 1,9.
Но «вручную» открывать и закрывать эту форму весьма неудобно. Надо, чтобы это выполнялось автоматически. Для этих це-
261
Компьютерный практикум
■ Макрокоманда Примечание
Закрыть формуВАРИАНТЫ
ОткрытьФорму ВАРИАНТЫ
Аргументы макрокоманды
Имя формы Режим Имя фильтра Условие отбора Режим данных Режим окна
ВАРИАНТЫ
Форма
Обычное
лей в Access имеется специальное средство — макросы (подробнее о макросах мы расскажем в учебнике для 11 класса, а пока вам важно лишь понимать, что это некий элемент управления, а для его создания просто проделайте то, что мы вам скажем).
5 Создайте макрос, который будет открывать и закрывать форму. Он должен выполняться при выборе значения в поле подстановок (иначе это значение не будет заноситься в таблицу Текущее). Выглядит нужный нам макрос так, как показано на рисунке КП. 12.
6 Теперь этот макрос нужно связать с обновлением поля со списком формы Варианты. Для этого нужно снова выделить в режиме Конструктора поле со списком, открыть его свойства и приписать событию После обновления значение «Макрос!» (рис. КП. 13). Теперь после обновления поля будет выполняться Макрос!.
► Все — простейший вариант экспертной системы готов. Перейдите в режим формы и поэкспериментируйте с созданной вами экспертной системой. Отвечая по-разному на ее вопросы, определите класс, к которому относится то или иное растение.
Рис. КП.12 Окно макроса, открывающего и закрывающего форму Варианты
I • 6 • I
1 ■ 8 ■ I
I • 10
■f Область данных
Щ—
“к »ле со :писко1 ii2r СОСТОЯНИЕ
1 1 1 1 1
Б Поле со списком: ПолеСоСписком2
2
7 Макет Данные События Другие Все
3 i I ^
■ в До обновления............. '
I После обновления............
Изменение..................
Отсутствие в списке........
Рис. КП.13 Привязка макроса к обновлению поля со списком
I
262
□ Лабораторная работа 22 (к §44)
Для проведения компьютерного эксперимента вам потребуется электронная таблица, заполненная примерно так же, как таблица КП. 11 из лабораторной работы 12 по модели ограниченного роста. Но теперь в ней надо зарезервировать клетку, куда мы будем вводить значение R, и поменять формулу для вычисления М(п). Полезно еще иметь столбец, где указывается ежегодный прирост:
кМ(п)
L - М(п) L - М(0)'
Но прежде чем заполнять таблицу, уточним постановку задачи.
Моря и океаны — это, конечно, основной источник для рыбного промысла. Но мы ведем речь об управлении, а управлять рыбными ресурсами морей и океанов никто еще не научился. Да и модели, используемые для описания гидросферы Земли, относятся к так называемым глобальным моделям, о которых у нас пойдет речь лишь в § 49. Поэтому будем строить управление добычей рыбы в некем рыбоводческом хозяйстве. Оно имеет водоем, и в некоторый момент времени (от которого и будет вестись отсчет) в него запустили рыбу. Десять лет она там росла и размножалась без всякого отлова (кроме небольших контрольных отловов для наблюдения за состоянием рыбы). Затем решили начать ее промышленную добычу. Оптимальный размер этой добычи нам и предстоит определить.
1 Заполните электронную таблицу по образцу таблицы КП. 13. В ней в клетках ВЗ—В13 вычисляется масса рыбы в те годы, когда отлова не было, а затем производится ежегодный отлов в количестве R тонн. В угловых скобках записано обозначение величины, которая должна быть занесена в данную клетку в качестве начального значения.
2 Теперь определим исходные данные. Пусть L = 10 000 т, М(0) = 1 т, k = 2. Пусть принято решение ежегодно отлавливать 1000 т рыбы.
3 Выполните соответствующие вычисления в электронной таблице.
4 Постройте графики изменения массы и прироста рыбы по годам.
5 Обратите внимание: со временем величина прироста совпадает с забираемой массой! Случайность? Проверим: попробуем вылавливать 3000 т.
Выполните соответствующие вычисления в электронной таблице. Постройте графики изменения массы и прироста рыбы по годам. Тот же эффект!
263
Компьютерный практикум
Таблица КП. 13
' А . ; 'Г ‘ : С'- ' ’
1 <д>
Год Масса рыбы Прирост
,,^3 0 <М(0)> А1*ВЗ*(В1-ВЗ)/(В1-ВЗ)
',4 ; АЗ+1 ВЗ+СЗ А1*В4*(В1-В4)/(В1-ВЗ)
Я ^ A4-I-1 B4-I-C4 А1*В5*(В1-В5)/(В1-ВЗ)
'Л; A5-I-1 B5-I-C5 ...
... ... ...
А12+1 В12+С12 ...
А13+1 В13+С13-С1 ...
15 A14-I-1 B14-I-C14-C1 ...
Л ... ... ...
6 Поэкспериментируйте еще с несколькими значениями R. Но не жадничайте — не берите R больше чем 6000 т.
Фактически вы сейчас «открыли» важное свойство живой природы — явление саморегуляции. Природа стремится восстановить то стабильное состояние, из которого ее вывели тем или иным способом.
7 А теперь попробуйте изъять 6000 т.
Выполните соответствующие вычисления в электронной таблице. Постройте графики изменения массы и прироста рыбы по годам.
Видите: через 6 лет масса рыбы вдруг стала отрицательной. Реально такого быть не может. Просто это означает, что от вашего хозяйствования рыба погибла.
Значит, 6000 т — это слишком много. Ну а какую же наибольшую массу все-таки можно отлавливать?
8 Организуйте и проведите соответствующий компьютерный эксперимент.
^ Вот мы и выяснили, каким должно быть здесь оптимальное управленческое решение.
I 264
Лабораторная работа 23 (к § 45)
Организация посещений порка
1 Прежде всего надо определить коэффициенты & и с в формуле для А. Заполните электронную таблицу так, как указано в объяснительном тексте § 44, и найдите значения & и с.
2 Теперь электронную таблицу заполните так, чтобы можно было находить К по N W. N но К {о том, как нужно заполнить таблицу, вы размышляли, выполняя задание 1 к § 45).
3 Найдите максимально допустимое количество посещающих, если парк будет работать пять дней в неделю.
4 Будем считать, что двух дней подряд хватает для полного восстановления парка. В каком режиме должен работать парк, чтобы его могли посещать 150 человек ежедневно?
Лабораторная работа 24 (к § 47)
Лисы и кролики
1 Подготовим заполнение электронной таблицы для проведения запланированного нами компьютерного эксперимента так, как показано в таблице КП. 14.
Таблица КП. 14
' /..В , '
^:1 к Год Масса кроликов Масса лис
|2 <к> 0 <М(0)>
3 с B2-I-1 (H-A2-A4*D2)*C2 (H-A6*(C3-C2))*D2
' <с> ВЗ-1-1 (H-A2-A4*D3)*C3 (H-A6*(C4-C3))*D3
щ S ... ... ...
... ... ...
ш ... ... ...
... ... ...
Ь1 , B50-I-1 (H-A2-A4*D50)*C50 (H-A6*(C51-C50))*D50
► Как обычно, в угловых скобках записаны обозначения величин, которые должны быть занесены в качестве начальных данных.
265
Компьютерный практикум
2 Заполните электронную таблицу указанным образом. Проведите компьютерный эксперимент по исходным данным, указанным в таблице КП. 15.
3 Используя компьютер, постройте графики М{п) и L(ji) как функций от п.
Таблица КП. 15
k С S М(0) L(0)
3,7 0,009 0,0001 5000 460
2,8 0,006 0,0002 5000 210
Литература
для дополнительного чтения
Андреева Е. Математические основы информатики. Элективный курс: учеб, пособие / Е. Андреева, Л. Босова, И. Фалина. — М.: БИНОМ, 2005.
Бекаревич Ю. Самоучитель Access 2000 / Ю. Бекаревич, Н. Пушкина. — М.: BHV, 2001.
Вирт Н. Алгоритмы + структуры данных = программы. — М.: Мир, 1985.
Вирт Н. Систематическое программирование. Введение. — М.: Мир, 1977.
Гончаров А. Microsoft Access 7.0 в примерах. — СПб.: Питер, 1997.
Грабер М. Введение в SQL. — М.: Лори, 1997.
Задачник-практикум по информатике и информационным технологиям: кн. для учащихся 7—11 кл. общеобразоват. учреждений / А. Г. Гейн, Н. А. Юнерман. — М.: Просвещение, 2003.
Информатика: задачник-практикум. В 2 т. / под ред. И. Г. Семакина, Е. К. Хеннера. — М.: ЛБЗ, 1999. — Т. 1, 2.
Информатика: энциклопедический словарь для начинающих / под ред. Д. А. Поспелова. — М.: Педагогика-Пресс, 1994.
Информатика как наука об информации / под ред. Р. С. Гилярев-ского. — М.: Фаир-Пресс, 2006.
Информационная культура: учеб, пособие для ср. шк. 10—11 кл. / Т. А. Матвеева и др. — Смоленск: Ассоциация XXI век, 2006.
Касаткин В. Н. Введение в кибернетику. — Киев: Радянська школа, 1976.
Клоксин У. Программирование на языке Пролог / У. Клоксин, К. Ме-лиш. — М.: Мир, 1987.
Кольман Э. Занимательная логика / Э. Кольман, О. Зих. — М.: Наука, 1966.
Ульман Дж. Д. Введение в системы баз данных / Дж. Д. Ульман, Дж. Уидом. — М.: Лори, 1999.
Шафрин Ю. А. Информационные технологии. — М.: ЛБЗ, 1999.
266
Предмет
А
автомат
адекватность модели адрес ячейки адресация абсолютная
— относительная алгоритм
— вспомогательный
— рекурсивный алфавит
— внешний (машины Тьюринга)
— внутренний (машины Тьюринга)
анализ информации аргумент вспомогательного алгоритма
— отношения арность отношения атрибут ключевой
— объекта
— обязательно присутствующий
— отношения
Б
база данных
---- иерархическая
---- реляционная
---- сетевая
— знаний байт
банк дгшных бит
бланк QBE блок логического вывода блок ячеек
ы и указатель г
36 гарнитура 222
23 гигабайт 16
218 гомеостаз 207
219 грамматика языка 13
219 граф 26
28 — нагруженный 26
74 82 — ориентированный 26
13 д
42 датчик случайных чисел детерминированность 121
42 алгоритма 32
диапазон изменения индексов 84
57 дискретизация 19
75 — звука 18
дискретность алгоритма 31
162 дсч 121
162 165 дуга орграфа 26
61 3
64 162 запрос 60
— на выборку 227
знания 58
значение переменной 29
60
62
63
62
183
16
61
15
228
176
219
И
имя вспомогательного
алгоритма 74
— массива 84
— отношения 162
— переменной 29
индекс элемента массива 84
информация декларативная 58
— символьная 7
исполнитель 10
— универсальный 40
испытание 118
В вероятность 118 источник информации К 8
вершина графа 26 канал связи 8
видеоинформация 7 квантор всеобщности 168
высказывание 147 — существования 167
высказывания кегль 222
равносильные 152 кибернетика 199
— тождественно килобайт 16
равные 152 когнитолог 177
267
Предметный указатель
конечность алгоритма 32 — формальные 74
контекст 12 переменная 29
— логическая 152
Л — свободная 167
логика 145 — связанная 167
— математическая 145 подпрограмма 74
— формальная 145 подпрограмма-функция 74
понятность алгоритма 32
М последовательность, равно-
массив 84 мерно распределенная 120
— двумерный 84 — псевдослучайная 122
— линейный 84 правило вывода 145
— одномерный 84 — рекурсивное 191
массовость алгоритма 33 предикат 167
машина Тьюринга 40 приближение равномерное 230
мегабайт 16 приемник информации 8, 91
метод Монте-Карло 129 признак объекта 61
— наименьших квадратов 69 произведение отношений 174
— половинного деления 87 программа 73
— пошаговой детализации 73 — логическая 183
моделирование 21 программирование логическое 183
модель 21 процедурный стиль
— вероятностная 119 программирования 183
— глобальная 214 процесс информационный 8
— информационная 23
— компьютерная 23, 108 Р
— математическая 23 размерность массива 84
— реляционная 159 ребро графа 26
— фактографическая 61 результат вспомогатель-
ного алгоритма 74
Н результативность
носитель информации 7 алгоритма 32
рекуррентное соотношение 81
О рекурсия 82
обработка информации решатель 176
формальная 10 робот промышленный 36
эвристическая 9
объект информационный 7 С
объявление переменной 31 саморегуляция системы 263
оператор присваивания 29 связь между атрибутами 167
орграф 26 — по типу
отладка 28 многие-ко-многим 256
отношение 161 один-к-одному 174
— бинарное 162 один-ко-многим 174
— тринарное 162 — обратная 206
— функциональное 165 положительная 207
ошибка семантическая 29 отрицательная 206
— синтаксическая 28 СДНФ 156
семантика языка 13
П серия испытаний 118
параметры модели 21 сеть 26
— фактические 74 — семантическая 26
268
синтаксис языка 13
синтез информации 58
система 25
— динамическая 201
— информационная 61
— искусственного
интеллекта 45
— управления базой
данных 60
— экспертная 45
системный подход 25
— эффект 24
слово 12
совершенная дизъюнктивная
нормальная форма 156
соединение таблиц 174
сортировка 64
структура древовидная 62
СУБД 60
схема функциональная 43
счетчик цикла 31
Т
тавтология 154
терабайт 16
тип булев 31
— вещественный 31
— логический 31
— массива 84
— переменной 31
— символьный 31
— целый 31
тождественно истинная
формула 154
тождественное преобразование 152 тождество 152
У
управление 199
— по принципу обратной
связи 211
утверждение целевое 183
Ф
фильтр 173
фильтрация 173
флажок 229
формализация 13
формула логическая 152
формулы равносильные 152
— тождественно равные 152
функция голосования 152
— целевая 230
ц
цель моделирования 21
Ч
частота 118
— относительная 118
ш
шрифт 222
— наклонный 222
— подчеркнутый 222
— полужирный 222
э
эксперт 175
электронно-вычислительная машина 7
эллипсоид 253
эмерджентность 24
энтропия 134
Я
язык 12
— коммуникативный 12
— распознаваемый 38
----автоматом 38
— формализованный 13
— формальный 28
ячейка электронной таблицы 218
UNICODE
16
269
Ключи к тестовым заданиям
Глава 1
Задание А1 А2 АЗ А4 А5 А6 А7 А8 А9 А10 АН
Ответ 3 1 3 2 3 3 2 3 3 4 1
Задание А12 А13 А14 А15 А16 А17 А18 А19 А20
Ответ 3 4 4 2 4 2 4 3 4
Задание В1 В2 ВЗ В4 В5 В6 В7
Ответ моделирова- нием 27 ЦИКЛОМ 144 24 присваива- ния символьный
Глава 2
Задание А1 А2 АЗ А4 А5 А6 А7 А8 А9 А10 АН
Ответ 3 2 2 3 1 1 3 2 3 3 3
Задание В1 В2 ВЗ
Ответ 3 25 8
Глава 3
Задание А1 А2 АЗ А4 А5 А6 А7 В1 В2
Ответ 2 2 3 2 2 3 3 315467 123
Задание ВЗ В4 В5 В6
Ответ 1АГД, 2БВН, ЗБЕЖ, 4ДЗИЛМ, 5ДКЛМ, 6АВГД 135 псевдослу- чайной дискретиза- цию
Глава 4
Задание А1 А2 АЗ А4 А5 А6 А7 А8 А9 А10 АН А12
Ответ 4 2 2 3 3 2 1 1 2 2 4 2
Задание В1 В2 ВЗ В4
Ответ ключевым 4 истинно 146
Глава 5
Задание А1 А2 АЗ А4 В1 В2 ВЗ
Ответ 2 2 3 3 положительной управлением 1346
270
Оглавление
Уважаемые старшеклассники!................................... 3
Глава 1. Информатика как наука............................... 4
§ 1. Информация............................................ 5
§ 2. Информационные процессы............................... 8
§ 3. Язык как средство сохранения и передачи информации.. 12
§ 4. Универсальность двоичного кодирования................ 15
§ 5. Информационное моделирование ........................ 21
§ 6. Системный подход в моделировании..................... 24
§ 7. Алгоритмы и их свойства.............................. 28
§ 8. Формальный исполнитель: автомат...................... 36
§ 9. Универсальный исполнитель............................ 39
§ 10. Основные направления информатики ................... 44
Итоги главы 1 .............................................. 47
Проверь себя................................................ 49
Глава 2. Информационная деятельность человека и использование в ней компьютерных технологий .............. 56
§ 11. Информационные задачи и этапы их решения........... 57
§ 12. Применение компьютера для решения простейших информационных задач............................................. 60
§ 13. Эксперимент как способ познания. Компьютерная обработка
результатов эксперимента.............................. 66
§ 14. Алгоритм как форма организации процедурной информации 72
§ 15. Рекуррентные соотношения и рекурсивные алгоритмы.. 80
§ 16. От переменной к массиву ............................ 84
§ 17. Решение уравнений методом половинного деления....... 86
§ 18. Измерение количества информации..................... 89
Итоги главы 2 .............................................. 96
Проверь себя................................................ 97
Глава 3. Моделирование процессов живой
и неживой природы ......................................... 102
§ 19. Моделирование физических процессов .................. —
§ 20. Компьютерное исследование модели движения в среде с сопротивлением ............................................... 105
§ 21. Моделирование процессов в биологии................. 109
§22. Границы адекватности модели......................... 112
§23. Моделирование эпидемии гриппа....................... 116
§ 24. Вероятностные модели............................... 117
§ 25. Датчики случайных чисел и псевдослучайные последовательности ................................................... 120
§ 26. Моделирование случайных процессов ................. 123
I 271 Оглавление
§ 27. Метод Монте-Карло ................................. 129
§ 28. Еще раз об измерении количества информации ........ 132
Итоги главы 3 ............................................. 138
Проверь себя............................................... 140
Глава 4. Логико-математические модели...................... 144
§ 29. Понятие моделей искусственного интеллекта.......... 145
§ 30. Элементы логики высказываний ...................... 146
§31. Законы алгебры высказываний ........................ 151
§ 32. Как построить логическую формулу................... 155
§ 33. Решение логических задач средствами математической логики 157
§ 34. Реляционные модели................................. 159
§ 35. Функциональные отношения........................... 164
§ 36. Логические функции и логические выражения.......... 167
§ 37. Логика СУБД Access ................................ 171
§38. Базы знаний и экспертные системы ................... 175
§39. Реляционная модель экспертной системы............... 177
§ 40. Знакомимся с логическим программированием.......... 183
§41. Запросы в базе знаний на Прологе.................... 187
§ 42. Встроенные предикаты в логических языках программирования. Простейшие программы ............................... 189
Итоги главы 4 ............................................. 192
Проверь себя............................................... 195
Глава 5. Информационные модели
в задачах управления ...................................... 199
§ 43. Что такое управление ................................ —
§ 44. Сколько можно взять у природы...................... 202
§ 45. Задача о лесопарке................................. 203
§ 46. Учимся у природы правильной организации управления .... 206
§ 47. Изучаем системы с обратной связью.................. 209
§48. Управление по принципу обратной связи............... 211
§ 49. Глобальные модели.................................. 214
Итоги главы 5 ............................................... —
Проверь себя............................................... 215
Компьютерный практикум..................................... 217
Лабораторная работа 1 (к § 5).
Обработка числовой информации с помощью электронной таблицы ................................................. 218
Лабораторная работа 2 (к § 6).
Обработка текстовой и графической информации.......... 222
Лабораторная работа 3 (к § 7).
Программирование основных алгоритмических конструкций . . . 224 Лабораторная работа 4 (к § 12).
Фактографическая модель «Класс» ...................... 225
I 272
Лабораторная работа 5 (к § 12).
Поиск информации в базе данных........................... 227
Лабораторная работа 6 (к § 13).
Компьютерная обработка экспериментальных данных.......... 229
Лабораторная работа 7 (к § 14).
Метод пошаговой детализации.............................. 231
Лабораторная работа 8 (к § 15).
Рекуррентные соотношения и рекурсивные алгоритмы......... 232
Лабораторная работа 9 (к § 16).
Программы для обработки массивов........................... —
Лабораторная работа 10 (к §17).
Решение уравнений ....................................... 234
Лабораторная работа 11 (к § 20).
Модель движения в среде с сопротивлением................. 235
Лабораторная работа 12 (к §21).
Модели неограниченного и ограниченного роста............. 239
Лабораторная работа 13 (к § 22).
Поиск границ адекватности модели......................... 242
Лабораторная работа 14 (к § 23).
Компьютерная модель эпидемии гриппа...................... 244
Лабораторная работа 15 (к §25).
Проверяем датчик слз^чайных чисел ....................... 245
Лабораторная работа 16 (к § 26).
Компьютерная модель системы массового обслуживания....... 248
Лабораторная работа 17 (к §26).
Моделирование броуновского движения ....................... —
Лабораторная работа 18 (к § 27).
Вычисление площадей и объемов методом Монте-Карло. Моделирование случайных процессов.............................. 252
Лабораторная работа 19 (к § 32 и 33).
Компьютерное исследование логических формул.............. 254
Лабораторная работа 20 (к § 37).
Соединение таблиц в Access............................... 255
Лабораторная работа 21 (к § 39).
Создание экспертной системы с помощью Access............. 257
Лабораторная работа 22 (к § 44).
Управление добычей возобновляемых ресурсов............... 262
Лабораторная работа 23 (к § 45).
Организация посещений парка.............................. 264
Лабораторная работа 24 (к § 47).
Лисы и кролики............................................. —
Литература для дополнительного чтения......................... 265
Предметный указатель.......................................... 266
Ключи к тестовым заданиям..................................... 269
Учебное издание
Гейн Александр Георгиевич Ливчак Александр Борисович Сенокосов Александр Иванович Юнерман Нина Ароновна
ИНФОРМАТИКА И ИКТ
Учебник для 10 класса общеобразовательных учреждений
Базовый и профильный уровни
Зав. редакцией Т. А. Бурмистрова Редактор О. В. Платонова
Младшие редакторы Е.А.Андреенкова, С. В. Дубова Художник О. П. Богомолова Художественный редактор О. П. Богомолова
Компьютерная верстка и техническое редактирование: О.Ю.Мызникова,
Н. В. Кондратьева
Компьютерная обработка рисунков: Г. М. Дмитриев
Корректоры Е. В. Барановская, О. Н. Леонова, Г. Н. Смирнова, И. В. Чернова
Налоговая льгота — Общероссийский классификатор продукции ОК 005-93— 953000. Изд. лиц. Серия ИД № 05824 от 12.09.01. Подписано в печать 05.03.12. Формат 70x90^/^g. Бумага офсетная. Гарнитура SchoolBookCSanPin. Печать офсетная. Уч.-изд. л. 18,06 Ч- 0,50 форз. Тираж 5000 экз. Заказ № 31075 штз).
Открытое акционерное общество «Издательство «Просвещение». 127521, Москва,
3-й проезд Марьиной рощи, 41.
Отпечатано в полном соответствии с качеством предоставленных материалов в ОАО «Смоленский полиграфический комбинат». 214020, г. Смоленск, ул. Смольянинова, 1.
УДК 373.167.1:004 ББК 32.97я72 И74
На учебник получены положительные заключения Российской академии наук (№ 10106-5215/15 от 31.10.07) и Российской академии образования (№ 01-364/5/7д от 22.10.07)
Авторы:
А. Г. Гейн, А. Б. Ливчак, А. И. Сенокосов, Н. А. Юнерман
Информатика и ИКТ : учеб, для 10 кл. общеобразоват. уч-И74 реждений : базовый и профил. уровни / А. Г. Гейн, А. Б. Ливчак, А. И. Сенокосов, Н. А. Юнерман. — 2-е изд. — М. : Просвещение, 2012. — 272 с. : ил. — ISBN 978-5-09-028705-0.
Учебник полностью охватывает материал, предназначенный как для базового, так и для профильного уровня обучения. В курсе основное внимание на базовом уровне преподавания информатики уделяется расширенному освоению информационных технологий для применения их к решению разнообразных жизненных задач. Это делает предлагаемый курс привлекательным для всех учащихся независимо от того, выбрали они гуманитарное или естественно-научное направление своего обучения. Материал, предназначенный для изучения на профильном уровне, содержит более глубокое изложение основ теоретической информатики и нацелен на подготовку к ЕГЭ.
УДК 373.167.1:004 ББК 32.97я72
ISBN 978-5-09-028705-0
' Издательство «Просвещение», 2008 ' Художественное оформление. Издательство «Просвещение», 2008 Все пргша защищены
Язык записи алгоритмов
Pascal
1. Заголовок программы
Алгоритм {...} program <имя>;
2. Описание переменных
var
С ‘Обязательно перед описанием переменных*)
вещественные переменные
веш: <список переменных>; <список переменных>: real;
целочисленные переменные
цел: <список переменных>; <список переменных>: integer;
символьные переменные
сим: <список переменных>; <список переменных>: string;
массивы
веш: <имя массива> [1:100:1:100]; <имя массива>: array [1.. 100,1.. 100] of real;
3. Оператор условия
Если <условие> то (<условие>:
•••}
иначе {<оператор>;...}
if <условие> then begin
<оператор>; end else
begin
<оператор>;
end;
Конструкция иначе (else) может отсутствовать
4. Оператор цикла по условию
Делать пока <условие> {<оператор>;...}
while <условие> do begin
<оператор>;
end;
Язык записи алгоритмов Pascal
5. Оператор цикла со счетчиком
Делать от <пеоеменная> := <вьюажение> до <8ыоажемие> с шагом <вьюажение> {<оператор>;...} for <переменная>: = <выражение> to <выражение> do begin <оператор>; end;
Если нужен шаг -1, то вместо to пишут downto
6. Операторы ввода и вывода информации
Запоосить <имя пеоеменной>; readin (<список переменных>);
Сообщить <имя пеоеменной или/и сообщение в кавычках>; writen ('<сообщение>',<список переменных>);
7. Подпрограммы и функции
Полпоогоамма <имя подпоогоаммы>: (арг: <список параметров>, рез: < список параметров>) {<оператор>:...} Procedure <имя> (<параметры>: <тип>; уаг<результаты>: <тип>); begin <оператор>;... end;
Функция <имя>: (аог: <типы аогументов>: <список переменных>): <тип> { <оператор>: знач := <результат>; } function <имя> (<параметры>: <тип>): <тип>; begin <оператор>;... <имя функции> := <результат>; end;
8. Обращение к подпрограмме
Вызвать <имя подпрограммы> (арг: <список параметров>; рез: <список параметров>); <Имя> (<список параметров>);
9. Обращение к функции
<переменная> := <Имя функции> (<список фактических параметров>); <переменная> := <Имя функции> (<список фактических параметров>);
Язык записи алгоритмов
QBasic
1. Заголовок программы
Алгоритм (...} Заголовка программы нет
2. Описание переменных
вещественные переменные
веш: <список переменных>; Если описание переменной отсутствует,
то она вещественная
целочисленные переменные
цел: <список переменных>; Знак % после имени переменной или
DEFINT <список переменных>
символьные переменные
сим: <список переменных>; знак $ после имени переменной
или DEFSTR <список переменных>
массивы
веш: <имя массива> [1:100; 1:100]; DIM <имя массива> (1 to 100,1 to 100)
3. Оператор условия
Если «условие» то {<условие>;...} иначе {<оператор>;...}
IF (<условие>) THEN <оператор>
ELSE
<оператор>
ENDIF
Конструкция иначе (else) может отсутствовать
4. Оператор цикла по условию
Делать пока (<условие>) {<оператор>;...}
WHILE (<условие>)
<оператор>
<оператор>
WEND
Язык записи алгоритмов QBasic
5. Оператор ци1сла со счетчиком
Делать от <переменная> := <выражение> FOR <переменная> = <выражение> ТО
до <переменная> с шагом <выражение> <выражение> STEP <выражение>
{<оператор>;...} <оператор>
NEXT <переменная>
6. Операторы ввода и вывода информации
Запоосить <имя пеоеменной>: INPUT " <уточняющее сообщение>" <список переменных через запятую>
Сообщить <имя переменной или/и PRINT " <сообщение>",<список переменных
сообщение в кавычках>; через«,»или«;»>
7. Подпрограммы и функции
Подпоогоамма <имя пояпрограммы>: SUB <имя> (<параметры>)
(арг: <список параметров>, рез:< <оператор>
список параметров>) ENDSUB
{<оператор>:...} -
Функция <имя>: (арг: <типы аргументов>: FUNCTION <имя> (<параметры>)
<список переменных>): <тип> <оператор>
{ <действие>: <имя>= <результат>
знач := <результат>: } END FUNCTION
8. Обращение к подпрограмме
Вызвать <имя подпрограммы>; CALL <имя> (<список параметров>)
(арг: <список параметров>; оез <список параметров>);
9. Обращение к функции
<переменная> := <Имя функции> <переменная> := <Имя функции>
(<список фактических параметров>); (<список фактических параметров>)
ИНФОРМАТИКА ИИКТ
БАЗОВЫЙ • ПРОФИЛЬНЫЙ
УРОВНИ
Учебно-методический комплект по информатике авторского коллектива под руководством А. Г. Гейна содержит:
А. Г. Гейн, А. Б. Ливчак, А. И. Сенокосов, Н. А. Юнерман
Информатика и ИКТ. 10 класс
А. Г. Гейн, А. И. Сенокосов Информатика и ИКТ. 11 класс
А. Г. Гейн, А. А. Гейн
Тематические тесты для 10 и 11 классов
А. Г. Гейн
Задачник-практикум. 10—11 классы
А. Г. Гейн
Книги для учителя. 10 и 11 классы
А. Г. Гейн
Информатика. Рабочие программы.
10—11 классы
Программы для проведения практических занятий и методические рекомендации размещены на сайтах:
https://kadm.math.usu.ru {на страничке А. Г. Гейна) и https://www.prosv.ru
1