Está en la página 1de 2

David Marín Sala

COMPLEJIDAD COMPUTACIONAL

ALGORITMO DIVIDE Y VENCERÁS.

1. Introducción.
En el ámbito de la computación y la resolución de problemas, el "Algoritmo de Divide y
Vencerás" destaca como una estrategia bastante eficiente la cual trata tareas complejas al
dividirlas en subproblemas más simples. Esta técnica facilita la resolución de problemas
al dividirlos en partes más pequeñas, resolver cada parte de manera independiente y luego
combinar las soluciones para obtener el resultado final. El algoritmo se basa en la idea de
que es más sencillo resolver apartados más pequeños de un problema y luego combinar
esas soluciones para resolver el problema original.

2. Concepto y Definición.
La estrategia del algoritmo de Divide y Vencerás consta de tres etapas clave: la división,
la conquista y la combinación.
En la primera etapa, el problema se descompone en subproblemas más pequeños y
manejables. Posteriormente, estos subproblemas se resuelven de manera independiente
mediante la aplicación de la misma estrategia utilizada en la fase de división. Por último,
se integran las soluciones obtenidas de los subproblemas para alcanzar la solución del
problema original. De esta forma, habrás resuelto un problema que a simple vista
resultaba complicado de manera mas sencilla.

3. Complejidad Computacional.
Desde la perspectiva de la complejidad computacional, el algoritmo de Divide y Vencerás
busca optimizar el tiempo de ejecución. En muchos casos, la complejidad es logarítmica
(O(log n)), lo que significa una eficiencia bastante mejor en comparación con enfoques
lineales o cuadráticos. Sin embargo, la eficiencia depende del problema específico y de
cómo se divide y combina.
𝑂(log (𝑛))

Un ejemplo clásico de un algoritmo que emplea una complejidad computacional


logarítmica es el algoritmo de búsqueda binaria. Este algoritmo se basa en el principio de
Divide y Vencerás para encontrar un elemento en una lista ordenada.
En la búsqueda binaria, el enfoque es dividir repetidamente la lista por la mitad y descartar
una de las mitades. Este proceso se repite hasta que se encuentra el elemento deseado o
se determina que no está en la lista.
La complejidad logarítmica proviene del hecho de que, en cada paso, el tamaño del
conjunto de datos se reduce a la mitad. Por lo tanto, incluso para listas muy grandes, el
número de pasos requeridos para encontrar el elemento objetivo es mucho menor en
comparación con algoritmos lineales o cuadráticos.

𝐸𝑗𝑒𝑚𝑝𝑙𝑜 𝑂𝑟𝑑𝑒𝑛𝑎𝑐𝑖ó𝑛 𝐵𝑖𝑛𝑎𝑟𝑖𝑎

1
David Marín Sala
COMPLEJIDAD COMPUTACIONAL

4. Ventajas y Desventajas.
à Ventajas:
- Eficiencia en Complejidad Computacional: En muchos casos, el enfoque de
Divide y Vencerás ofrece una complejidad computacional más eficiente como ya
hemos logarítmica (O(log n)), lo que lo hace más rápido en comparación con
enfoques lineales o cuadráticos.
- Manejo de Problemas Complejos: Es especialmente efectivo para abordar
problemas complejos y grandes, ya que permite dividirlos en subproblemas más
manejables, facilitando la resolución independiente de cada subproblema.
à Desventajas:
- Complejidad de Implementación: La implementación del enfoque Divide y
Vencerás puede ser más compleja en comparación con enfoques más directos, lo
que puede dificultar su comprensión y desarrollo.
- Uso Ineficiente para Problemas Pequeños: Para problemas pequeños, el costo de
dividir y combinar puede superar los beneficios de la estrategia, lo que resulta en
un rendimiento subóptimo.

5. Implementación del Código.


A continuación, se presenta una implementación básica en Python del algoritmo
MergeSort, un ejemplo clásico de Divide y Vencerás:

También podría gustarte