¿Cuáles son los algoritmos importantes que todo desarrollador de software graduado debe saber?

Recomiendo encarecidamente que estudie la lógica de programación. El material de ese tema es extremadamente vital para comprender los algoritmos y es independiente de cualquier lenguaje de programación en particular. Sin embargo, es una forma invaluable de aprender a entender un problema e idear instrucciones para resolverlo.

Puedo proporcionarle un poco de información sobre los tipos de algoritmos junto con algunos recursos relacionados.

Consulte este libro gratuito en línea: Estructuras de datos y algoritmos con patrones de diseño orientados a objetos en C # , por BrunoR. Preiss

Echa un vistazo a este enlace para ver la serie de videos de instrucción gratuitos de Khan Academy sobre algoritmos.

Además, este enlace a un conjunto completo de notas de clase, con ejemplos, sobre Diseño y Análisis de Algoritmos.


Aquí está la lista de los diversos temas de los videos de la Academia Khan sobre algoritmos:

¿Qué son los algoritmos y por qué debería importarle? Comenzaremos con una descripción general

de algoritmos y luego discuta dos juegos que podría usar un algoritmo para resolver de manera más eficiente: el juego de adivinar números y un juego de búsqueda de rutas.

academia Khan

Aprenda acerca de la búsqueda binaria, una forma de buscar eficientemente una variedad de elementos reduciendo a la mitad el espacio de búsqueda cada vez.

academia Khan

Aprenda cómo usar el análisis asintótico para describir la eficiencia de un algoritmo y cómo usar la notación asintótica (Big O, Big-Theta y Big-Omega) para describir con mayor precisión la eficiencia.

academia Khan

Aprenda la selección de selección, un algoritmo simple para ordenar una matriz de valores, y vea por qué no es el algoritmo más eficiente.

academia Khan

Aprenda la ordenación por inserción, otra forma simple pero no muy eficiente de ordenar una matriz de valores.

academia Khan

Aprenda el concepto de recursión, una técnica que a menudo se usa en algoritmos. Vea cómo usar la recursividad para calcular el factorial y las potencias de un número, además de generar arte.

academia Khan

Usa la técnica recursiva para resolver las Torres de Hanói, un clásico rompecabezas matemático y al que se enfrentan los monjes en un templo.

academia Khan

Learn merge sort, un algoritmo de clasificación más eficiente que se basa en gran medida en el poder de la recursividad para ordenar y combinar repetidamente sub-arrays.

academia Khan

Aprenda la ordenación rápida, otro algoritmo de ordenación eficiente que utiliza la recursividad para ordenar más rápidamente una matriz de valores.

academia Khan

Aprenda a describir gráficos, con sus bordes, vértices y pesos, y vea diferentes formas de almacenar datos de gráficos, con listas de bordes, matrices de adyacencia y listas de adyacencia.

academia Khan

Aprenda a recorrer un gráfico usando la búsqueda de amplitud primero para encontrar un nodo en particular o para asegurarse de que ha visitado todas las notas, atravesando una capa a la vez.

academia Khan

Ideas sobre cómo podría continuar su viaje de aprendizaje en algoritmos.


A continuación se presentan los temas para las notas de clase en línea para Diseño y análisis de algoritmos:

Algoritmos Notas de clase

1. Introducción

2. Matemáticas para algoritmos

Conjuntos

Funciones y relaciones

Vector de matrices de arena

Desigualdades lineales y ecuaciones lineales

3. Algoritmos codiciosos

Problema de mochila

OI Mochila

Mochila fraccional

Problema de selección de actividad

Códigos de Huffman

Árbol de expansión mínima

Algoritmo de Kruskal

Algoritmo de Prim

Algoritmo de Dijkstra

4. Divide y conquista algoritmos

5. Programación dinámica

Multiplicación de cadena matricial

Solución DP del problema de la mochila

Problema de selección de actividad Solución DP

6. Análisis amortizado

Método agregado

Método contable

Método potencial

Tabla dinámica

7. Hash Table

8. Árbol de búsqueda binaria

9. Algoritmos gráficos

Breadth-First Search (BFS)

Búsqueda de profundidad primero (DFS)

Clasificación topológica

Componentes fuertemente conectados

Euler Tour

Árbol de expansión mínimo genérico

Algoritmo de Kruskal

Algoritmo de Prim

Ruta más corta de una sola fuente

