познание
Способ познания вещей: понятие, суждение, рассуждение, а рассуждение делится на индукцию и дедукцию.
Математическая индукция
Простейшая и наиболее распространенная математическая индукция состоит в том, чтобы доказать, что предложение выполняется, когда n равно любому натуральному числу. Доказательство состоит из следующих двух шагов:
-
Докажите, что предложение верно при n = 1.
-
Докажите, что если предложение верно для n = m, то отсюда следует, что предложение верно для n = m+1. (m представляет собой любое натуральное число)
Весь процесс похож на костяшки домино, пока падает предыдущая костяшка, следующая рядом с ней тоже падает.
Вторая математическая индукция
Второй принцип математической индукции состоит в том, чтобы иметь предложение о натуральном числе n, если:
(1) При n=1 предложение верно;
(2) Предполагая, что предложение верно при n≤k(k∈N), можно сделать вывод, что предложение также верно при n=k+1.
Тогда согласно ①② предложение верно для всех натуральных чисел n.
Разница между двумя вышеуказанными заключается в использовании информации:
-
Основной метод индукции: для n весь процесс рассуждения может быть завершен только путем изучения предыдущего состояния n-1, мы называем эту модель марковской моделью;
-
Метод индукции более высокого порядка: соответственно, для n весь процесс рассуждения может быть завершен только путем изучения первых n-1 наборов состояний {1,2...n-1}, что часто называют марковской моделью более высокого порядка. ;
-
В компьютерных алгоритмах рассуждения марковской модели более высокого порядка называются «динамическим программированием», а рассуждения марковской модели соответствуют «жадному методу».
-
Визуализация процесса расчета
Когда мы не имеем ни малейшего представления о проблеме, мы пытаемся нарисовать свои собственные мысли, которые могут помочь нам прояснить наши мысли.
-
разборка подзадачи
Очень важной частью компьютерного мышления является разложение сложных проблем на ряд простых задач посредством модульности.
-
ломать предположения
Это ключ к поиску новых решений Нам нужно прорваться сквозь предположения, чтобы найти другой мир.
Последний принцип — аналогия: нам нужно постоянно обобщать существующие знания, а затем встраивать новые вещи, с которыми мы сталкиваемся, в наше существующее дерево знаний.
Ниже приводится конкретная тема динамического программирования.
максимальная доходность акции
Описание проблемы:
Учитывая массив A[1,2...N], где A[i] представляет собой цену акции в i-й день, мы можем одновременно владеть не более чем одной акцией. продать один раз, как максимизировать прибыль? Например, изменение на складе: 1, 4, 9, 2, 7, 3.
Лучший план: 1 купить 9 продать, получить прибыль 8, если все вниз, лучше не торговать.
Давайте сначала поговорим о визуализации всего процесса.
Мы знаем процесс, рисуя картинку.Давайте посмотрим на код ниже:
Далее мы увеличим сложность и сможем совершать k транзакций.Оговорено, что транзакции не могут быть вложенными, то есть после покупки вы должны продать, прежде чем снова сможете купить.
Например: A=[7,1,5,3,6,4], K=3, затем купить по 1,3, продать по 5,6, максимальная прибыль 7.
Сначала нарисуем:
На картинке у нас есть следующий код:
Суммировать
В этой статье рассматривается динамическое программирование и приводится пример решения задач динамического программирования, запомните процедуру: 3+1.
Ваша поддержка является движущей силой для меня, чтобы продолжать писать, и я с нетерпением жду нашего общего прогресса.