Глава 7. Декомпозиция и упрощение

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

На самом деле, в нашем сознании мыслительный процесс и есть единое целое. Это безусловно. Ни один мыслящий человек не говорит себе, вот сейчас я воспользуюсь таким методом, а если не получится то вот таким. Главным образом наше мышление, его наиболее большой объем работы проходит подсознательно. Разделение на этапы, методы, приемы происходит отчасти от того, что человек не удовлетворен качеством и эффективностью своей подсознательной деятельности. Помимо того, если мы стремимся анализировать внешний мир, то почему должны отказываться от анализа самих себя. Аналитическая способность не принимает ограничений, для нее нет запретов и предметов недоступных для рассмотрения. Анализа мышления требует базовая потребность – осознание самого себя. Нас не устраивает уход большой части мышления на подсознательный уровень, все же хочется вывести собственный мыслительный процесс на чистую воду и понять, как это  работает.

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

Декомпозиция в ее чистом виде
 
Декомпозиция  - термин, широко использующийся в программировании. В этой области знания метод отработан почти до строго формализованной процедуры, поэтому программистский термин хорошо отражает суть того, что сейчас нам требуется понять. Что делает программист, получая трудоемкую задачу? Сделаем акцент на том обстоятельстве, что речь идет скорее о трудоемкой, нежели о сложной задаче. Различие между ними таково. Последовательность решения трудоемкой задачи в принципе видна, но она требует значительной энергии и времени, поэтому разумно разделить ее на части или своего рода подзадачи, каждую из которых можно решать отдельно, после чего собрать эти отдельные решения в одно, как конструктор Лего. Желательно при этом разбиение выполнить так, чтобы множество подзадач можно было бы решать в любой последовательности. Если их порядок имеет значение, то это уже другая, более сложная ситуация.

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

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

Пример первый      

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

Эта задача возможна в двух вариантах. Более простой – порядок элементов в конструируемой группе не играет роли. Более сильное условие – порядок существенен. Например, стоит ряд из N - стульев, необходимо рассадить на них N человек так чтобы рядом не оказались люди некомфортные друг для друга. Это не более чем поясняющая иллюстрация. Далее, все же будем иметь ввиду самый общий случай – есть множество из N элементов обладающих набором свойств и некоторые из наборов могут оказаться несовместимыми. Необходимо собрать из этих элементов линейно упорядоченную группу так, чтобы никакие два рядом стоящих элемента не были обладателями несовместимых наборов свойств. Например нельзя в зоопарке в соседних клетках размещать хищников и травоядных. 
Это условие допускает очень простое разбиение на две задачи, совершенно независимые друг от друга. Ясно, что необходима процедура, требующая в качестве аргументов два набора свойств, а результатом ее работы станет вывод о совместимости этих наборов. Если мы имеем некую расстановку элементов исходного множества, то проверить является ли она решением, с помощью такой процедуры несложно. Достаточно просмотреть всю расстановку попарно и применить упомянутую процедуру к каждой паре рядом стоящих элементов расстановки. Ясно, что такую проверку можно проводить, не имея никакого представления о способе получения расстановки.

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

Главный же итог наших рассуждений состоит в том, что исходная задача разделилась на две полностью независимые. Действительно, мы вполне можем проверить пару элементов расстановки, не вникая, как они попали на свои позиции. Для проверки всей линейно упорядоченной расстановки достаточно пройти все пары рядом находящихся элементов и опять таки способ получения расстановки для такого обхода не имеет значения. А алгоритмы построения всех возможных расстановок или перестановок, как их называют математики, хорошо известны и применимы к любому фиксированному множеству элементов любой природы.         

Такой прямолинейный подход к методу декомпозиции создает огромные возможности в части упрощения задачи. Это действительно так, ведь декомпозиция позволяет свести исходное условие к более простым задачам. Может показаться, что выполняя деление задачи на подзадачи мы увеличиваем общий объем работы, но полученные подзадачи скрыто присутствовали в исходном условии, следовательно, объем работы требуемый для большой задачи никак не был меньше, но в связи с ограниченными ресурсами человеческого мышления есть проблема восприятия большой картины неизвестного. Чем задача меньше, тем проще и эффективнее она укладывается в сознании и, следовательно, проще воспринимается и решается.

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

