Смекни!
smekni.com

Алгоритмы вокруг нас (стр. 8 из 9)

В § 1 данной главы мы почти допустили возможность мышления машин. Но наша книга посвящена не машинам, а алгоритмам. Сформулируем же упомянутую проблему в терминах теории алгоритмов. Очевидно, вопрос ставится не о том, чтобы любая машина мыслила, а о возможности создания такой машины, для которой можно составить программу мышления. Если отвлечься от ограниченности ресурсов времени и ЗУ, вопрос упрощается: достаточно, чтобы машина была универсальной (типа ЭВМ).

Мы знаем, что ЭВМ являются физическими моделями коллективов алгоритмов. Теперь представим себе условия, в которых обычно находится мыслящий человек. Он располагает некоторыми сведениями, хранящимися у него в мозге; оперируя ими, он по мере надобности обращается к внешним источникам — книгам, справочникам, задает вопросы другим людям; кроме того, он, может быть, получает сведения путем экспериментов. В конце концов он создает некоторый результат своего мышления. Для упрощения можно считать, что мышление производится без привлечения экспериментов. Правда, с самого начала мы приняли еще одно упрощение: ограничились случаем, когда мышление протекает «в тиши кабинета», тогда как нередко человек мыслит, находясь во взаимодействии с изменяющимся реальным миром. Между мыслящим человеком и коллективом алгоритмов напрашивается чисто внешняя аналогия. То, что хранится у человека в мозге (его знания),— подобно основному операнду; сведения, получаемые извне по мере надобности, подобны потокам частных операндов(см. конец § 10 гл. 8); действия, совершаемые мозгом, напоминают нам процесс выполнения открытого коллектива алгоритмов. Очень упрощая картину, можно предположить, что дополнительные сведения собраны заранее в некоторой информационной системе (см. § 2 гл. 10) без обновления, присоединяя которую к открытому коллективу алгоритмов, мы превращаем его в закрытый. В аналитической теории алгоритмов доказано, что каждый закрытый коллектив алгоритмов эквивалентен некоторому одиночному алгоритму.

Таким образом, в самом простом случае проблема возможности мышления машин сводится к вопросу возможности разработки алгоритма, эквивалентно моделирующего работу мозга. Мозг (и даже мозг всех людей) хранит конечный объем сведений и существует конечное время. Не будет грубой ошибкой, если мы посчитаем, что сведения хранятся в мозге в форме символьной конструкции (реализованной физически или, если хотите,— биологически). Существует только конечное число символьных конструкций, которые могут быть размещены в ЗУ конечного размера (т. е. в мозге и в информационной системе). Таким образом, перед нами задача о построении алгоритма, входной язык операндов которого конечен. Такая задача алгоритмически разрешима, но только потенциально. Реально ее разрешить методом алгоритмизации нельзя из-за ее большой трудоемкости.

Но сделанные нами упрощения слишком велики. Алгоритм мышления, который мы получим, будет слишком примитивен. Он будет эквивалентен поиску ответа в некотором справочнике (хотя и в очень большом). Можно также сказать, что мы решим задачу алгоритмизации только уже осуществленного мышления, что не представляет интереса. Проблема станет тем интереснее, чем привлекаемая информационная система будет допускать обновление информации. Но даже и в этом случае она остается сильно «урезанной» из-за того, что набор дополнительных операндов фиксирован. Впрочем, алгоритм мышления, справляющийся со своей задачей, в последнем усложненном случае уже «умнее» каждого из породивших его людей, имевших в своем мозге те сведения, которые являются допустимым основным операндом. Остается открытым только один вопрос: возможен ли такой алгоритм?

Человеческий мозг может мыслить, несмотря на изменения, происходящие в мире (и, следовательно, в исходных данных для мышления), потому что он сам изменяется не только от поколения к поколению, но и в течение жизни отдельного индивидуума. Соответствующая алгоритмическая проблема состоит в вопросе о возможности открытого коллектива алгоритмов, который бы не только перерабатывал операнды, но и видоизменял сам себя.

С проблемой мышления связан вопрос о сознании. Имеется в виду не философское значение этого слова, позволяющее ставить такие кардинальные проблемы, как проблема значение – способность человека отделять себя от остального мира. По отношению к человеку мышление является частью сознания. О мышлении машин мы говорили вне связи с сознанием. Мы как бы предполагали, что мышление машины - это выполнение алгоритма, перерабатывающего информацию эквивалентно тому, как это делает мозг. При таком понимании мышления машин сознание оказывается формой мышления.

