Quiero aprender más sobre algoritmos, pero no sé por dónde empezar. ¿Me puede dar algunas instrucciones o consejos? Gracias.

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.

De la mano, no puedo recomendar ningún libro sobre algoritmos.

Dicho eso …

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

Consulte este enlace para ver la serie de algoritmos de videos de instrucción gratuitos de Khan Academy .

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 los algoritmos y luego discutiremos 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 al reducir el espacio de búsqueda cada vez.

academia Khan

Aprenda cómo usar el análisis asintótico para describir la eficiencia del analgoritmo, 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 serie de valores.

academia Khan

Aprende el concepto de recursión, una técnica que se usa a menudo con 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 Hanoi, un rompecabezas matemático clásico y uno según los informes enfrentado por monjes en un templo.

academia Khan

Aprenda la combinación de clasificación, un algoritmo de clasificación más eficiente que depende en gran medida del poder de la recursividad para clasificar y combinar repetidamente sub-matrices.

academia Khan

Aprenda la ordenación rápida, otro algoritmo de ordenación eficiente que utiliza la recursividad para ordenar 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 utilizando la búsqueda de amplitud primero para encontrar un nodo en particular o para asegurarse de haber 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

Vectoresy matrices

Desigualdades lineales y ecuaciones lineales

3. Algoritmos codiciosos

MochilaProblema

Mochila O-I

Mochila fraccional

Problema de selección de actividad

Los códigos de Huffman

Árbol de expansión mínima

El 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 de 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. HashTable

8. Árbol de búsqueda binaria

9. Algoritmos gráficos

Breadth-FirstSearch (BFS)

Profundidad-FirstSearch (DFS)

Clasificación topológica

Componentes fuertemente conectados

EulerTour

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

El algoritmo de Kruskal

Algoritmo de Prim

SingleSource Shortest Path

Algoritmo de Dijkstra

Bellman-Ford Algoritmo

10. StringMatching

NaïveString Matching

Knuth-Morris-Pratt Algoritmo

Boyer-Moore Algoritmo

11. Clasificación

Ordenamiento de burbuja

Tipo de inserción

SelectionSort

ShellSort

HeapSort

MergeSort

Ordenación rápida

12. Clasificación de tiempo lineal

CountingSort

RadixSort

BucketSort

13. Geometría computacional

14. Complejidad computacional

Argumento teórico-informativo

Adversario Argumento

NP-Completitud y reducción

15. Algoritmos aproximados

VertexCover

El problema del vendedor viajero

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

On-line Enciclopedia de secuencias enteras

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

Libros de algoritmos y estructuras de datos

Libros de DonKnuth (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 mazetipos 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: Blackbox es un sistema de planificación que funciona mediante la conversión de problemas especificados en la notación STRIPS en problemas de satisfacción booleana y luego resuelve 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.

La forma más sencilla de comenzar es aprovechar su experiencia de codificación para comenzar. Google busca de esta manera, pero reemplaza la palabra Ruby con tu idioma favorito para la codificación.

Algoritmos en Ruby

Estructuras de datos en Ruby

Esas dos búsquedas en Google (con su idioma favorito sustituido) le darán un buen punto de partida para leer algún material. Sería bueno escribir algunos de esos ejemplos y tal vez practicar o hacer ejercicios de trabajo si puede manejarlo. Una vez que haya estudiado de esa manera en Internet por un tiempo, debe tener alguna idea de qué se tratan los algoritmos y las estructuras de datos.

Una vez que haya hecho eso, puede buscar en Google:

Big O Notation

Luego, puede intentar golpear las cosas más difíciles, como “Algoritmos y estructuras de datos” en general (sin un lenguaje de programación específico) o consultar uno de los libros pagos sobre el tema (con o sin su lenguaje de programación favorito) si desea obtener Un tratamiento más profundo. Al principio, es útil enfocarse en un idioma específico para que pueda hacer que la curva de aprendizaje sea menos empinada inicialmente, pero eventualmente puede obtener un tratamiento más profundo con más matemáticas utilizando las cosas más generales una vez que esté familiarizado con los conceptos básicos.