Cómo diseñar un algoritmo eficiente cuando me enfrento a un problema

No hay bala de plata . Sin embargo, aquí hay un par de cosas que vienen a la mente.

Coincidencia de patrones = práctica . Puede comparar problemas de patrones con problemas relacionados que haya visto antes, cuya solución ya conoce. Para obtener la capacidad de hacer esto, necesita resolver cientos o miles de problemas, para entrenar su clasificador interno correctamente.

Debe practicar la resolución de los problemas usted mismo , en lugar de solo leer las soluciones, porque son las dificultades las que lo frustran durante la búsqueda de una solución y las técnicas que utiliza para resolver esas dificultades, lo que le brinda el mayor beneficio: comprenderá por qué surgieron dificultades en primer lugar, y sepa cómo resolver dificultades similares la próxima vez que las vea.

Intuición = profundidad de comprensión . La capacidad de intuir ciertos hechos acerca de qué complejidades deberían ser alcanzables, o qué técnicas deberían ser utilizables, proviene de tener un conocimiento realmente profundo del material subyacente. Cuando su conocimiento es superficial o incluso “funcional”, es posible que pueda aplicar una técnica de manera estándar, pero no podrá reconocer variaciones o modificar las técnicas para adaptarlas a una situación particular.

Ver también: ¿Cómo puedo mejorar mi habilidad para resolver problemas algorítmicos?

Creo que debes comenzar a resolver diferentes problemas de diferentes materias, resolver cada vez más, esto te ayudará a hacer crecer tu mente y tener una buena mente, hay algunos problemas clásicos como la mochila, … debes conocerlos antes de comenzar a leer el libro a continuación.

puedes leer la programación competitiva 3 de Halim y resolver sus problemas

no empieces con CLRS

Buena pregunta. Hay toda una industria dedicada a educar a las personas sobre este tema. Puede comenzar estudiando el libro introductorio sobre el tema. La tercera edición completa está disponible aquí:

http://bayanbox.ir/view/41778586

More Interesting

¿Qué papel juega la habilidad matemática en la ingeniería informática o la codificación?

He reprobado mucho un título de CS, pero la gran emoción de diseñar un algoritmo innovador todavía está en mí, ¿qué debo hacer?

¿Existe algún modelo de cálculo X más débil que una máquina de Turing (pero aún no trivial) para el cual una máquina de Turing puede predecir el comportamiento de detención?

Cómo encontrar la suma de todos los números distintos cuyo MCM es N

Cómo derivar el mecanismo de conversión de convertir decimal a binario y viceversa

¿Qué debo saber sobre las matemáticas combinadas con el desarrollo web (programación)?

¿Cómo podría implementar un programa que calcule [math] e ^ x [/ math] sumando los primeros 100 términos de su expansión en serie?

¿Cuáles son los fundamentos matemáticos de la inteligencia artificial?

¿Cuál es la verdad por la que se esfuerza un informático teórico?

¿Por qué los informáticos / programadores usan la notación big-O en lugar de la función de tiempo de ejecución real?

Si el punto (3, -4) divide la línea entre el eje x y el eje y en la relación 2: 3, ¿cuál será la ecuación lineal?

¿Cuáles son algunos ejemplos de pruebas matemáticas que contradicen las expectativas?

¿Podría el basilisco de Roko realmente suceder?

¿Es necesario aprender matemáticas discretas y sus aplicaciones para comenzar la programación en Python?

No quiero usar las bibliotecas de Python. Quiero hacer los cálculos y escribir el código yo mismo. ¿Qué libros explican las matemáticas y entra en detalles?