Парадокс изобретателя
Парадокс изобретателя — это явление, возникающее при поиске решения проблемы. Вместо того, чтобы решать проблему определённого типа (что интуитивно выглядит проще), может оказаться, что проще найти решение более общей проблемы, которое охватывает специфику искомого решения. Парадокс изобретателя использовался для описания явлений в математике, программировании и логике, а также в других областях, связанных с критическим мышлением.
История
В книге «Как решать задачу» (стр. 121) венгерский математик Дьёрдь Пойа приводит определение парадокса изобретателя.
Или, другими словами, при решении проблемы, возможно, придётся решить более общую проблему, чтобы получить правильно работающее частное решение[1].
При решении проблемы естественным стремлением обычно является устранение как можно большей излишней изменчивости и ограничение рассматриваемого предмета, насколько это возможно. Это может способствовать появлению непредвиденных и неудобных параметров[2]. Цель состоит в том, чтобы найти элегантные и относительно простые решения более широких проблем, позволяющие сосредоточиться на конкретной части, которая изначально вызывала беспокойство[3].
В этом заключается парадокс изобретателя: часто бывает значительно проще найти общее решение, чем более конкретное, поскольку общее решение, естественно, может иметь более простой алгоритм и более понятный способ и обычно может занимать меньше времени по сравнению с решением конкретной проблемы[2].
Примеры
Математика
Найти сумму чисел последовательно от 1 до 99:
- [math]\displaystyle{ 1 + 2 + 3 + ... + 97 + 98 + 99\, }[/math]
Этот процесс, хотя и не невозможно осуществить в уме, для большинства может оказаться трудным. Однако существует возможность обобщить проблему, в этом случае путём изменения порядка следования слагаемых ряда на:
- [math]\displaystyle{ (1 + 99) + (2 + 98) + (3 + 97) + ... + (48 + 52) + (49 + 51) + (50) \, }[/math]
В таком виде пример может быть решён большинством без использования калькулятора[2]. Если заметить, что сумма наименьшего и наибольшего чисел, участвующих в проблеме, — 1 + 99 — равна 100, и что следующая сумма пары наименьшего и наибольшего чисел 2 + 98 также суммируется до 100, можно также понять, что все 49 чисел являются совпадающими парами, и каждая сумма равна 100, за исключением единственного числа в середине — 50. Изобретательный математик переформулирует задачу в уме как [math]\displaystyle{ 49 \times 100 + 50 }[/math]. Поскольку [math]\displaystyle{ 49 \times 100 }[/math] легко вычислить, добавив 2 нуля к разрядам числа 49: [math]\displaystyle{ 49 \times 100 + 50 = 4950 }[/math]. Хотя текстовое описание этого процесса кажется сложным, каждый из шагов, выполняемых в уме, прост и быстр.
Другой пример присутствует в нескольких приложениях, и его проще всего объяснить, проанализировав относительно простую математическую последовательность[4].
- [math]\displaystyle{ 1 + 3 = 4\, }[/math]
- [math]\displaystyle{ 1 + 3 + 5 = 9\, }[/math]
и далее в последовательности:
- [math]\displaystyle{ 1 + 3 + 5 + 7 + 9 = 25\, }[/math]
Позволяя последовательности продолжаться до точки, где невозможно быстро найти сумму, мы можем её упростить, обнаружив, что сумма последовательных нечётных чисел выглядит следующим образом[1]:
- [math]\displaystyle{ \sum_{k=1}^{n}\mathbf(2k-1) = n^2. }[/math]
Программирование
Долго писать программу, решающую задачу с 25-ю конкретными объектами. Проще решить задачу для n объектов, а затем применить её к случаю, когда n = 25[5].
Приложения
Этот парадокс имеет применение при написании эффективных программ. Писать специализированные программы интуитивно понятнее, но на практике может оказаться проще разработать более общие процедуры[6]. По словам Брюса Тейта, некоторые из наиболее успешных фреймворков представляют собой простые обобщения сложных проблем, а плагины веб-серверов Visual Basic, Интернета и Apache являются основными примерами такой практики[3]. При исследовании семантики языка многие логики сталкиваются с этим парадоксом. Пример приложения можно увидеть в присущей логикам заботе об условиях истинности в предложении, а не, фактически, об условиях, при которых предложение может быть истинно[1]. Вдобавок было показано, что парадокс находит применение в промышленности[2].
Примечания
Литература
- Barwise, Jon. Situations in language and logic // The situation in logic. — Center for the Study of Language (CSLI), 1989. — P. 327. — ISBN 0-937073-33-4.
- Bentley, Jon Louis. Writing efficient programs. — Prentice-Hall, 1982. — P. 170. — ISBN 0-13-970251-2.
- Bentley, Jon Louis. Programming Pearls. — Addison-Wesley, 2000. — P. 239. — ISBN 0-201-10331-1.
- Pólya, Gyorgy. How to solve it: a new aspect of mathematic method. — Doubleday, 1957. — P. 253. — ISBN 0-691-08097-6.
- Tate, Bruce. Allow for Extension // Better, faster, lighter Java / Bruce Tate, Gehtland, Justin. — O'Reilly Media, Inc, 2004. — P. 243. — ISBN 0-596-00676-4.
- Welborn, Ralph. Collaborative DNA: Exploring the Dynamics // The Jericho principle: how companies use strategic collaboration to find new sources of value / Ralph Welborn, Kasten, Vincent A.. — John Wiley and Sons, 2003. — P. 276. — ISBN 0-471-32772-7.
Для улучшения этой статьи желательно: |