Есть у обсуждаемой версии декомпозиции и существенный недостаток. Независимость и отказ от рассмотрения задачи в целом может привести к потере интересной идеи решения. Зачастую красивые идеи можно увидеть на стыке задач, особенно больших задач. Этот факт хорошо известен историкам науки. Когда-то единая натурфилософия начала процесс собственной декомпозиции, делясь на отдельные научные дисциплины. Иначе  наука вообще потеряла бы способность к развитию. Но, тем не менее, научные результаты, полученные в разных отраслях знания, непрерывно сливаются в общую картину, так как именно интегральное знание дает настоящие научные прорывы. Именно на слиянии наук в общую картину происходят самые интересные события.

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

Пусть, например, в исследуемом множестве, свойство «терпимости» распространено очень широко. Настолько широко, что можно ожидать большого количества решений. Тогда (вспомним главу об эвристических методах) возможна иная стратегия поиска нужной расстановки. Построим любую расстановку. Существует ненулевая вероятность, что она или будет искомой или, по крайней мере, в силу высокого уровня «терпимости» количество плохих пар «не терпимых» будет не очень велико. Тогда можно попытаться исправлять локальные ошибки. Например так – найдем пару нетерпимых элементов. Попробуем найти пару (возможно нетерпимых, а возможно и терпимых друг к другу) такую, что элементы этих двух пар можно поменять друг с другом, так чтобы обе новые пары оказались терпимыми. При высоком уровне «терпимости» такую замену можно найти быстро.  Более того, эту идею вполне можно доработать так, чтобы в худшем случае предложенный способ сводился к полному перебору.

Как всегда работает «Правило рычага», если выигрываешь в одном, то проигрываешь в другом. Декомпозиция, от уровня творчества, не всем на самом деле доступном, переводит процесс поиска решения на уровень технологии, что приемлемо для очень большого количества задач. Мы ведь помним, что большая часть решаемых человеком проблем на самом деле не творческие, хотя нам и приятно говорить красивые слова вроде «Творчество», «Интуиция» и т.д. Но если задача действительно сложная и требует нового подхода, и вот этого самого интуитивного рывка, то метод декомпозиции может потерпеть неудачу. Поэтому прежде чем выполнять декомпозицию желательно убедится, что задача скорее трудоемкая, нежели высокого уровня сложности.    

Пример второй            

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

Число на счетах представляется набором костяшек переброшенных слева на право. Каждая спица это разряд. Первая спица изображает собой количество единиц (цифра первого разряда), вторая – количество десятков (цифра второго разряда) и т.д. Длина числа, с которым можно оперировать на счетах, определяется количеством спиц, то есть миллиарды и триллионы вполне нормальные числа для счетов. Число представляется очень просто. Если в разряде тысяч стоит цифра 9, то не четвертой спице просто перекидываем слева на право 9 костяшек.
Сложение тоже не представляет проблемы. Если в первом слагаемом 9 тысяч, а во втором 2 тысячи, то мы к 9 костяшкам на четвертой спице добавляем 2 костяшки, затем отбрасываем влево 10 костяшек, а на пятой спице перекидываем вправо 1 костяшку.

Причем  здесь метод декомпозиции. В счетах проблема выполнения арифметических операций над двумя числами сведена к однотипным операциям над разрядами. Суммирование двух разрядов выполняется одинаково, безотносительно номера разряда. Точно также выполняется вычитание. Отметим, что счеты как техническое устройство представляют собой модель метода сложения и вычитания столбиком. Еще раз отметим, что сам метод выполнения арифметических операций столбиком стал возможен только благодаря стандартизации записи числа разрядами, состоящими из одинаковых цифр, что позволяет разделить процесс на несколько простых действий.

