Теория от примерни изпити Динамично програмиране. Анализ и примери



страница1/6
Дата22.01.2024
Размер150.76 Kb.
#120049
ТипРешение
  1   2   3   4   5   6
Теория-от-примерни-изпити

Теория от примерни изпити


  1. Динамично програмиране. Анализ и примери.

  1. Формулиране на рекурентни уравнения: Определяне на отношенията между подзадачите и началната задача.

  2. Идентификация на налагащи се подзадачи: Разделяне на главната задача на по-малки подзадачи.

  3. Запазване на резултатите от подзадачите: Техниката на мемоизация се използва за запазване на вече изчислени резултати, които после могат да бъдат използвани за оптимизация.

  4. Комбиниране на резултатите от подзадачите: Използване на резултатите от подзадачите за постигане на резултата на главната задача.

  • Пример за динамично програмиране може да бъде намирането на най-дългата нарастваща подредица (LIS - Longest Increasing Subsequence) в даден масив.

  • def lis(arr):

  • n = len(arr)

  • lis_lengths = [1] * n


  • for i in range(1, n):

  • for j in range(0, i):

  • if arr[i] > arr[j] and lis_lengths[i] < lis_lengths[j] + 1:

  • lis_lengths[i] = lis_lengths[j] + 1


  • return max(lis_lengths)


  • arr = [10, 22, 9, 33, 21, 50, 41, 60]

  • result = lis(arr)

print("Най-дългата нарастваща подредица е:", result)





  1. Сподели с приятели:
  1   2   3   4   5   6




©obuch.info 2024
отнасят до администрацията

    Начална страница