cadena de bloques

Configuración de Ritmo en el algoritmo (continuación)


Configuración de Ritmo en el algoritmo [continuación] de

 Tipo de algoritmo y su clasificación.

Cada algoritmo pertenece a una clase específica. La velocidad de un algoritmo se mide por las muchas operaciones básicas que realiza. Del orden de crecimiento de crecimiento, se clasifican de la siguiente manera:

Uno Algoritmo de tiempo constante b. Algoritmo logarítmico c. Algoritmo de tiempo lineal d. Algoritmo polinómico de tiempo e. Algoritmo de tiempo exponencial

Formalmente, la complejidad del algoritmo se deriva utilizando símbolos asintóticos. Estas son representaciones formales que ilustran el crecimiento en los requisitos de recursos [almacenamiento y eficiencia] de un algoritmo. Se utilizan cuatro símbolos básicos al describir los requisitos de recursos. Ellos son: O [f [n]], o [f [n]], Omega [f [n]] Ω [f [n]] y Theta [f [n]] Θ [f [n]] – respectivamente Es Big-O, Little-o, Omega y Theta.

Uno O grande: O [f [n]] establece un límite superior en la función. Esto se utiliza para representar el peor tiempo de ejecución del algoritmo.

Bay Omega: Θ [f [n]] define dos funciones que unen la función g [n] de arriba hacia abajo y hacia abajo para los valores apropiados para las constantes c1, c2, n0. Esta función se utiliza para representar el tiempo de ejecución promedio del algoritmo.

C. Theta: Ω [f [n]] que define el límite inferior de la función. Podemos usarlo para representar el tiempo de ejecución de cuidado óptimo del algoritmo.

Tipo de algoritmo

Hay muchos tipos de algoritmos, pero el propósito más básico de la clasificación es resaltar las diversas formas en que se pueden resolver los problemas.

1. Algoritmo recursivo simple: resuelve directamente la situación básica y luego se reproduce con un subproblema más simple. Al desglosar el problema en problemas más simples o más pequeños del mismo tipo, puede convertir la solución en un subproblema más simple. Por ejemplo

Uno Para calcular el número de elementos en la lista:

– devuelve cero si la lista está vacía; de lo contrario, – salta el primer elemento y calcula los elementos restantes de la lista – agrega un elemento al resultado

Bahía para probar si el valor aparece en la lista:

– falso si la lista está vacía; de lo contrario, – verdadero si la primera cosa en la lista es un valor dado; de lo contrario, omite el primer elemento y comprueba si el valor aparece en el resto de la lista

2. Algoritmo de retroceso: el algoritmo de retroceso se basa en la búsqueda recursiva que primero profundiza. Comprueba si se encuentra una solución y la devuelve si la encuentra; de lo contrario, para cada elección que se pueda hacer en este momento, haga una selección, repítala y devuélvala si la solución se devuelve de forma recursiva. Si no quedan opciones, se devuelve un error.

Por ejemplo: Para colorear un mapa de no más de cuatro colores:

Un color [país n]

– si todos los países están coloreados [n> país], se devuelve el éxito; de lo contrario, – para cada color c de los cuatro colores,

i] Si el país n no es adyacente al país que ha sido coloreado c. Color país n con color c · color recursivo país n + 1 · Si tiene éxito, devuelva el éxito

b devuelve error [si se elimina el bucle]

3. Algoritmos de programación dinámica: los algoritmos de programación dinámica recuerdan resultados pasados ​​y los utilizan para encontrar nuevos resultados. La programación dinámica se utiliza a menudo para optimizar problemas, donde existen múltiples soluciones y es necesario encontrar la mejor solución. Requiere subestructuras óptimas y subproblemas superpuestos. Subestructura óptima: la solución óptima contiene la solución óptima para el subproblema. Superposiciones de problemas superpuestos: las soluciones de problemas secundarios se pueden almacenar y reutilizar de abajo hacia arriba. Esto es diferente de Divide-and-Conquer, que por lo general no requiere la superposición de sub-problemas.