Конечно, может показаться, что приведенный пример не слишком ярок. Но он показывает исключительно сильную сторону метода декомпозиции трудоемкой задачи. Оказывается такую задачу, при  условии высокой стандартизации данных можно не просто разбить на ряд подзадач, а на ряд одинаковых подзадач формально отличающихся  друг от друга, но требующих одного и того же набора операций. Как в приведенном примере. Формально сложение триллионов и единиц – это разные задачи, а фактически выполняются они одинаково и даже более того одинаково быстро. А в качестве бонуса, мы получаем возможность, создать арифметическое устройство, работающее на примитивных принципах.
Если кому-то пример не показался интересным, замечу, что не всегда в распоряжении человечества были компьютеры и другая техника. Было время, когда изобретение позиционной системы счисления и разработка на ее базе простых  методов выполнения арифметических операций было по настоящему революционным событием.

Пример третий

Еще один пример сведения сложной задачи к трудоемкой и к выполнению одной и той же стандартной операции,  – «решето Эратосфена». 
Математики Древней Греции уделяли большое внимание простым числам. Этот числовой объект очень популярен и в современной математике, так как простые числа скрывают в себе глубокие закономерности числового ряда. Разумеется, для исследования, необходимо иметь некоторое их количество. Сегодня, с наличием мощной компьютерной техники это не проблема, но у древних греческих математиков, даже не было бумаги в нашем современном понимании этого материала. А очевидный алгоритм поиска простых требует большого объема вычислений, и не просто вычислений, а большого количества операций деления. Действительно простое число это число без делителей, и для того, чтобы установить этот факт, надо проверяемое число попытаться разделить без остатка на большое количество меньших чисел. И чем исследуемое число больше, тем больше кандидатов на делитель и, следовательно, больше операций деления.

Эратосфен нашел очень изящный выход из этого затруднения. Ясно, что делители есть смысл искать только среди простых чисел, ведь все составные числа состоят именно из простых. Кажется, это соображение не упрощает ситуацию, так как для определения простоты исследуемого числа необходимо найти все простые меньшие его, что похоже на тавтологию. Но на самом деле это не так.
Для первого шага проверки достаточно первого, самого маленького простого. А оно известно - это число 2. Если мы исключим из проверки все кратные 2, то тем самым сразу найдем следующее минимальное простое – 3. Если следующим шагом выбить все кратные 3, то найдем следующее простое – 5. Покажем весь процесс пошагово на примере ряда чисел от 2 до 20

Шаг 0: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
Шаг 1: 0 3, 0, 5, 0, 7, 0, 9, 0, 11, 0, 13, 0, 15, 0, 17, 0, 19, 0
Шаг 2: 0, 3, 0, 5, 0, 7, 0, 0, 0, 11, 0, 13, 0, 0, 0, 17, 0, 19, 0

Все оставшиеся числа в этом ряду очевидно простые. Обратим внимание на следующие обстоятельства. Во-первых, мы нашли не одно простое, а все от 2 до 20. То есть алгоритм Эратосфена определяет простые числа оптом. Во-вторых, процесс был завершен за два шага. В-третьих, заметим, действительно нет никакой необходимости в операции деления. Для каждого найденного простого числа, например N, чтобы найти кратные ему, достаточно отсчитать от него N чисел и очередное обязательно будет кратным и, следовательно, составным. И самое главное, алгоритм действительно свел проверку к стандартной процедуре, получающей перед началом очередной итерации простое число для поиска новых кратных.
Конечно, идея Эратосфена сегодня, при наличии мощной вычислительной техники уже не актуальна, но ведь речь идет о математике древнего мира. Да и нам этот пример был необходим не как метод поиска простых, а как иллюстрация идеи упрощения задачи.

Минимизация инструментальных средств
   
Технологическое  развитие и рост знаний, особенно в области точных наук и, прежде всего математики,  оказывает всем нам медвежью услугу. Конечно, знание множества сильных математических законов дает людям интеллектуальный инструментарий, позволяющий быстро получать решения серьезных задач. А доступность вычислительных ресурсов, как кажется, расширяет наши возможности практически безгранично. Современный офисный компьютер или обыкновенный ноутбук в 70-х годах, да и в 80-х наверное воспринимался бы как суперкомпьютер сегодня. Ну а суперкомпьютеры имеют вычислительную мощь трудно представимую даже технически развитому, современному человеку.
А медвежья услуга  состоит в том, что мы постепенно заменяем мышление на использование готовых шаблонов решения и их техническую реализацию.  С точки зрения чистой экономики общества потребления это неплохо. Действительно зачем мыслить в обществе цель которого - экономика способная производить все больше и больше товаров по все более низким ценам. Но если вдруг общественная парадигма изменится, то может оказаться, что мы более потеряли, нежели приобрели.

