Dado un problema, ¿cómo puedo decidir si usar un enfoque codicioso o dividir y conquistar?

Algoritmo codicioso:

El algoritmo codicioso es una técnica sencilla, mientras que la solución óptima para cada instancia más pequeña proporcionará un resultado inmediato; el algoritmo no considera el problema mayor en su conjunto.

En general, estos algoritmos se utilizan para resolver problemas de optimización y funcionan mediante la construcción recursiva de un conjunto de objetos a partir de las partes constituyentes más pequeñas posibles, con el objetivo de maximizar la función al tomar la decisión que parece más prometedora en cualquier momento en el que retroceder el problema cambia La decisión no es posible. La propiedad de elección codiciosa y la subestructura óptima son dos ingredientes en el problema que se prestan a una estrategia codiciosa.

Divide y conquistaras:

Divide and conquer se usa para aplicaciones paralelas basadas en la conocida estrategia de divide y vencerás; La concurrencia se obtiene resolviendo simultáneamente los subproblemas en los que la estrategia divide el problema.

Divide and Conquer es una técnica de arriba hacia abajo para diseñar algoritmos, que divide un problema en subproblemas que son similares al problema original hasta que los subproblemas sean lo suficientemente fáciles de resolver de manera directa y recursiva, y finalmente, combina las soluciones a los subproblemas. para resolver el problema original

La idea básica es que si el problema es fácil, entonces puede resolverse directamente, de lo contrario descomponerlo en partes más pequeñas y resolver las partes más pequeñas.

Por lo tanto, este algoritmo se usa de manera efectiva cuando el problema se puede resolver utilizando la estrategia de dividir y conquistar y el paso de división debe producir un número constante de subproblemas que se pueden resolver de forma independiente y el tamaño de cada subproblema debe ser mucho más pequeño que el original.

No existe una regla rígida y rápida como tal, pero le diré lo que uso y en qué circunstancias.
Cuando establezca una meta o una agenda personal, utilice el enfoque codicioso. Esto le brinda un impulso necesario para obtener el impulso inicial para lograr sus tareas y también brinda oportunidades para explorar más sobre su tarea o agenda. Cada vez que asisto a un entrenamiento, uso el enfoque de Greedy para obtener el máximo de ese entrenamiento. El enfoque codicioso también se puede implementar en situaciones en las que tus oponentes no son lo suficientemente fuertes o no pueden tomar una posición por sí mismos. En mi empresa, todas las mañanas teníamos reuniones de apoyo para nuestro equipo y estamos obligados a dar una actualización sobre las diferentes tareas que se nos asignan, por lo que utilizo para implementar un enfoque codicioso y obtener información sobre el estado de las tareas y el uso de otras personas. para actualizar mi jefe de proyecto al respecto. Solía ​​obtener informes de errores de nuestro probador de calidad y también presentarlos. Entonces esto me ayudó a ganar la carrera de ratas. Me ayudó a conocer más sobre la gestión de proyectos y me asignaron mejores tareas, como la estimación del tiempo y la selección de recursos.
Así que ahora vengo a dividir y conquistar el gobierno. Esto es muy complicado y puede meterte en problemas también si no se implementa correctamente. Después de 2 años en mi empresa, me asignaron un equipo de 8 personas que incluía personas que eran mayores para mí y juniors. Entonces, si miras a mi equipo, tuve oponentes que son lo suficientemente fuertes como para defenderse por sí mismos. Depende de ellos para hacer mi trabajo. Entonces la estrategia es dividirlos según el criterio. El criterio será diferente para cada situación. La regla general es que debemos mirar a los oponentes, si son fuertes y son una amenaza para ti, solo divídelos y luego trata uno por uno.

Nota: Lea el historial, le brinda muchas estrategias.

More Interesting

¿Existe un algoritmo para encontrar el día de cualquier fecha de cualquier año?

¿Qué estructuras de datos / algoritmos de coincidencia usa vimdiff?

¿Cuáles son los buenos canales en YouTube para aprender algoritmos y estructuras de datos para la preparación de Google Code Jam o Facebook Hacker Cup?

¿Qué es un promedio móvil y, algorítmicamente, cómo se calcula dicho conjunto?

¿Cómo demostramos que un gráfico conectado con n nodos y más de n-1 aristas debe contener ciclo?

¿Dónde puedo obtener la mejor implementación de Java del algoritmo de ruta más corta de Dijkstra?

¿Vale la pena publicar mi algoritmo?

¿Qué algoritmos debe saber un estudiante de informática de segundo año?

¿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?

¿Por qué el algoritmo RSA no lleva el nombre de Ellis, Cocks y Williamson, dado que lo inventaron primero?

¿Cuál es un buen algoritmo de segmentación para reconocer números de imágenes?

Cómo calcular el orden de crecimiento para un fragmento de código dado

¿Un programador autodidacta necesita aprender materias como algoritmos y cálculo? ¿Por qué?

Quiero comenzar un proyecto de programación. ¿Cuáles son algunas sugerencias al respecto?

¿Qué tipos de algoritmos o códigos no valen la pena publicar en trabajos académicos de estudiantes graduados?