Aplicar un algoritmo de búsqueda binaria para optimizar el programa para calcular la vida útil de los enlaces de hidrógeno.

Aplicar un algoritmo de búsqueda binaria para optimizar el programa para calcular la vida útil de los enlaces de hidrógeno.

1. Vida útil del enlace de hidrógeno

2. Búsqueda binaria

3. Resumen

1.Vida útil del enlace de hidrógeno

Insertar descripción de la imagen aquí
Esta es la forma matemática de la vida útil del enlace de hidrógeno, lo que significa si se forma un enlace de hidrógeno en el momento 0 y si el par de enlaces de hidrógeno sigue siendo un enlace en el momento t. Por lo tanto, después de obtener los enlaces emparejados de cada cuadro, el núcleo de la programación es encontrar si los enlaces de hidrógeno emparejados en el momento anterior todavía existen en el momento siguiente, por lo que es básicamente una búsqueda. Por supuesto, podemos utilizar la búsqueda transversal más simple y violenta, pero esta búsqueda será muy lenta cuando la cantidad de datos sea grande.

2.Búsqueda binaria

La búsqueda binaria también se denomina media búsqueda. La premisa principal de la búsqueda binaria es que la matriz debe estar ordenada, lo que implica varios algoritmos de clasificación, como clasificación por burbujas, clasificación por inserción, clasificación rápida, clasificación por cubo, etc. La búsqueda binaria en el peor de los casos es n/2, n/4, n/8..., hasta 1. Entre ellos, n significa que hay n números.

n ( 1 2 ) x = 1 ⟹ 2 x = n ⟶ log ⁡ 2 ( n ) = xn\left(\frac{1}{2}\right)^x=1 \Longrightarrow 2^x=n \longrightarrow \ iniciar sesión _2(n)=xnorte(21)X=12X=norteiniciar sesión2( n )=De x
, podemos ver que cuando hay n datos, el valor se puede encontrar consultando como máximo x veces. De la complejidad temporal del algoritmo a continuación, podemos ver que la complejidad temporal del recorrido de fuerza bruta es lineal, mientras que la complejidad temporal de la búsqueda binaria es una función logarítmica. Cuando la cantidad de datos es grande, la velocidad de la búsqueda binaria es particularmente obvia !
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Figura citada de leetbook https://leetcode.cn/leetbook/read/Illustration-of-algorithm/r81qpe

Esta es una búsqueda binaria implementada de forma recursiva y también se puede implementar mediante un bucle.

int find(struct result *data, int start, int end, int value){
    
    
    if (start <= end){
    
    
        int mid = (start + end) / 2;
        int midvalue = (data + mid) -> OW[0];
        if (midvalue == value){
    
    
            return mid;
        }
        if (value < midvalue){
    
    
            return find(data,start,mid-1,value);
        }
        if (value > midvalue){
    
    
            return find(data,mid+1,end,value);
        }
    }
    return -1;
}

Insertar descripción de la imagen aquí
Este es el tiempo de ejecución del recorrido por fuerza bruta, que es de aproximadamente 1 hora.
Insertar descripción de la imagen aquí
Con la misma cantidad de datos, la búsqueda binaria solo toma 6 minutos. ¡El efecto es evidente!

3. Resumen

Este artículo trata principalmente sobre el uso del algoritmo de búsqueda binaria para optimizar el programa para calcular la vida útil del enlace de hidrógeno. La parte principal de la optimización es encontrar si los enlaces de hidrógeno emparejados en el momento anterior todavía existen en el momento siguiente. Puede ver que el cálculo La velocidad mejora después de usar la búsqueda binaria. La mejora es muy obvia. Cabe señalar que la premisa de la búsqueda binaria es que primero es necesario ordenar la matriz, lo que puede requerir el uso de algunos algoritmos de clasificación. Además, también existen otros algoritmos de búsqueda, como la búsqueda por interpolación y la búsqueda de Fibonacci.

Supongo que te gusta

Origin blog.csdn.net/weixin_45765073/article/details/127526371
Recomendado
Clasificación