Но это так сказать высокая философия. На самом деле все гораздо прозаичнее. Интеллект нам нужен в любом случае. Даже в обществе высокоразвитой технологии умение мыслить очень и очень значимо. Иногда бывает полезно, ни в коем случае не отказываясь от мощного аппарата математики, сложных естественнонаучных знаний, поглядеть на мир с другой точки зрения, не снабженной мощным инструментарием. И иногда можно найти более простое и даже более эффективное решение простыми средствами.

Таковая возможность имеет фундаментальное значение. Сложность науки и ее методов постоянно растет. Рост практически экспоненциальный, за что мы должны платить возрастающей специализацией ученых, инженеров и даже просто рабочих рук. Все меньше и меньше остается людей  способных увидеть в целом даже не  все здание науки, а и ее отдельные корпуса и интуитивно понятно, что такая ситуация не очень хороша. Поэтому полезно, по возможности, упрощать здание науки, а для этого важен навык умения решения задач минимальными средствами. Причин для этого две. Глобально, полезно пытаться спрямить экспоненту сложности знания, но не менее важно и то обстоятельство, что простое решение, найденное минимальными средствами может заключать в себе новые фундаментальные возможности нашего интеллекта. И кстати не зря же было сказано – «Все гениальное просто».
Есть легенда, согласно которой, Ферма доказательство своей Великой теоремы (она так и называется) изложил на полях библии. Это говорит о краткости его доказательства и использовании нетривиальных методов. Спустя сотни лет доказательство этой теоремы было найдено, но с использованием сложнейших методов современной математики. Над сложной версией доказательства работали математики высочайшей квалификации, что дало научному сообществу повод предположить ошибку в доказательстве Ферма. Но оригинала никто не видел, и загадка Ферма осталась не в виде теоремы, а в виде вопроса – как и что на полях Библии написал великий математик.         

Конечно, в реальной задаче, которую необходимо решить за ограниченное время, требование ограничить себя в инструментах, выглядит противоестественным. Такое ограничение разумно в рамках педагогической задачи совершенствования способности мыслить и находить нетривиальные решения. Но и в области инженерных и изобретательских задач человек иногда ограничен в своем инструментарии. Поэтому простое и эффектное решение в сфере техники всегда выглядит очень привлекательно и необычно. А если речь идет  о находке древних инженеров, то возникает соблазн найти иррациональное объяснение, например помощь инопланетной сверхцивилизации.
Хотя зачем пришельцам строить, например, каменные пирамиды в Древнем Египте?
Впрочем, загадка пирамид Древнего Царства становится загадкой, только если считать тяжелую строительную технику обязательной на стройплощадке пирамиды и особенно большие подъемные краны. Действительно, а как без кранов поднимать тяжелые каменные блоки на большую высоту? Проблема возникает из современного представления о строительстве. Ведь что мы, прежде всего, видим на стройке высокого здания – большие краны. Далее наш разум подкидывает идею о том, что кран это единственная возможность поднять высоко тяжелый блок, что является серьезной логической ошибкой. А почему собственно надо именно поднимать? При том объеме песка, который всегда был в Египте  можно засыпать им уже  построенную часть пирамиды, и таким образом стройплощадка просто будет непрерывно подниматься вместе с пирамидой. Объем работы конечно возрастает, но вопрос только в количестве рабов, вопрос в древнем мире решаемый без особых моральных проблем.

Очень интересное техническое решение с использованием минимальных технических средств, представляет собой водонапорная башня. Напор воды в трубопроводе небольшого населенного пункта можно обеспечить непрерывно работающими насосами. А если это технически невозможно, то водонапорная башня представляет собой приемлемое решение. Просто надо придумать, как доставлять воду в одном месте на определенную высоту вместо того, чтобы думать как доставлять ее множеству конечных потребителей. Этот же принцип работает в частных домах с отоплением от собственного котла. Проблема та же, как заставить воду перемещаться по трубам системы отопления, где взять для этого давление? И решение дает идея маленькой водонапорной башни, в виде бака на чердаке дома. Принцип тот же, высоко расположенный бак – создает необходимое давление.