Algoritmo de Dijkstra

Algoritmo de Bellman-Ford

10. String Matching

Naive String Matching

Algoritmo de Knuth-Morris-Pratt

Algoritmo de Boyer-Moore

11. Clasificación

Ordenamiento de burbuja

Tipo de inserción

Selección Ordenar

Tipo de concha

Heap Sort

Ordenar fusión

Ordenación rápida

12. Clasificación de tiempo lineal

Contando Ordenar

Clasificación de radix

Clasificación de cubo

13. Geometría computacional

14. Complejidad computacional

Argumento teórico de la información

Argumento Adversario

NP-integridad y reducción

15. Algoritmos aproximados

Cubierta de vértice

El problema del vendedor ambulante

16. Programación lineal

17. Apéndice

I. Parábola

II Tangente

18. Códigos

19. Referencias

Página de inicio de algoritmo

Diccionario de Algoritmos y Estructuras de Datos – NIST

Diccionario de Algoritmos y Estructuras de Datos – FOLDOC

Enciclopedia en línea de secuencias enteras

Glosario (Diseño y Análisis de Algoritmos).

Libros de algoritmos y estructuras de datos

Libros de Don Knuth (y enlaces a documentos)

Libros

  • Diseño de algoritmos: fundamentos, análisis e ejemplos de Internet por Michael T. Goodrich y Roberto Tamassia
  • Estructuras de datos y algoritmos en Java por Michael T. Goodrich y Roberto Tamassia
  • Estructuras de datos y algoritmos en C ++ por Michael T. Goodrich, Roberto Tamassia y David M. Mount
  • Introducción a los algoritmos por Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest y Clifford Stein
    • Centro de aprendizaje en línea: descripción general de los capítulos CLR y diapositivas de PowerPoint

Revistas

  • Algorithmica: Inicio | Acceso electrónico a través de OhioLink (98 de diciembre-presente) | Problemas de impresión en Math lib.
  • Diario de Algoritmos: Inicio | Acceso electrónico a través de OhioLink (ene.93 – presente)
  • Journal of Graph Algorithms & Applications – Un diario electrónico disponible a través de WWW. Todos los documentos están disponibles gratuitamente en PostScript y PDF.

Campo de golf

  • Algorithmist, The – dedicado a cualquier algoritmo – desde el ámbito práctico hasta el ámbito teórico.
  • Material del curso de algoritmos en la red
  • Curso Algoritmos en el mundo real por Guy E. Blelloch
  • Soluciones algorítmicas (anteriormente Biblioteca LEDA): una biblioteca de los tipos de datos y algoritmos (tipos de números y álgebra lineal, tipos de datos básicos, diccionarios, gráficos, geometría, gráficos).
  • Análisis de las conferencias de algoritmos en Princeton – Applets y Demos basados ​​en CLR.
  • Algoritmos recopilados (CALG) de la ACM
  • Colección completa de animaciones de algoritmos (CCAA)
  • Estructuras de datos y sistemas de números – por Brian Brown.
  • Calculadora de funciones de Xiao Gang
  • FAQ – Com.graphics.algorithms – mantenido por Joseph O’Rourke
  • Game Theory Net
  • Proyecto Grail: un entorno de cálculo simbólico para máquinas de estado finito, expresiones regulares y lenguajes finitos.
  • Java Applets Center por R.Mukundan
  • Notas de clase de Diane Cook
  • Notas de clase para algoritmos de posgrado por Samir Khuller
  • Clasificación y algoritmos de laberintos: una breve descripción de los laberintos y cómo crearlos. Definición de diferentes tipos de laberintos y sus algoritmos.
  • Colas de prioridad: bibliografía electrónica sobre colas de prioridad (montones). Enlaces a informes descargables, páginas de inicio de investigadores y software.
  • Biblioteca Vitual Softpanorama / Algoritmos
  • Árboles de búsqueda ternarios – Algoritmo de búsqueda. Archivo PDF y ejemplos en C.
  • Vendedor ambulante – bibliografía y enlaces de software.

