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

¿Cuáles son algunos de los algoritmos / estructuras de datos que son útiles en la vida real?

¿Cuál es la lógica para verificar si dos árboles de búsqueda binarios son estructuralmente idénticos o no?

¿Cuál sería un algoritmo eficiente para ordenar millones de líneas de cadenas / enteros en un archivo?

Dada una lista de enlaces con punteros derechos, cada elemento de la lista tiene un enlace descendente que contiene otra lista de enlaces con punteros descendentes, de modo que cada lista derecha y abajo están ordenadas. ¿Cuál es la forma más rápida de aplanar la lista de enlaces de forma ordenada?

Cómo utilizar el algoritmo Hidden Markov Model Viterbi para el etiquetado de secuencias

Cómo resolver este problema en la búsqueda binaria

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

¿Qué algoritmos se pueden usar para encontrar un objeto similar en una base de datos que contenga múltiples atributos, numéricos, categóricos y no categóricos?

¿Cómo podría seleccionar aleatoriamente los bordes en un gráfico para conectar cada nodo [C]?

Cómo verificar si la suma de los números de la primera mitad y la segunda mitad de una matriz es la misma

¿Qué es la ordenación de tramas en las redes?

¿Cuáles son algunos cuadriláteros que se usan en la vida real?

¿Cómo unir y dividir funciona en un Treap al agregar o eliminar un elemento?

Cómo resolver esta relación de recurrencia usando el método de sustitución

¿Cuándo debería mirar la solución de algún problema algorítmico?