¿Cuáles son algunos conceptos erróneos comunes sobre los algoritmos?

El proceso del pensamiento computacional conduce a enfoques de resolución de problemas. Los enfoques de resolución de problemas son una base de algoritmos que pueden convertirse en código. La resolución de problemas es una habilidad esencial para un informático. Existen varias técnicas de diseño de algoritmos generales, pero no existe una “receta” o una “bolsa de trucos” para resolver cualquier problema. Los estudiantes se vuelven mejores solucionadores de problemas cuando disfrutan del proceso creativo, aprenden técnicas comunes, aprenden de los errores y desarrollan su confianza. principales ideas erróneas que surgen:

  1. Las personas nacen para ser buenos solucionadores de problemas / rompecabezas o no lo son.
    Sí, algunas personas parecen ser solucionadores de problemas / rompecabezas naturales. Sin embargo, los estudiantes trabajadores y persistentes a menudo logran lo mismo. Los estudiantes se convertirán en mejores solucionadores de problemas / rompecabezas mediante la práctica y el aprendizaje de cuándo aplicar técnicas conocidas.
  2. Existen amplios recursos en línea de algoritmos o programas para que siempre que necesite resolver un nuevo problema, pueda encontrar una solución similar. Todo lo que necesito hacer es hacer modificaciones.
    Existen algunas técnicas de diseño de algoritmos generales. Puede parecer que hay una bolsa de trucos y técnicas que se pueden usar para resolver cada problema. Por desgracia, este no es el caso. La creación de algoritmos requiere creatividad, así como una comprensión de si las técnicas conocidas se pueden aplicar o modificar y cómo.
  3. La primera solución o algoritmo que aparece es a menudo la mejor.
    Típicamente no es cierto. Una primera solución demuestra que hay una solución, pero a menudo son posibles mejoras.
  4. Pensé en una solución el tiempo suficiente y no puedo encontrarla. Probablemente no haya ninguno.
    Esa puede ser la actitud de un estudiante demasiado confiado o alguien que no ha participado en muchas actividades de resolución de problemas. Probar que no hay solución es a menudo difícil, si es posible.
  5. Una vez que mi programa funciona en las entradas seleccionadas, puedo estar bastante seguro de que siempre produce la respuesta correcta.
    Puede ser una actitud peligrosa con consecuencias que amenazan la vida en el mundo real. La corrección por ejemplo no es corrección. Un programador necesita aprender técnicas efectivas de prueba y depuración para ayudar a garantizar que su solución funcione con la mayoría, si no con todas, las entradas. Incluso después de probar una depuración, la entrada inesperada puede causar problemas. El código de depuración y prueba son desafíos para la industria del software.
  6. Hay poco valor en encontrar soluciones incorrectas.
    Se puede aprender mucho de los errores. Puede haber mucha creatividad y valor en soluciones que no son correctas. Uno aprende al comprender dónde fallan (es una forma de depuración).
  7. Si hay dos soluciones diferentes, una suele ser mejor que la otra .
    Esto a veces es cierto. Hay mejores y peores soluciones. Sin embargo, a menudo hay varias buenas soluciones para un problema. Una pregunta importante es cómo se define mejor. Muchos problemas tienen múltiples soluciones y lo que es mejor no siempre es fácil de resolver.
  8. Convertir un algoritmo bien especificado en un programa es fácil.
    El esfuerzo necesario depende de la experiencia de codificación y del nivel de dificultad del problema. Las tareas algorítmicas aparentemente sencillas a veces resultan ser un desafío para implementar y depurar .
  9. Explicar la solución a un estudiante es tan buena experiencia de aprendizaje como que el estudiante encuentre la solución por sí mismo.
    Los estudiantes se vuelven mejores solucionadores de problemas resolviendo problemas, probando lo que funciona y lo que no funciona, sacando conclusiones que amplían sus habilidades de pensamiento algorítmico. Hacer esto por ellos, dándoles soluciones o sugerencias que no dejan espacio para la creatividad, elimina esta experiencia y elimina la experiencia de aprendizaje relacionada.

Muy amplia pregunta. Le daré un golpe.

  • Menos código = algoritmos más eficientes.
    Esto incluye menos variables, indiferencia del orden de las declaraciones en el código, etc.
  • Los algoritmos son un requisito previo para aprender a programar.
    A menudo las personas evitan aprender a programar porque “no conocen algoritmos”. Así no es como funciona la programación …
  • Mezclando la complejidad del espacio y la complejidad del tiempo
  • Las redes neuronales no intentan imitar modelos del cerebro humano.

