Пиши и продавай! |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 char xl [80]; /* рабочая переменная */ strcpy(xl,x); /* подготовка к работе */ xl[0]=0;strcat(xl,&xl[l]); /*D1 */ strcat(xl,y); /*xl+y*/ for(j=0;j<2;j++) { 1=strlen(xl); xl[I]=0;} /* Dn */ strcat(xl,x); /*xl+x*/ for(j=0;j<2;j++) { 1=strlen(xl); xl[I]=0;} /* Dn */ strcpy(xl); /* возвращение управления */ return; } Ничто не мешает предложить аналогичный подход для моделирования ситуаций в биологическом, социальном и компьютерном мирах. Анализируя ситуации социальной жизни людей, можно ввести ЭД типа: «бежать», «идти», «сидеть», «ехать», «говорить», «рождаться», «умирать», «повеситься» и т.п. Можно даже ограничить это множество, скорректировав его действиями «не убий», «не возжелай». Для компьютерной программы в качестве ЭД могут выступать операции: «писать», «читать» и т.д. Понятно, что подобные СР-сети не являются панацеей от всех бед и не предлагают универсальной эвристики, пригодной для всех случаев жизни. Они могут стать лишь еще одним инструментом в руках художника, рисующего собственную жизнь. Серьезным недостатком изложенного подхода является его «непробиваемая» целеустремленность – стремление на каждом шаге увеличивать значение целевой функции. В приведенных примерах подобный путь привел к успеху, но это не означает, что так будет всегда; хотя, с другой стороны, целевой функцией, как, впрочем, и множеством ЭД всегда можно варьировать. Пути улучшения ситуации видятся в направлении распараллеливания процессов. Например, если, решая выше приведенную задачу по обработке символьных строк, допустить параллельность в формировании СР-сети, т.е. наращивать сеть не только по единственному пути максимального увеличения значения целевой функции, а по нескольким направлениям, при этом разрешая использовать на каждом этапе все имеющиеся на данный момент результаты по всем возможным направлениям, то шансы найти выход в лабиринте решения задачи могут быть значительно повышены, см. следующий рисунок: Обобщить сказанное и подвести итог представляется возможным в виде следующей схемы: 1. Элемент системы является простейшей неделимой частицей – формальным нейроном. 2. Каждый нейрон способен к одному элементарному действию из некоторого наперед заданного множества, куда входит действие – «ничего не делать». В общем случае в множество ЭД могут быть включены как арифметические операции, так и специальные алгоритмы, мемо-функции. Наличие ЭД «ничего не делать» равносильно отсутствию нейрона. 3. На начальном этапе система представляет собой множество нейронов с ЭД «ничего не делать», на каждый из которых может оказываться воздействие со стороны нескольких входов и одного выхода. Разницу между получаемым выходным значением и требуемым выходным значением назовем напряжением. 4. Считаем, что возникшее напряжение должно компенсироваться изменением у нейронов присущих им ЭД. Изменение ЭД «ничего не делать» на любое другое приводит к рождению нейрона для системы. Предположим, что нейронов должно возникать ровно столько, сколько необходимо для компенсации напряжения. 5. Считаем, что при рождении нейронов выбирается нейрон с тем ЭД, которое максимально способствует минимизации напряжения. Значение напряжения, которое компенсируется рожденным нейроном, назовем жизненной силой нейрона; считаем, что если на нейрон действует напряжение, превосходящее его собственную жизненную силу, то нейрон гибнет. Таким образом, было показано, что в основе моделей, предназначенных для исследования серьезных качественных изменений работы системы, с успехом можно использовать саморазрушающиеся и самовозрождающиеся нейросети. Были даны основные определения, предложен механизм и приведены необходимые примеры, достаточные, на мой взгляд, для самостоятельной практической реализации изложенного подхода к различной областям жизни. Новизна и эффективность данного подхода построения самообучающихся систем определяется применением для корректировки имеющегося знания не только коэффициентов ряда, с помощью которого апроксимируется неизвестная функция, а в первую очередь, операций между компонентами числового ряда с последующей корректировкой коэффициентов. Подобный подход позволяет значительно упростить схему работы самообучающейся системы в том случае, когда эта система используется для выделения в потоке данных аналитических зависимостей, построенных на базе таких действий, как сложение, вычитание, умножение и деление. При необходимости перечень действий всегда может быть расширен и дополнен не только известными математическими операциями типа логарифмирования и возведения в степень, но и алгоритмами, включающими реализованные программно мемо-функции, а также сам алгоритм самообучения. В этом случае речь может идти уже не столько о классическом программировании, сколько о написании сценария или задании сюжета произведения. В этой связи интересно посмотреть на аналогии, прослеживающиеся в современных технологиях проектирования программного обеспечения для ЭВМ, и, в частности, на объектно-ориентированное программирование в среде Windows, в котором объекты рождаются, наследуя свойства, и умирают, возвращая память. Цитируется по книге Э. Телло «Объектно-ориентированное программирование в среде Windows» (М.: «Наука-Уайли», 1993): «Объектно-ориентированное программирование – это способ программирования, обеспечивающий модульность программ за счет разделения памяти на области, содержащие данные и процедуры. Области могут использоваться в качестве образцов, с которых по требованию могут делаться копии. Весьма удобно рассматривать объекты как попытку создания активных данных. Смысл, вкладываемый в слова «объект представляет собой активные данные», основан на объектно-ориентированной парадигме выполнения операций, состоящей в посылке сообщений. В посылаемых объекту сообщениях указывается, что мы хотим, чтобы он выполнил. Так, например, если мы хотим вывести на экране строку, то мы посылаем строке сообщение, чтобы она изобразила себя. В этом случае строка – это уже не пассивный кусок текста, это активная единица, знающая, как правильно производить над собой различные действия». 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
|
|
|