Es realmente bueno que haya intentado resolver un problema usted mismo en lugar de aprender directamente la solución existente. En realidad, este debería ser el primer paso antes de aprender cualquier algoritmo o cualquier concepto nuevo en general. Primero vea qué problema resuelve ese algoritmo. Luego intente desarrollar su propio algoritmo para resolverlo. Dedique un tiempo como una hora y, si no puede encontrar un algoritmo, vaya y aprenda el existente. Esto realmente mejorará su capacidad de pensamiento y lo entusiasmará a aprender el algoritmo existente. Después de aprender los algoritmos básicos, puede combinar los conceptos de algoritmos ya conocidos para resolver otros problemas que aún no se han resuelto. Es por eso que debes aprenderlo incluso si no puedes pensarlo por ti mismo.
La mayoría de los algoritmos son desarrollados por personas durante sus trabajos de investigación. Se necesita mucho tiempo y esfuerzo para pensar y probar un algoritmo antes de publicarlo. Hay algunos problemas complejos para los cuales puede llevarle días o semanas desarrollar un algoritmo usted mismo. Además, pensar que un algoritmo no es la parte más difícil, también tendrá que demostrar que es correcto.
Ahora suponga que encuentra un problema al encontrar la submatriz contigua de suma máxima de una matriz con números positivos y negativos. El primer paso como dije es pensar su propio algoritmo. Si piensa por algún tiempo, encontrará una manera muy simple de resolver este problema.
- ¿Siguen siendo relevantes los enfoques simbólicos de IA después de los recientes éxitos del aprendizaje profundo?
- ¿Qué áreas debo conocer bien para ser un buen ingeniero de visión por computadora?
- Cómo determinar la distribución que sigue un conjunto de datos
- ¿Cuáles son las cosas más difíciles o problemáticas para los ingenieros de Machine Learning / Deep Learning?
- ¿En qué condiciones funcionaría un algoritmo lento más rápido que un algoritmo rápido?
suma = 0
maxSum = arr [0]
para i = 0 a n-1
suma + = arr [i]
maxSum = max (maxSum, sum)
sum = max (suma, 0)
Este algoritmo se llama algoritmo de Kadane. Pero como puede ver, es fácil para cualquiera encontrar esta solución en pocos minutos.
Consideremos otro problema. Te dan dos cadenas A y B. Debes encontrar todas las ocurrencias de la cadena B como subcadena en la cadena A en tiempo lineal . Ya no es fácil. Pero como dije antes de aprender el algoritmo KMP existente, deberías pasar algún tiempo como una hora para encontrar tu propio algoritmo, pero si no puedes hacerlo en una hora, entonces debes ir y aprender el algoritmo KMP existente.
Hay muchos problemas que todavía no podemos resolver de manera eficiente. Algunas partes de esos problemas pueden resolverse con algoritmos ya conocidos. Pero para otros subproblemas no tenemos un algoritmo eficiente hasta ahora. Deberíamos dedicar tiempo a esos subproblemas no resueltos en lugar de pasar días o semanas resolviendo los subproblemas ya resueltos desde cero.
Por lo tanto, debe pasar algún tiempo, como una hora, para desarrollar su propio algoritmo. Es bueno si puedes hacerlo en una hora, pero si no puedes hacerlo en una hora, entonces debes aprender el algoritmo existente. Sin embargo, incluso si ha desarrollado su propio algoritmo, le sugiero que eche un vistazo al algoritmo existente, solo para ver si el algoritmo existente es mejor que el suyo.