Por aquí , Dave Clarke propuso que para comparar el crecimiento asintótico, debe trazar las funciones disponibles. Como científico de la computación teóricamente inclinado, llamo (ed) a este vudú ya que una trama nunca es una prueba. Pensándolo bien, tengo que estar de acuerdo en que este es un enfoque muy útil que incluso a veces se subutiliza; una trama es una forma eficiente de obtener primeras ideas, y a veces eso es todo lo que necesita.
Cuando se enseña TCS, siempre hay un estudiante que pregunta: "¿Para qué necesito una prueba formal si puedo hacer X que siempre funciona?" Depende de su maestro (s) señalar e ilustrar la falacia. Hay un conjunto brillante de ejemplos de patrones aparentes que eventualmente fallan en matemáticas. SE, pero esos son escenarios bastante matemáticos.
Entonces, ¿cómo engañas a la heurística de la inspección de la trama? Hay algunos casos en que las diferencias son difíciles de distinguir, p. Ej.
[ fuente ]
Adivine y luego verifique la fuente de las funciones reales. Pero esos no son tan espectaculares como esperaría, en particular porque las relaciones reales son fáciles de detectar solo desde las funciones, incluso para un principiante.
¿Hay ejemplos de crecimiento asintótico (relativo) donde la verdad no es obvia a partir de la definición de la función y la inspección de la parcela para razonablemente grande le da una idea completamente equivocada? Las funciones matemáticas y los conjuntos de datos reales (por ejemplo, tiempo de ejecución de un algoritmo específico) son bienvenidos; sin embargo, absténgase de las funciones definidas por partes.
fuente
Respuestas:
[ fuente ]
fuente
Aquí hay otro ejemplo (ciertamente construido), pero todavía encuentro uno notable. Se pretende mostrar que las parcelas pueden ser muy engañosas para juzgar el crecimiento asintótico.
¿Puedes adivinar cuál de las funciones crece (asintóticamente) más rápido?
Entonces, es esencialmente , es decir, lo mismo que , pero su segunda derivada no es uniformemente , sino que oscila entre y con un período de crecimiento exponencial. Esta oscilación no es visible en las parcelas ordinarias.g f 2 0 4x2 f 2 0 4
Para este ejemplo, podemos demask las oscilaciones considerando un log-log-plot:
Por supuesto, esto no ayuda, en general; por ejemplo, podríamos tener un período doblemente exponencial ...
fuente
Un buen ejemplo es el algoritmo DFA mínimo profundamente mágico de Brzozowski. Dado un autómata finito , podemos calcular un autómata finito determinista mínimo a partir de él:N=(Q,S⊆Q,F⊆Q,R⊆Q×Σ×Q)
Obviamente, este es un algoritmo de tiempo exponencial en el peor de los casos, ya que puede tomar un autómata no determinista y darle uno determinista (o incluso más obviamente, llama a la construcción del subconjunto dos veces).
Sin embargo, si le da al algoritmo de Brzozowski un DFA como entrada, en muchos tipos comunes de entrada puede competir y, a menudo, superar a los algoritmos especializados de minimización de DFA (que generalmente son u si tiene un núcleo duro e implementa el algoritmo de Hopcraft).O (O(n2) O(nlog(n))
Esto toca la parte de "trama" de la "heurística de inspección de trama" --- tenemos que elegir qué puntos muestrear al dibujar la trama, y puede engañar a una trama ingenua si no elige sus puntos con cuidado. Esto también es cierto para otros ejemplos, como Quicksort y el algoritmo Simplex, pero para la pedagogía prefiero este algoritmo a esos dos.
La diferencia de Quicksort es "solo" cuadrática versus log-lineal, que es menos espectacular que una diferencia polinómica / exponencial. El algoritmo simplex tiene una diferencia espectacularmente similar, pero su análisis es considerablemente más complicado que el algoritmo de Brzozowski.
(Además, creo que el algoritmo de minimización de DFA de Brzozowski es mucho menos conocido de lo que merece, pero, por supuesto, es cuestión de gustos).
fuente
La técnica matemática de ajuste de curvas se puede utilizar para proporcionar un número infinito de respuestas a su pregunta. Dada una curva y un rango, uno puede encontrar fácilmente un polinomio que se ajuste a la curva con cualquier grado de precisión. Este ejemplo de Wikipedia muestra cómo una onda sinusoidal puede ajustarse con bastante precisión con un polinomio de cuarto orden (la curva azul).
Podría utilizar polinomios de orden superior y engañar a la heurística de inspección de la trama incluso mejor que este gráfico.
fuente