Оригинальное решение определения плотности вещества было найдено Архимедом, случай уже классический. Действительно, если есть возможность взять кубик вещества или предмет другой простой формы, то задача решается легко, но если форма предмета сложная? Тогда, как правильно решил Архимед, можно воспользоваться тем обстоятельством, то любой предмет вытесняет количество жидкости равно собственному объему.       
Неплох пример с вычислением числа Пи. Напомню оно равно отношению диаметра к длине окружности.  Но окружность – это кривая линия, определение же длин кривых довольно нетривиальная задача. Но мы можем вписать в окружность многоугольник и чем в этом многоугольнике больше сторон, тем больше он похож на окружность и тем точнее его периметр  соответствует длине окружности.  И тогда для решения задачи достаточно простой линейки.

Пример четвертый

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

Пример такой задачи – построение правильного шестиугольника. Что у нас всегда под руками для геометрических построений. Циркуль и линейка. Достаточно доступен транспортир для измерения углов, но давайте подумаем, что можно сделать с этой задачей только с двумя инструментами. Построение только циркулем и линейкой – это класс очень популярных геометрических задач. И кстати, здесь дело не только в минимизации инструментария. Возможность решения задач с такими ограничениями есть проявление фундаментальных свойств пространства, которые не поймешь, если в твоем распоряжении мощные компьютерные программы умеющие все и всегда.

Прежде всего, идея минимизации инструментария требует максимального упрощения задачи. В отношении правильного шестиугольника это вполне возможно. Если провести отрезки от вершин к центру, то легко увидеть, что правильный шестиугольник состоит из одинаковых, равносторонних треугольников. Действительно полный угол, опирающийся на центр, естественно содержит 360 градусов, тогда углы образованные упомянутыми  отрезками имеют 60 градусов. Более того, отрезки образующие угол одинаковы, а это признак равностороннего треугольника.
Это означает, что можно свести построение правильного шестиугольника к построению равностороннего треугольника. Решение этой задачи несложно найти в популярной литературе по математике, здесь и сейчас нас интересует только пример реализации общего принципа минимизации инструментария, но все же пройдем в решении немного дальше.

Как строится равносторонний треугольник. Проведем прямую линию. Отметим на ней одну точку. Пусть это будет точка A. Возьмем циркуль с произвольным не очень большим раствором и построим окружность с центром в точке A. Эта окружность пересечет прямую в двух точках. Выберем любую из них и обозначим буквой B. Затем этим же раствором циркуля проведем две окружности из точек A и B. Они пересекутся в двух точках. Возьмем любую из них и обозначим как точку C. Треугольник, построенный на точках A, B, C будет равносторонним, так как все его стороны равны одному и тому же раствору циркуля. Следующим шагом необходимо построить еще один такой же треугольник с общей вершиной A и общей стороной либо [A, B], либо [A, C]. Это можно сделать точно такой же процедурой, взяв за основу прямую построенную на точке A и любой другой вершине этого же треугольника.
В чем мораль примера? Задача по своей сложности должна соответствовать инструментарию. Конечно, всегда есть вопрос степени соответствия. Например, плотники в русских деревнях могли построить избу с помощью практически одного топора. Но собственно русская изба, даже очень хорошая, не слишком сложное сооружение в инженерном смысле. Этим самым я хочу сказать, что усложнение инструмента  с ростом сложности задачи процесс достаточно естественный. Поэтому еще раз поставим акцент – задача по своей сложности должна соответствовать инструментарию. Поэтому если вам кажется, что это не так, то в отношении задачи необходимо провести декомпозицию, то есть разбить ее на более простые. В разобранном только что примере правильный шестиугольник был разбит на равносторонние треугольники, и исходная задача свелась к двум вопросам: как построить циркулем и линейкой один такой треугольник и второй вопрос – как достроить очередной треугольник к уже имеющемуся.      

Упрощение задачи

