Ninguno de ellos es bueno para resolver los otros problemas.
- Los algoritmos codiciosos hacen la elección localmente óptima en cada etapa con la esperanza de encontrar una solución óptima global, y en general no produce una solución óptima.
- Los algoritmos de programación dinámica resuelven diferentes partes de los subproblemas (solo una vez y los memorizan para usarlos más tarde si es necesario) y los combinan para producir el mejor resultado.
Pongamos un ejemplo.
supongamos que tiene que viajar de A a D, con dos opciones a través de B y C, de las cuales los tiempos de viaje son. (considerando que no hay obstáculos de tráfico y el tiempo dado es cierto)
- Cómo ordenar la matriz de una estructura utilizando solo uno de sus miembros de datos en c ++ (STL)
- ¿Existe un algoritmo existente para la siguiente pregunta? Si no, ¿cuál es la respuesta?
- ¿Cómo explicarías un 'arreglo' a un principiante en programación?
- ¿Cómo analizar la complejidad de caso promedio de un algoritmo? ¿Hay alguna fuente para aprenderlo paso a paso de lo básico?
- ¿Cuál es un buen algoritmo para generar un archipiélago en un mapa en particular?
A-> B (5 minutos)
A -> C (30 minutos)
B -> D (60 minutos)
C -> D (15 minutos)
B-> C (30 minutos)
Por codicioso: (A-> B) 5 minutos + (B-> D) 60 minutos = 65 minutos tiempo total tomado. (la mayoría de la gente no reconoce la trama codiciosa)
Por dinámico: (A-> C) 30 minutos + (C-> D) 15 minutos = 45 minutos en total.
entonces los problemas (situación de lectura) deciden cuál tomar. Definitivamente intentaré elegir según los problemas y lo que quiero sacar de esto (ya que mi cerebro puede leer la situación).