Estoy tratando de encontrar la complejidad de tiempo de esta función en la notación Theta. Ahora, n es un entero positivo, y lst es una lista con 2 números.¿Cuál es la complejidad temporal de esta función en el esquema?
(define (func n lst)
(if (= n 0) lst
(accumulate append null
(map (lambda (x)
(func (- n 1) (list x x)))
lst))))
Como saben, la complejidad de tiempo de agregación es Θ (n), donde n es el tamaño total de las listas. Traté de ver qué pasa si trato agregar y acumular como Θ (1) funciones, entonces obtengo:
T (n) = 2T (n-1) + Θ (1) que es -> Θ (1) 2^n)
¿Esto significa que la complejidad del tiempo real de esta cosa en la notación Theta es mucho mayor que Θ (2^n)?
Ni siquiera estoy seguro de que estoy en lo cierto con este supuesto solo, y de todos modos, no tengo ni idea de qué hacer si necesito tomar en consideración tanto se acumulan y añadir ...
I He perdido horas en esto, y realmente no entiendo por qué no puedo resolverlo por mi cuenta ... Cualquier ayuda sería gratamente apreciada.
por cierto, aquí está el código de acumular:
(define (accumulate op init lst)
(if (null? lst)
init
(op (car lst)
(accumulate op init (cdr lst)))))
Estoy tratando de llegar a la respuesta más precisa y razonablemente explicada, pero por ahora creo que estás en el camino correcto, ya que estás generando 2 nuevas recurrencias en cada llamada que va a O (2^n) complejidad. – ivanjovanovic