Собственно, все что говорилось выше это об упрощении задачи. И есть еще одна интересная ситуация к которой этот термин применим. Декомпозиция предполагает достаточно большой объем задачи, так как делится на части именно объем. Более того, предполагается, что такое деление возможно. А оно возможно не всегда. Задача может иметь краткое условие и как кажется быстрое решение, но это быстрое решение оказывается довольно глубоко закопанным. В этом случае может быть полезно решить более простую задачу в надежде, что после - эту простую задачу окажется возможно свести к исходной. В этом случае задача заменяется не группой задач, как то предписывает метод декомпозиции, а одной. 

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

Пример пятый      

Рассмотрим движение тела в поле тяготения. Максимально возможная и наиболее интересная задача требует множества тел разной массы,  движущихся в трехмерном пространстве в разных направлениях и с разной скоростью. Для описания такой картины необходимы всего лишь три закона. Самый главный и определяющий взаимодействие тел  - это Закон Всемирного тяготения. Для движения изолированного тела, при условии, что известна сила на него воздействующая, существует Второй закон Ньютона дающий возможность вычислить ускорение при известной силе и массе. И, наконец, есть закон кинематики позволяющий определять движение тела при известных скорости и ускорении. Как кажется все предельно ясно. Законы известны, их форма очень проста. В чем здесь проблема?

А проблема в том, что исходный, определяющий всю картину движения закон – Закон Всемирного тяготения, описывает не действие,  а взаимодействие. И это очень многое меняет.  Суммарная сила тяготения действует на каждое тело, определяя его ускорение. Ускорение определяет закон движения, изменяя взаимное положение тел, а изменение взаимного положения тел изменяет условия применения Закона Всемирного тяготения. То же самое, но проще: расстояние между телами, входит как аргумент в формулы сил тяготения, сила входит как аргумент в формулу ускорения, а ускорение – аргумент для вычисления расстояний. Ужас ситуации в том, что нет независимых величин. Любое изменение  любой выбранной  величины приводит к изменению других, а они изменяют величину, выбранную и этот процесс взаимовлияния непрерывен. Мы же хорошо умеем работать только с формулами вида y = f(x). Где x – независимая  величина и подстановка в формулу значения x сразу дает значение y.   

Процесс изменения взаимозависимых величин описывается дифференциальными уравнениями, решение которых качественно сложнее обычных алгебраических уравнений.  Более того, для описания картины движения множества тел придется описывать целую систему дифференциальных уравнений, что делает исходную задачу практически необозримой. А значит есть смысл задуматься о возможных упрощениях.    
Мы не будем разбирать ход решения задачи, так как ее уровень сложности все же требует специальных знаний и навыков, как впрочем, и очень многие реально интересные задачи. Мы ограничим свои рассуждения некоторыми общими положениями, намечающими путь к решению.

Идея первая – можно уйти от трехмерного пространства и ограничиться плоскостью и даже пространством в одно измерение, то есть расположить все тела по одной линии. Три упомянутых выше базовых закона в одномерном пространстве работают также, как и в многомерном, но формулы, описывающие одномерное пространство существенно короче и технически проще. Иногда различие размерности не безразлично для физических процессов, но это не наш случай. Действительно, разобравшись с действием силы тяготения, и ее следствий на одномерной модели, небольшим математическим преобразованием можно перейти к двумерной и трехмерной модели.

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

В заключение

Необходимость в разбиении задачи на подзадачи и сведение исходного условия к более простой формулировке есть результат ограниченности наших интеллектуальных возможностей. Это реальность, переживать из-за которой не стоит. Если бы наш мозг имел в разы большие ресурсы, все равно нашлись бы неподъемные задачи и для него. Что же касается рассмотренного метода, он дает человеческому мышлению практически неограниченные возможности.
Как бы не была сложна задача, ее довольно часто можно упростить, свести к решению нескольких задач. Далее все решается уже не единичным интеллектом, а совокупным, мощь которого сегодня определяется не только количеством индивидуумов способных к интеллектуальной работе, но и таким ресурсами, как накопленное знание, и быстро растущие возможности машин способных к  работе с информацией и даже знаниями. В общем, как и было сказано выше, декомпозиция и упрощение это фундаментальные методы работающие на эффективность нашего мыслительного аппарата.
      


Рецензии