В математике и информатике алгоритмический метод [1] — это общий подход к реализации процесса или вычисления . [2]
Существует несколько широко признанных алгоритмических методов, которые предлагают проверенный метод или процесс проектирования и построения алгоритмов. В зависимости от цели могут использоваться различные методы, которые могут включать поиск , сортировку , математическую оптимизацию , удовлетворение ограничений , категоризацию , анализ и прогнозирование . [3]
Грубая сила — это простой и исчерпывающий метод, который оценивает все возможные результаты для поиска решения. [4]
Техника «разделяй и властвуй» рекурсивно разлагает сложные проблемы на более мелкие подзадачи. Затем решается каждая подзадача, и эти частичные решения повторно объединяются для определения общего решения. Этот метод часто используется для поиска и сортировки. [5]
Динамическое программирование — это систематический метод, при котором сложная проблема рекурсивно разбивается на более мелкие, перекрывающиеся подзадачи для решения. Динамическое программирование сохраняет результаты перекрывающихся подзадач локально, используя метод оптимизации, называемый мемоизацией . [6]
Эволюционный подход разрабатывает возможные решения, а затем, аналогично биологической эволюции, выполняет серию случайных изменений или комбинаций этих решений и сравнивает новые результаты с функцией приспособленности. Наиболее подходящие или многообещающие результаты отбираются для дополнительных итераций для достижения общего оптимального решения. [7]
Обход графа — это метод поиска решений задач, которые можно представить в виде графов . Этот подход является широким и включает в себя поиск в глубину , поиск в ширину , обход дерева и множество конкретных вариантов, которые могут включать локальную оптимизацию и исключение пространств поиска, которые могут быть определены как неоптимальные или невозможные. Эти методы могут использоваться для решения множества задач, включая задачи поиска кратчайшего пути и удовлетворения ограничений. [8]
Жадный подход начинается с оценки одного возможного результата из множества возможных результатов, а затем локально ищет улучшение этого результата. Когда будет обнаружено локальное улучшение, процесс повторится и снова будет локально искать дополнительные улучшения вблизи этого локального оптимума. Жадный метод, как правило, прост в реализации, и эти серии решений можно использовать для поиска локальных оптимумов в зависимости от того, где начался поиск. Однако жадные методы не могут определить глобальный оптимум для всего набора возможных результатов .
Эвристический подход использует практический метод для достижения немедленного решения , не гарантированно являющегося оптимальным. [10]
Методы обучения используют статистические методы для категоризации и анализа без явного программирования. В эту категорию включены обучение с учителем , обучение без учителя , обучение с подкреплением и методы глубокого обучения . [11]
Математическая оптимизация — это метод, который можно использовать для расчета математического оптимума путем минимизации или максимизации функции. [12]
Моделирование — это общий метод абстрагирования реальной проблемы в структуру или парадигму , которая помогает в ее решении. [13]
Рекурсия — это общий метод разработки алгоритма, который вызывает все более простую часть задачи до одного или нескольких базовых случаев с определенными результатами. [14] [15]
Скольжение окна используется для уменьшения использования вложенных циклов и замены их одним циклом, тем самым уменьшая временную сложность.