Computabilidad

  • Algoritmos y complejidad: un libro de texto descargable de Herbert S. Wilf.
  • Blackbox: un sistema de planificación de tecnología SAT: Black Box es un sistema de planificación que funciona convirtiendo los problemas especificados en la notación STRIPS en problemas de satisfacción booleana y luego resolviendo los problemas con una variedad de motores de satisfacción de última generación.
  • Base de datos bibliográfica para la teoría de la computabilidad: bibliografía extensa sobre computabilidad y teoría de la recursividad, mantenida por Peter Cholak.
  • Compendio de problemas de optimización de NP: esta es una versión preliminar del catálogo de problemas de optimización de NP.
  • Computabilidad y complejidad: un curso en línea sobre complejidad.
  • Complejidad computacional y física estadística – Santa Fe, Nuevo México, Estados Unidos; 4–6 de septiembre de 2001.
  • Complexity International: revista de artículos científicos que se ocupa de cualquier área de investigación de sistemas complejos.
  • Teoría de la computabilidad: directorio de investigadores que trabajan en la teoría de la computabilidad y lista de problemas abiertos.
  • ECCC – Coloquio electrónico sobre complejidad computacional – El Coloquio electrónico sobre complejidad computacional es un nuevo foro para el intercambio rápido y generalizado de ideas, técnicas e investigación en complejidad computacional. El Coloquio Electrónico sobre Complejidad Computacional (ECCC) da la bienvenida a trabajos, notas breves y encuestas relevantes para la teoría de la computación.
  • Red de investigación de hipercomputación: el estudio de la computación más allá de lo definido por la máquina de Turing, también conocida como computación super-Turing, no estándar o no recursiva. Enlaces a personas, recursos y debates.
  • Conferencia IEEE sobre Complejidad Computacional – Esta conferencia comenzó como “Estructura en Teoría de la Complejidad” en 1986. Recientemente adquirió el nuevo nombre “Conferencia sobre Complejidad Computacional”, que se usó por primera vez en 1996. CTI, DePaul University, Chicago IL; 18-21 de junio de 2001.
  • SAT en vivo! – Una colección de enlaces actualizados sobre el problema de la satisfacción (solucionadores, puntos de referencia, artículos). También hay un foro de discusión disponible.
  • Recursos de Roberto Bayardo – Incluye el solucionador SAT de relsat y documentos relacionados.
  • Página de inicio de entornos de resolución de problemas: este sitio contiene información sobre entornos de resolución de problemas (PSE), investigaciones, publicaciones e información sobre temas relacionados con los PSE.
  • SATLIB – The Satisfiability Library – Una colección de problemas de referencia, solucionadores y herramientas. Una fuerte motivación para crear SATLIB es proporcionar un banco de pruebas uniforme para solucionadores de SAT, así como un sitio para recopilar instancias de problemas SAT, algoritmos y caracterizaciones empíricas del rendimiento de los algoritmos.
  • Página NP-Completeness de Stas Busygin: una propuesta para resolver problemas NP-difíciles.

Computación cuántica

  • Centro de Computación Cuántica – Basado en la Universidad de Oxford. Sitio bien diseñado, con una gran cantidad de información disponible.
  • D-Wave Systems, Inc. – D-Wave Systems (Home) es un portal al estado del arte en el diseño de computadoras cuánticas, sistemas operativos, algoritmos, hardware, superconductores y física cuántica.
  • id Quantique – Sitio de id Quantique, Inc. Los productos incluyen un generador de números aleatorios cuánticos y un sistema de criptografía cuántica.
  • MagicQ Technologies Inc. – El sitio de origen de la primera empresa de nueva creación dedicada por completo a la computación cuántica. Sin patentes o productos hasta la fecha, pero de interés en virtud de ser el primero en salir del bloque.
  • Centro de investigación de arquitectura cuántica: la página de inicio de un equipo formado por Frederic Chong, Isaac Chuang y John Kubiatowicz, los tres mejores experimentadores en computación cuántica.
  • Archivo de Computación Cuántica Este sitio contiene documentos técnicos y enlaces a informes de control de calidad en los medios.
  • Quantum Computer Emulator (QCE): un simulador de hardware de computadora cuántico basado en Windows. Proporciona un entorno para ejecutar algoritmos cuánticos en condiciones experimentales realistas.
  • Laboratorio de Física Informática Cuántica de la Academia de Ciencias de Rusia IPT – Programa de seminario “Computadora Cuántica”. Personal, información de contacto, trabajos de investigación.
  • Computación cuántica en el Instituto Max Plank: proporciona una visión general de la investigación relacionada con la computadora cuántica que se lleva a cabo en el Instituto Max Plank. El enfoque principal es la computación basada en trampas de iones. Las reimpresiones seleccionadas están disponibles.
  • Computación cuántica con espines electrónicos en puntos cuánticos: un estudio detallado del uso de espines electrónicos para el cálculo cuántico. Se discuten varias implementaciones posibles.
  • Informática cuántica en la Universidad de Aarhus: realiza investigaciones sobre informática cuántica con énfasis en la criptografía cuántica.

