Отправляет email-рассылки с помощью сервиса Sendsay

Алгоритмы для всех

  Все выпуски  

Служба Рассылок Городского Кота


Служба Рассылок Городского Кота

Я тут подумал и переименовал рассылку из "Алгоритмы вокруг нас" в
"Алгоритмы, которые нам помогают". Гипотеза тут у меня такова, что новое
название будет более привлекающим, поскольку в нем в явном виде сказано,
что речь в рассылке пойдет о чем-то полезном. Ну, и кроме того оно
напоминает название известного рассказа О.Генри "Дороги, которые мы
выбираем".

В прошлый раз я остановился на том, ОТКУДА появляются алгоритмы, и теперь я
расскажу, КАК они появляются. Итак:

"Как создать алгоритм" (начало)

- Это такси?
- Такси.
- А где шашечки?
- А Вам что нужно: шашечки или ехать?
    Анекдот.

Сразу и честно скажу, что то, что будет описано ниже, на самом деле не
является процессом создания алгоритма как такового. Это запись в
определенном виде хода решения задачи. По моему опыту иметь целью создание
алгоритма самого по себе - неэффективно. Собственно говоря, алгоритмы сами
по себе и не нужны, - они только одно из средств достижения какой-либо иной
цели. И гораздо эффективнее - просто решать некоторую свою задачу,
записывая свои шаги на бумаге (или в компьютере). Причем речь тут идет не о
каком-либо протоколе, который просто фиксирует действия, а о
целенаправленном и при этом, так сказать, "внешнем" (т.е., происходящем
вне
головы) мышлении. Есть у меня подозрение, что, чтобы нечто считать
алгоритмом, нужно воспользоваться этим нечтом как минимум два раза. Если
это подозрение верно, то алгоритм появится (самозародится :-)) в тот
момент, когда какая-либо задача у вас возникнет снова, и вы обратитесь к
этим своим записям.

Исторически используемый тут подход восходит аж к Декарту, который году так
в 1636 в своей книге "Рассуждение о методе" сформулировал четыре правила
научного исследования. Второе и третье правила имеет смысл здесь привести:
- "Делить каждую из рассматриваемых мною трудностей на столько частей,
сколько потребуется, чтобы лучше их разрешить."
- "Искать прежде всего решения простейших вопросов и постепенно восходить
до понимания наиболее сложных". (цит. по "Наука и жизнь", 1999:4:122)
Но надо сказать, что в книге "Рождение изобретения" (1995, с.205) эти
правила даны в заметно отличающейся формулировке:
- "каждый трудный вопрос разбивать на столько частных, чтобы стало
возможным более легкое их разрешение"
- "всегда начинать с простейшего и постепенно переходить к более сложному,
и даже там, где не представляется естественной последовательности, все-таки
устанавливать некоторый порядок"
Поднимать оригинал мне недосуг, поэтому ограничусь гипотезой, что,
возможно, у метода Декарта  как и у АРИЗа Альтшуллера были разные версии.
:-) А читатели, вообще говоря, могут выбрать тот вариант, который им больше
нравится! :-)

Среди прототипов можно назвать также диаграмму Исикавы ("Семь инструментов
качества" в японской экономике", М., 1990) и ее производную, -  диаграмму
Сибирякова-Исикавы (Сибиряков В.Г. "Диаграмма Исикавы и Сибирякова для
анализа систем", рук. деп. в ЧОУНБ [Челябинская областная универсальная
научная библиотека] 24.4.92),  дерево функций (Моисеева Н.К., Карпунин М.Г.
"Основы теории и практики ФСА", М., 1988), Древо Цели (или Древо
Самоанализа, - Курс практической психологии  Ижевск, 1996, с.312),  дерево
целей (Сорокин В.В. "Использование Дерева целей при анализе
изобретательской ситуации", рук. деп. в ЧОУНБ 17.2.92, Александров Л.В.,
Карпова Н.Н. "Рабочая книга по систематизации информации", М., 1993,
с.294). Использованы также некоторые элементы блок-схем (Александров,
Карпова Там же, с.314). Ранняя версия описываемого тут способа ("древо
целей") изложена в моей статье "Построение древа целей" (рук. деп.
в ЧОУНБ
30.10.99). Для компьютерной поддержки подобных структур есть "программы
управления проектами, типа Time-:-(ine Microsoft Pro:-)ect и другого типа
построенные для поддержки методики SADT один из таких софтов IDEF"
(Н.Н.Хоменко, личное сообщение).

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

Следует отметить, что этот подход не гарантирует решения. Строго говоря,
это метод не решЕния, а решАния задачи. :-) Но он позволяет
  а) приблизиться (так сказать, срезая углы и избавляя в какой-то степени
от тупиков) к решению (если оно есть :-)) или к вИдению его отсутствия
(если решения нет :-()
  б) зафиксировать ход решения так, чтобы всегда можно было вернуться и
продолжить с того места, где вы остановились
  в) хранить выявленную (если и) эффективную последовательность действий не
в голове (с риском забыть и потом тратить время на вспоминание), а на
бумаге (или в компьютере).

В большинстве случаев результат получается достаточно сырой и на алгоритм
(см. определения в прошлом выпуске) пока не тянущий. Для его обозначения я
использую термин "дерево задач" или "задачное дерево" ("дерево,
которое
растет за дачей" :-)). Раннюю версию я называл "древом целей". Наиболее
точным, вероятно, являтся название "дерево решения задач".

Продолжение следует. :-)

Сергей Пушкарев

http://subscribe.ru/
E-mail: ask@subscribe.ru

В избранное