De los muchos, enumeraré sin ningún orden en particular:

  1. Los algoritmos son solo para ingenieros informáticos. O, solo los graduados de CS necesitan algoritmos.
  2. Algoritmos es un tema en el que asaltas todos los algos famosos.
  3. Necesita aprender lenguajes de programación para comprender algoritmos.
  4. Los algoritmos como tema deben temerse.
  5. Si no eres un profesional en Algorithms, no puedes conseguir un trabajo en Informática.
  • Sin saber qué es una heurística y cómo se diferencia de un algoritmo.
  • Que conocer un conjunto mágico de algoritmos es la clave para el éxito de la programación. (Para eso están las bibliotecas de funciones y Knuth).
  • Ni darse cuenta de que la mayor parte del algoritmo y el trabajo heurístico es la resolución de problemas específicos de la aplicación. (E incluso entonces, usualmente confías en la técnica anterior).

“No es importante demostrar la exactitud de un algoritmo”.

Sin prueba de corrección, ¿cómo se convence de que su algoritmo es correcto? ¿Cómo defiende la implementación de su algoritmo? Porque funciona? ¿Qué pasa si no pudo implementar un caso? ¿Siempre tendrías que confiar en la implementación? ¿Siempre confiaría en técnicas programáticas para mostrar que su código es mejor conocido como O (1) que un algoritmo de tiempo lineal?

Que si usted “comprende” cómo funciona, podría escribir el algoritmo para ello.

No estoy seguro de si esto es común o solo soy yo quien es estúpido, pero no “obtuve” algunos algoritmos cuando estaba en la universidad. Todavía no consigo algunos. Se requiere un conjunto muy diferente de habilidades para saber cómo desarrollar buenos algoritmos. No es lo mismo que escribir ecuaciones en matemáticas. Debe inculcar la forma algorítmica de pensar, cómo dar instrucciones explícitas a las máquinas sin cerebro eliminando absolutamente todas las nociones preconcebidas sobre el mundo.

  1. Realmente no necesita estudiar algoritmos o saber cómo encontrar una solución sobre la marcha, porque todo está disponible en línea.
  2. Las personas pueden resolver problemas de forma natural o no lo son.

-Resolver problemas (escribir algoritmos) es más frecuente que solo buscar un patrón en el problema. Esto viene con la práctica.

Cualquier otra cosa que no sea “un algoritmo es un proceso o un conjunto de reglas a seguir en las operaciones de resolución de problemas” es un concepto erróneo. Eso es todo un algoritmo. Puede ser 2 líneas de código, puede ser páginas y páginas de código, puede ser código de alto nivel, puede ser un fragmento de ensamblaje, es cualquier código que es un conjunto de reglas para usar para resolver un problema.

¡Los algoritmos que se entienden fácilmente no son sofisticados!

Que el viaje de un algoritmo a un código es fácil.

More Interesting

¿Qué es una explicación intuitiva de IDA * (profundización iterativa A *)?

¿TFIDF es una métrica para medir qué tan informativa es una palabra o un algoritmo de aprendizaje automático?

¿Cómo funcionan los algoritmos y la estructura de datos cuando procesamos cualquier solicitud en un sitio web?

¿Qué es más rápido, encontrar un elemento en una tabla hash o en una lista ordenada? ¿Suena fácil? Pensar, repensar y comentar.

¿Por qué creas matrices en Java y cuáles son las posibilidades de crear una matriz?

¿Cuál es la forma más fácil de animar el algoritmo de Dijkstra para Power Point Presentation?

Si recibe fondos de miles de millones de dólares y tiene la tarea de crear un motor de búsqueda para competir con Google, ¿cómo sería su motor de búsqueda?

Cómo usar estructuras de datos como listas enlazadas en preguntas de entrevistas de Javascript

¿Cuáles son los mejores métodos para el análisis competitivo?

¿Qué libro debo comprar para aprender sobre algoritmos: estructuras de datos y algoritmos simplificados por Narsimha Karumanchi o Introducción a los algoritmos (CLRS)?

¿Es posible hacer un programa algorítmico de intercambio oscilante?

Cómo desarrollar un algoritmo para detectar rangos de negociación horizontales / patrones de consolidación

¿Cuál es la complejidad de este algoritmo de conteo de bits?

Cómo encontrar la longitud máxima de la submatriz en una matriz determinada

¿Cuál es el algoritmo de aprendizaje de Quora para su suministro de noticias?