stringtranslate.com

búsqueda ternaria

Un algoritmo de búsqueda ternario [1] es una técnica en informática para encontrar el mínimo o máximo de una función unimodal .

La función

Supongamos que estamos buscando un máximo de y que sabemos que el máximo se encuentra en algún punto entre y . Para que el algoritmo sea aplicable, debe haber algún valor tal que

Algoritmo

Sea una función unimodal en algún intervalo . Tome dos puntos cualesquiera y en este segmento: . Entonces hay tres posibilidades:

puntos de elección y :

Orden de tiempo de ejecución

Algoritmo recursivo

def  ternary_search ( f ,  izquierda ,  derecha ,  precisión_absoluta )  ->  float : """Izquierda y derecha son los límites actuales;  el máximo está entre ellos.  """ if abs ( derecha - izquierda ) < precisión_absoluta : return ( izquierda + derecha ) / 2              tercio_izquierdo  =  ( 2 * izquierda  +  derecha )  /  3  tercio_derecho  =  ( izquierda  +  2 * derecha )  /  3 si  f ( tercero_izquierdo )  <  f ( tercero_derecho ):  devuelve  búsqueda_ternaria ( f ,  tercio_izquierdo ,  derecha ,  precisión_absoluta )  más :  devuelve  búsqueda_ternaria ( f ,  izquierda ,  tercio_derecho ,  precisión_absoluta )

Algoritmo iterativo

def  ternary_search ( f ,  izquierda ,  derecha ,  precisión_absoluta )  ->  float : """Encontrar el máximo de la función unimodal f() dentro de [izquierda, derecha].  Para encontrar el mínimo, invierta la declaración if/else o invierta la comparación.  " "" mientras que abs ( derecha - izquierda ) >= precisión_absoluta : tercio_izquierdo = izquierda + ( derecha - izquierda ) / 3 tercio_derecho = derecha - ( derecha - izquierda ) / 3                          si  f ( tercero_izquierdo )  <  f ( tercero_derecho ):  izquierda  =  tercio_izquierdo  más :  derecha  =  tercio_derecho # Izquierda y derecha son los límites actuales; el máximo está entre ellos  retorno  ( izquierda  +  derecha )  /  2

Ver también

Referencias

  1. ^ "Búsqueda ternaria". cp-algoritmos.com . Consultado el 21 de agosto de 2023 .