Algoritmos

  • Escaneo de Graham (Algoritmo de casco convexo) (Applet)
  • Algoritmo de barrido de línea (applet)
  • Flujo Máximo (Applet)
  • SkipList (Applet)
  • Matrimonio Estable (Applet)

GraphAlgorithms

Sociedades y organizaciones

  • Grupo de Algoritmos Numéricos (NAG)

Geometría

  • Algoritmo de barrido de línea
  • Graham Scan y envoltura de regalos
  • Escaneo de Graham (Algoritmo de casco convexo)
  • Qhull– El algoritmo Quick Hull.

Debería ser siempre una palabra fuerte. Hay algunos a los que vuelvo útiles, interesantes y, en general, deberían ser conocidos, no porque los incluya en todo su software, sino porque ampliarán su mente. Espero que un programador curioso se haya encontrado con todo esto al momento de la graduación.

Quicksort: un buen ejemplo común del enfoque de divide y vencerás

A * – método de búsqueda de ruta accesible y ampliamente utilizado

Naive Bayes: otro ejemplo de donde la simplicidad es poder

K vecino más cercano: una de las muchas técnicas de agrupamiento y una puerta de entrada a varios algoritmos estadísticos de aprendizaje automático, demasiados para enumerarlos aquí.

El tamiz de Eratóstenes: sí, es viejo, pero es elegante

Algoritmo de Dijkstra: un elemento fundamental del recorrido del árbol

Sistemas L: no es realmente un algoritmo único, sino una buena (¡y bonita!) Forma de familiarizarse con la recurrencia para los desarrolladores.

Compresión Lempel-Ziv: en muchos sentidos, la compresión general es algo de lo que los desarrolladores modernos no se preocupan, pero es útil de entender, y las técnicas son algo aplicables a otras cosas.

Expresiones regulares de NFA / DFA: una vez más, no es solo un algoritmo, sino que la implementación de motores de expresión regular ([No] Autómatas finitos deterministas) es algo bueno para aprender. ¡Y con suerte, también te enseñará a usar expresiones regulares (la cosa común menos comprendida de la programación) correctamente!

More Interesting

¿Por qué sigo olvidando cómo funciona el algoritmo djikstra?

¿Cómo se puede predecir el rango basado en el rango anterior y los datos de puntaje disponibles?

¿Cómo pueden los estudiantes de electricidad y electrónica llegar a ser buenos en algoritmos y estructuras de datos?

Dadas las coordenadas de 3 puntos, cómo encontrar el centro del círculo formado por estos puntos con alta precisión. Para lograr una alta precisión, debe haber algún proceso de división. ¿Hay alguna forma de hacerlo?

Cómo enmarcar mi idea de algoritmo para que alguien que escribe algoritmos pueda entenderlo

¿Cuál es la diferencia entre el tipo de burbuja y el de inserción? Además del hecho de que el ordenamiento de burbujas tiene una parte ordenada y una no ordenada de una matriz.

¿Para qué aplicaciones son especialmente adecuados los lenguajes de programación lógica? ¿Cuándo usarías un lenguaje como Prolog? ¿Cuáles son las aplicaciones más exitosas de la programación lógica?

¿Qué es un algoritmo de descubrimiento de ruta de ataque cibernético?

¿Por qué el ensacado funciona tan bien para los árboles de decisión, pero no para los clasificadores lineales?

¿Es posible determinar el valor máximo de puntos que se puede otorgar para una sola palabra Scrabble?

¿Cómo funciona 'Un algoritmo neuronal de estilo artístico'?

¿Qué significa la subestructura óptima en términos simples?

¿Cómo funciona el algoritmo de búsqueda de ruta de StarCraft II?

He estado haciendo programación competitiva durante años, pero ahora me encuentro despistado en mi clase de Algoritmos. ¿Qué tengo que hacer?

¿Cómo se usa la programación dinámica para resolver la pregunta Problema TRT (Trato para las vacas) en Sphere Online Judge (SPOJ)?