He visto referencias para cortar y pegar pruebas en ciertos textos de algoritmos. ¿Cuál es la idea principal de tales pruebas? y ¿cómo hago para usarlos para probar algo?¿Qué es una prueba de corte y pegado?
Respuesta
El término "cortar y pegar" aparece en los algoritmos a veces cuando se hace programación dinámica (y otras cosas también, pero es ahí donde lo vi por primera vez). La idea es que para usar programación dinámica, el problema que está tratando de resolver probablemente tenga algún tipo de redundancia subyacente. Utiliza una tabla o una técnica similar para evitar resolver los mismos problemas de optimización una y otra vez. Por supuesto, antes de comenzar a utilizar la programación dinámica, sería bueno probar que el problema tiene esta redundancia, de lo contrario no obtendrá nada utilizando una tabla. Esto a menudo se denomina propiedad de "subproblema óptimo" (por ejemplo, en CLRS).
La técnica "cortar y pegar" es una forma de demostrar que un problema tiene esta propiedad. En particular, desea mostrar que cuando se presenta una solución óptima a un problema, necesariamente ha utilizado soluciones óptimas para los subproblemas constituyentes. La prueba es por contradiccion. Supongamos que se le ocurre una solución óptima a un problema mediante el uso de soluciones subóptimas a subproblemas. Entonces, si tuviera que reemplazar ("cortar") esas soluciones de subproblemas subóptimos con soluciones de subproblemas óptimas (al "pegarlas"), mejoraría su solución óptima. Pero, dado que su solución fue óptima por suposición, tiene una contradicción. Hay otros pasos involucrados en tal prueba, pero esa es la parte de "cortar y pegar".
Cortar y pegar es una forma utilizada en los conceptos de la teoría de gráficos, idea es esto: suponga que tiene solución para el problema A, quiere decir que algún borde/nodo debería estar disponible en solución. Suponga que tiene una solución sin borde/nodo especificado, intenta reconstruir una solución cortando un borde/nodo y pegando el borde/nodo especificado y diciendo que el nuevo beneficio de la solución es al menos igual que la solución anterior.
Una de las muestras más importantes está probando atributos MST (lo que demuestra que la elección codiciosa es lo suficientemente buena). ver presentation on MST from CLRS book.
'cortar y pegar' técnica se puede utilizar para demostrar tanto la corrección del algoritmo voraz (tanto la estructura óptima y la propiedad codiciosos-elección' y dinámica corrección algoritmo de programación.
Greedy corrección
Esta conferencia señala Correctness of MST del MIT 2005 exposiciones de clase de algoritmo de licenciatura 'cortar y pegar' técnica para demostrar tanto la estructura óptima y la propiedad codiciosos-elección.
Esta conferencia señala Correctness of MST del MIT 6.046J/18.410J primavera 2015 uso 'cortar y técnica de "pasteurización" para probar gr EEdy elección propiedad
Programación Dinámica corrección
Una explicación más auténtico para 'cortar y pegar' se introdujo en CLRS (tercera edtion) Capítulo 15.3 Elemento de programación dinámica en la página 379
"4 . Usted muestra que las soluciones a los subproblemas utilizados dentro de la solución óptima del problema deben ser óptimas utilizando una técnica de "cortar y pegar" , lo hace suponiendo que cada una de las soluciones de subproblema no es óptima y luego deriva una contradicción En particular, al "cortar" la solución de subproblemas no óptima y "pegar" la óptima, usted muestra que puede obtener una mejor solución al problema original, contradiciendo así su suposición de que ya tenía una solución óptima. Si hay más de un subproblema, por lo general son tan similares que el argumento de cortar y pegar uno puede modificarse para los demás con poco esfuerzo."
prueba por la contradicción
P se supone que es falsa, que es! P es cierto.
Se muestra que! P implica dos afirmaciones contradictorias entre sí, Q y! Q.
Dado que Q y! Q no pueden ser ambos verdaderos, la suposición de que P es falsa debe ser incorrecta y P debe ser verdadera.
- 1. plugin de eclipse para regiones rectangulares de selección/corte/pegado?
- 2. ¿Qué es una prueba de humo?
- 3. ¿Cuál es el significado de char (y de prueba (...)) [2]
- 4. ¿Qué es la prueba positiva y la prueba negativa en la unidad de prueba
- 5. Problema de corte con json_encode. ¿Por qué y cómo resolverlo?
- 6. ¿Qué es una prueba de humo y qué hará por mí?
- 7. ¿Qué es una buena relación de Código a prueba?
- 8. ¿Qué es y qué no es una historia de usuario?
- 9. ¿Qué es el arnés de prueba?
- 10. ¿Qué técnica de corte de internet funciona mejor?
- 11. ¿Cuál es la diferencia entre "punto de corte de alternar línea" y "punto de corte alternar" en Eclipse?
- 12. ¿Qué es la prueba de Turquía?
- 13. ¿Cuál es la diferencia entre Test t; y Prueba t() ;? Si la prueba es una clase
- 14. pegado con "java.util.ConcurrentModificationException"
- 15. ¿Es posible obtener texto pegado sin utilizar la función setTimeout()?
- 16. Determinando qué unidad de prueba y qué no
- 17. corte completamente y pegue un elemento
- 18. ¿Cómo obtener una notificación de pegado del portapapeles y proporcionar mis propios datos?
- 19. ¿Es posible parametrizar una prueba de nunit?
- 20. Casos de prueba, "cuándo", "qué" y "por qué"?
- 21. ¿Prueba si una expresión es una función?
- 22. Asignación de corte con una cadena en una lista
- 23. Cristal de corte Delphi
- 24. Árbol de expansión mínimo: ¿Qué es exactamente la propiedad de corte?
- 25. Depuración en XCode - ejecutando código y puntos de corte
- 26. ¿Puedes capitalizar un token pegado en una macro?
- 27. ¿Qué es y = y | =
- 28. Los puntos de corte de depuración en la prueba JUnit en Eclipse no funcionan
- 29. Pycharm no reconoce puntos de corte en archivos que no son de prueba
- 30. ¿Es posible utilizar una cadena como delimitador en el comando de corte de Unix?
¿Por qué la votación negativa y los votos para cerrar? –
No entiendo por qué esta no es una pregunta real. Me he encontrado con pruebas de cortar y pegar en varios lugares en textos de algoritmos. ¿Cómo esta pregunta se volvió "ambigua, vaga, incompleta, demasiado amplia o retórica y no puede ser respondida razonablemente"? @Cameron incluso dio una buena explicación sobre la esencia de tal prueba wrt a la programación dinámica. –