Un algoritmo de búsqueda ternaria es una técnica en ciencias de la computación para hallar los extremos de una función (máximo o mínimo) de una función unimodal. Una búsqueda ternaria determina que el extremo que se busca, no puede estar en el primer tercio del dominio o que no puede estar en el último tercio del dominio, luego se repite el proceso en los dos tercios restantes. Una búsqueda ternaria es un ejemplo de un Algoritmo divide y vencerás (ver Algoritmo de búsqueda).

Función

Supongamos que estamos buscando un máximo de f(x) y sabemos que el máximo se encuentra en algún lugar entre A y B. Para que el algoritmo sea aplicable debe haber un valor x tal que

  • para todo a,b con A ≤ a < bx, tenemos que f(a) < f(b), y
  • para todo a,b con xa < b ≤ B, tenemos que f(a) > f(b).

Algoritmo

Sea f(x) una función unimodal en el intervalo [l; r]. Tomamos dos puntos m1 y m2 en este segmento: l < m1 < m2 < r. Entonces, hay tres posibilidades:

  • Si f(m1) < f(m2), entonces el máximo requerido no puede ubicarse en el lado izquierdo - [l; m1]. Esto significa que el máximo debe buscarse en el intervalo [m1;r]
  • Si f(m1) > f(m2), de manera similar al anterior caso. Ahora, el máximo requerido no puede estar en el lado derecho - [m2; r], así que debe buscarse en el segmento [l; m2]
  • Si f(m1) = f(m2), entonces la búsqueda debe realizarse en [m1; m2], pero este caso se puede atribuir a cualquiera de los dos anteriores (para simplificar el código). Tarde o temprano, la longitud del segmento será un poco menor que una constante predeterminada, y el proceso podrá detenerse.

Puntos de partición m1 y m2:

  • m1 = l (r-l)/3
  • m2 = r - (r-l)/3
Tiempo de ejecución
T ( n ) = T ( 2 n / 3 ) 1 = Θ ( log n ) {\displaystyle T(n)=T(2n/3) 1=\Theta (\log n)}

Algoritmo Recursivo

en lenguaje Python:

en lenguaje C:

Algoritmo Iterativo

en lenguaje Python:

en lenguaje C:

Véase también

  • Búsqueda de la sección dorada
  • Búsqueda binaria
  • Búsqueda exponencial

Referencias

Enlaces externos


Búsqueda ternaria Barcelona Geeks

Forma Ternaria

Forma ternaria

Ternary Search YouTube

Terraria ntower Dein