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