Por ejemplo, los números de Fibonacci:

Uno Para encontrar el número n de Fibonacci:

– si n es cero o uno, devuelva uno; de lo contrario, calcule, o busque en la tabla, Fibonacci [n-1] y Fibonacci [n-2] – encuentre la suma de los dos números – almacene el resultado en una tabla Y devolvelo

Bay descubrió que el número n de Fibonacci implicaba encontrar todos los números más pequeños de Fibonacci, la segunda llamada recursiva tenía poco trabajo por hacer. C. Esta tabla puede ser retenida y utilizada nuevamente.

4. Divide y conquista: el algoritmo divide y vencerás consta de dos partes.

Uno Divida el problema en subproblemas más pequeños del mismo tipo y resuélvalos recursivamente. Bay combina soluciones para problemas secundarios en soluciones a problemas originales

Tradicionalmente, si un algoritmo contiene dos o más llamadas recursivas, solo se llama dividir y conquistar. Por ejemplo

Uno Orden rápida: divida la matriz en dos partes y asigne rápidamente cada parte. La combinación de las dos partes clasificadas no requiere trabajo adicional. Fusionar: Cortar la matriz por la mitad y fusionar cada mitad. Combine las dos matrices ordenadas en una matriz ordenada combinándolas.

5. Búsqueda de árbol binario: aquí se explica cómo encontrar contenido en un árbol binario ordenado:

Uno Compara la clave con el valor en la raíz.

– Si los dos valores son iguales, el informe tiene éxito. Si la clave es pequeña, se busca el subárbol izquierdo. Si la clave es grande, se busca el subárbol derecho

Este no es un algoritmo de dividir y conquistar, aunque hay dos llamadas recursivas, solo una para cada nivel de recursión. Por ejemplo:

a para encontrar el nth número de Fibonacci:

– si n es cero o uno, devuelva uno; de lo contrario, – calcule Fibonacci [n-1] y Fibonacci [n-2] – devuelva la suma de estos dos números

Bahía Este es un algoritmo costoso, requiere tiempo O [Fibanocci [n]], es equivalente al tiempo exponencial, es decir, O [2n]

6. Poderoso algoritmo: prueba todas las posibilidades hasta encontrar una solución satisfactoria. Tal algoritmo puede ser:

Uno Optimización: Encuentra la mejor solución. Esto puede requerir encontrar todas las soluciones, o si se conoce el valor de la mejor solución, puede detenerse cuando se encuentra la mejor solución.

– Ejemplo: Encontrar el mejor camino para un vendedor de viajes

Bay Satisfaction: deténgase una vez que encuentre una solución lo suficientemente buena.

– Ejemplo: Encuentre una ruta de viaje dentro del 10% del valor óptimo

Sin embargo, mejorar el algoritmo de fuerza bruta generalmente requiere un tiempo exponencial. Se pueden utilizar diversas heurísticas y optimizaciones.

– Heurísticas: una "regla general" que lo ayuda a decidir qué posibilidades debe considerar primero: optimización: en este caso, una forma de eliminar opciones específicas sin tener que explorarlas por completo.

7. Algoritmo codicioso: un problema de optimización es el problema que desea encontrar, no solo la solución, sino la mejor solución. Los "algoritmos griegos" a veces se aplican a problemas de optimización. El codicioso algoritmo se ejecuta en etapas: en cada etapa:

– Puede obtener los mejores resultados ahora, sin tener en cuenta las consecuencias del futuro – desea lograr un óptimo global al elegir un óptimo local en cada paso

Ejemplo de conteo de dinero: suponga que desea calcular una cierta cantidad de dinero con la menor cantidad de billetes y fichas. Un algoritmo codicioso hará esto: en cada paso, tomará la factura o token más grande posible que no exceda

Por ejemplo, para ganar $ 6.39, puede elegir:

– Una factura de $ 5 – una factura de $ 1, ganando $ 6 – 25 centavos de fichas, ganando $ 6.25 – 10 centavos, ganando $ 6.35 – cuatro centavos, ganando A $ 6.39

Para la moneda estadounidense, los algoritmos codiciosos siempre proporcionan la mejor solución. Sin embargo, el algoritmo codicioso produce una solución, pero no existe una solución óptima que pueda llevar a su fracaso.

8. Algoritmo aleatorio: el algoritmo aleatorio utiliza al menos un número aleatorio para tomar una decisión durante el proceso de cálculo.

– Ejemplo: en Quicksort, use un número aleatorio para seleccionar un eje o intente calcular un número primo grande seleccionando un número aleatorio como posible divisor

Por lo tanto, el algoritmo gobierna el mundo. Cada vez que hace clic en el botón de búsqueda en Google, el motor de búsqueda filtra miles de páginas para brindarle lo que necesita en una fracción de segundo. Lo que lo hace posible es el "algoritmo" subyacente, un conjunto de reglas matemáticas predefinidas incluidas en el software. Tomemos como ejemplo un cajero automático [ATM]. Cada vez que visita un cajero automático, encuentra el UID en Aadhaar, o cuando reserva un vuelo o compra algo en línea, está ampliando el alcance y el alcance del algoritmo; las raíces de este concepto matemático se remontan al 600 AD. Decimal

Cada vez que usa su computadora o teléfono móvil, está usando un algoritmo, al que puede llamar un programa o una aplicación. Lo que debe saber es que el algoritmo es solo un conjunto de instrucciones a seguir en función de la actividad a ejecutar. Las búsquedas de Google y Facebook ahora están completamente basadas en algoritmos, aunque son más complejas que los algoritmos regulares. Facebook, YouTube, Twitter y LinkedIn han experimentado grandes cambios en los algoritmos para mejorar y personalizar las noticias de sus fanáticos.

La medida de este improvisado servicio de noticias se basa en las preferencias de los lectores individuales y ha fallado. Los científicos de datos y los programadores de software carecen de un factor clave para definir algoritmos, es decir, cada uno tiene su propia mente y está programado de alguna manera. Esto subdivide aún más la capacidad de pensar entre un hombre y una mujer. Por lo tanto, cada vez que alguien que define un algoritmo está programando se basa en su forma personal de pensar, no en cómo piensan los demás sobre el mismo problema, este es el mayor desafío y el cuello de botella, y nadie parece estar resolviéndolo.

Tomemos la declaración anterior como ejemplo: cada vez que navego por mi fuente de noticias, ya sea en YouTube, Facebook, Twitter, Google, LinkedIn o Instagram, AI está constantemente aprendiendo sobre mis actividades y las noticias que estoy leyendo. . Lo que no entiende es que incluso si es un tiempo, si leo un artículo o veo un video de contenido que no tiene relación alguna con mí, asumirá que esta es la fuente de noticias en las que estoy interesado y desencadena el conjunto en función de lo que hace. Supongamos que el artículo y el contenido del video se cargan en mi servicio de noticias. Aunque el hecho es que no me interesa esta información, es el foco del algoritmo que no se puede aprender y desordenan completamente la fuente de noticias. En realidad, me frustraron con las nuevas mejoras en las noticias personalizadas, no para hacerme feliz.

En general, el algoritmo aún está definido por los seres humanos, y su capacidad de pensamiento está limitada a los individuos … así que incluso si el algoritmo está incorporado para mejorar la experiencia del usuario y proporcionar la información esperada en función de lo que estoy buscando, todavía no entiende mi forma de pensar. Es inútil. Aquí es donde la tecnología está estancada y en una etapa temprana. Los gigantes de TI deben encontrar soluciones para superar este desafío técnico en IA. Sin embargo, la inteligencia artificial seguirá siendo el futuro del mundo, pero en los próximos 100 años.

Fuente de la imagen:

Echa un vistazo a mis otros artículos a través de mi perfil BlockDelta.

Fuente: compilado a partir de 0x información de BLOCKDELTA. Los derechos de autor pertenecen al autor techutzpah, sin permiso, no pueden reproducirse