Un candidato es ciertamente el algoritmo euclidiano para encontrar el máximo divisor común. Data de aproximadamente 300 a. C., más de dos milenios antes de que existieran dispositivos mecánicos (mucho menos electrónicos) para ejecutar algoritmos. Para poner esto en perspectiva, considere que los números negativos no ganaron aceptación en las matemáticas europeas hasta la década de 1700.
Más recientemente, la programación dinámica es una clase general de algoritmos que continúa sorprendiéndonos con su poder. Muchos algoritmos muy comunes para problemas como encontrar la distancia mínima de edición entre dos cadenas y el algoritmo de Viterbi utilizado en los sistemas de reconocimiento de voz se basan en la programación dinámica. En esencia, el sistema de búsqueda QPX desarrollado por el software ITA de mi compañía anterior era un algoritmo de programación dinámico.
Finalmente, los sistemas a prueba de conocimiento cero son intuitivamente bastante difíciles de creer al principio. A ZKP le permite a la parte A demostrarle a la parte B que A conoce un secreto particular, sin que la parte B sepa el secreto o aprenda algo útil al respecto . Utilizamos un sistema de prueba de este tipo en Inky, nuestro cliente de correo, para autenticarlo cuando inicia sesión. Los servidores de Inky no conocen su contraseña, pero saben cuándo la sabe. ¿Extraño, eh?
- ¿Cómo eliges un campo interesante en informática?
- Cómo mostrar que O (max {f (n), g (n)}) = O (f (n) + g (n))
- ¿Cuál es el mejor algoritmo de clasificación manual? Por ejemplo, si tuviera una pila de papeles que quisiera ordenar alfabéticamente, ¿cuál sería la forma más eficiente de hacerlo? ¿Qué pasaría si estuvieras de acuerdo con que uno o dos se alejen de su posición ordenada?
- ¿Cuáles son los algoritmos que se pueden usar en aplicaciones web del mundo real además de ordenar o buscar?
- ¿Qué es un árbol de expansión?