Действительно, можно себе представить, что основной операнд открытого коллектива алгоритмов состоит из двух частей, одна из которых является символьной моделью самой ЭВМ (или коллектива алгоритмов), а другая - символьной моделью той части реального мира, которая "известна" машине. Такая пара моделей чем-то похожа на сознание (в том узком смысле, в котором мы условились понимать сознание). Здесь в своих обсуждениях проблемы алгоритмического моделирования сознания мы остановимся, потому что эта проблема выходит за рамки нашей книги. Она очень интересна, но упомянута только для того, чтобы обратить внимание читателя на так называемое алгоритмическое (или программное) моделирование.

Поясним сущность понятия модели. Предположим, что имеется некоторый объект, подлежащий исследованию. Назовем его прототипом. Моделью прототипа называется любой объект, так соответствующий прототипу, что описание некоторых его свойств можно перевести в описание тех свойств прототипа, которые нас интересуют. Моделями пользуются тогда, когда исследование самого прототипа слишком сложно или почему-то невозможно. Как видно из этого описания, модель не является копией прототипа (хотя и это возможно), а в такой мере ему соответствует, что исследование некоторых свойств прототипа можно заменить исследование некоторых (вообще говоря, других) свойств модели. Первоначально модели применялись только в технике. Например, перед тем как строить какое-либо сооружение, сперва изготовляли его уменьшенную модель из удобного для этого материала. Модель испытывали и по результатам судили о свойствах будущего сооружения. Немного позже было замечено, что прототип и его модель допускают одно и то же математическое описание или их математические описания могут быть с помощью некоторого преобразования сведены одно к другому (требуется, чтобы описание модели можно было свести к описанию прототипа).

Наконец поняли, что самое математическое описание прототипа можно считать его моделью (математической). Эта простая мысль явилась результатом длительных исследований и размышлений. Сейчас ее справедливость не вызывает сомнений! Математическую теорию моделей можно найти в книгах по абстрактной алгебре и в книгах по математической логике. Абстрактная алгебра утверждает, что модель — это множество, на котором задана некоторая совокупность отношений. Логика рассматривает модели систем аксиом — множества, элементы которых таковы, что свойства этих элементов удовлетворяют указанным аксиомам и следствиям из них. Мы видим уже три различных определения математической модели. Два последних являются частными случаями первого. Повторим его: математической моделью прототипа называется некоторое его математическое описание. Это математическое описание может быть произведено различными математическими средствами. В частности, описание прототипа может быть алгоритмическим, а если оно рассчитано на применение ЭВМ, то — программным.

При алгоритмическом моделировании модель имеет две компоненты: символьную конструкцию из класса некоторых символьных конструкций и алгоритм или коллектив алгоритмов. Программная модель обычно имеет еще некоторые компоненты: программу внесения изменений в символьную конструкцию (хранящуюся в запоминающих устройствах) и программу обработки результатов моделирования. При программном моделировании могут встретиться два вида моделей — функциональные и имитационные.

Функциональные модели строят для моделирования одних алгоритмов в виде других. Например, можно одну ЭВМ, являющуюся, как уже известно, физической моделью алгоритма, моделировать на другой. При этом функциональной моделью первой ЭВМ будет программа второй. В более простом случае алгоритмическая модель эквивалентна прототипу. В более сложных случаях функциональная модель не эквивалентна, а, как говорят,— равносильна прототипу. В первом случае исходные данные и результаты прототипа и модели соответственно одинаковы, во втором случае известен простой прием преобразования исходных данных прототипа в исходные данные моделирующего алгоритма и результатов моделирующего алгоритма в результате прототипа. Программное моделирование такого вида является одним из средств, используемых при разработке ЭВМ и сложных программных комплексов.

Имитационное моделирование применяется для исследования различных процессов путем их условного воспроизведения, при котором каждый шаг процесса-прототипа заменяется одним или несколькими шагами моделирующего алгоритма. Алгоритмическое описание процессов (см. § 3 гл. 10) является частным случаем имитационного моделирования. Большой интерес представляет так называемое статистическое моделирование, при котором имитация процесса сводится к вычислению какого-либо параметра или ряда параметров, изменяющихся при функционировании прототипа и записи получаемых значений. После того как произведено большое число имитаций при соответствующих изменениях имитации, полученные результаты подвергаются статистической обработке точно так же, как обычно обрабатывают результаты эксперимента. Статистическое имитационное моделирование иногда позволяет обойтись без дорогостоящих опытов. § 4. Последние замечания