Искусство решения задач

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

В доказательство нерегулярной, творческой природы процесса решения задач приведем следующие нестрогие этапы решения задачи, предложенные в 1945 году математиком Г. Пойа (G. Роуа) и остающиеся основными принципами, на которых основываются сегодня попытки обучать навыкам решения задач.

Этап 1. Понять задачу.

Этап 2. Разработать план решения задачи.

Этап 3. Выполнить план.

Этап 4. Оценить точность решения и его возможности как инструмента для решения других задач.

В переводе на язык создания программ эти этапы выглядят следующим образом.

Этап 1. Понять задачу.

Этап 2. Понять, как алгоритмическая процедура может решить задачу.

Этап 3. Сформулировать алгоритм и записать его в виде программы.

Этап 4. Оценить точность работы программы и ее возможности как инструмента для решения других задач.

Следует подчеркнуть, что эти этапы не являются шагами, которым нужно следовать, пытаясь решить задачу, а представляют собой этапы, которые когда-нибудь будут выполнены в процессе решения. Главное слово здесь «следовать». Вы не решите задачи, следуя каким-либо шагам. Скорее, для того чтобы решить задачу, вы должны проявить инициативу. Если вы подходите к процессу решения с мыслью: «Я выполнил этап 1, теперь можно приступать к этапу 2», вы не добьетесь успеха. Однако, решив задачу, вы можете оглянуться назад и понять, что в процессе нахождения решения следовали этапам Пойа.

Другое важное наблюдение заключается в том, что этапы Пойа не обязательно выполняются в такой последовательности. Вопреки заявлениям некоторых авторов, успешное решение задачи часто начинается с формулировки стратегии ее решения (этап 2) прежде полного понимания самой задачи (этап 1). Затем, если эта стратегия не работает (во время выполнения этапа 3 или 4), то человек, решающий задачу, осмысливает ее более глубоко и возвращается к формированию другой, более успешной стратегии.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: