Estoy buscando buenos ejemplos, donde ocurre el siguiente fenómeno: (1) Un problema algorítmico parece difícil, si desea resolverlo trabajando desde las definiciones y utilizando solo resultados estándar. (2) Por otro lado, se vuelve fácil, si conoce algunos teoremas (no tan estándar).
El objetivo de esto es ilustrar para los estudiantes que aprender más teoremas puede ser útil, incluso para aquellos que están fuera del campo de la teoría (como ingenieros de software, ingenieros informáticos, etc.). Aquí hay un ejemplo:
Pregunta: Dados los enteros , ¿existe un gráfico vértice (y si es así, encuentre uno), de modo que su conectividad de vértice sea , su conectividad de borde sea y su grado mínimo sea ?n k l d
Tenga en cuenta que requerimos que los parámetros sean exactamente iguales a los números dados, no son solo límites. Si desea resolver esto desde cero, puede parecer bastante difícil. Por otro lado, si está familiarizado con el siguiente teorema (ver Teoría de gráficos extremos de B. Bollobas), la situación se vuelve bastante diferente.
Teorema: Sean enteros. Existe un gráfico de -vértices con conectividad de vértice , conectividad de borde y grado mínimo , si y solo si se cumple una de las siguientes condiciones:n k l d
- ,
Estas condiciones son muy fáciles de verificar, ya que son simples desigualdades entre los parámetros de entrada, por lo que la pregunta de existencia se puede responder sin esfuerzo. Además, la prueba del teorema es constructiva, resolviendo también el problema de la construcción. Por otro lado, este resultado no parece lo suficientemente estándar, por lo que puede esperar que todos lo sepan.
¿Puede proporcionar más ejemplos en este espíritu, donde conocer un teorema (no tan estándar) simplifica enormemente una tarea?
fuente
Respuestas:
Decidir el isomorfismo de grupos simples , dado por sus tablas de multiplicar. El hecho de que esto se pueda hacer en tiempo polinomial se deriva directamente del hecho de que todos los grupos simples finitos pueden ser generados por un máximo de 2 elementos, y actualmente la única prueba conocida de ese hecho utiliza la Clasificación de grupos simples finitos (quizás el teorema más grande - en términos de autores, artículos y páginas, siempre probados).
fuente
Si entiendo su pregunta correctamente, un ejemplo canónico sería decidir si un gráfico tiene un circuito euleriano: equivalente a verificar que G esté conectado y que cada vértice tenga un grado par.sol sol
fuente
Esta tarde estaba leyendo Stringology, la teoría de cuerdas "real" .
Problema: Si e y son dos cadenas sobre algún alfabeto, cuando hay algunos enteros positivos m , n tal que x m = y n .X y m , n Xmetro= ynorte
Teorema: Hay enteros positivos tales que x m = y n si y solo si x y = y x .m , n Xmetro= ynorte xy=yX
fuente
Encontrar el número de raíces reales (distintas) de un polinomio real, ya sea en todo ℝ o en un intervalo dado. El teorema de Sturm le dice que una secuencia de polinomios que cumple un pequeño número de requisitos se puede usar para contar el número de raíces reales de un polinomio con coeficientes reales.
Entonces, todo lo que tiene que hacer es construir una secuencia de este tipo (que no es muy difícil, pero requiere algunos casos extremos y manejo del caso de polinomios no separables), y Bob es su tío.
Sorprendentemente, pocas personas conocen este resultado, a pesar de ser bastante antiguo (1829). Se usa en muchos sistemas de álgebra computacional, pero todos los profesores de matemáticas de mi universidad a quienes les pregunté no sabían el Teorema de Sturm o solo lo sabían por su nombre y tenían algo que ver con las raíces de los polinomios.
La mayoría de las personas se sorprenden cuando les dice que algo como contar raíces reales exactamente es tan fácil y no requiere ninguna aproximación, teniendo en cuenta que la búsqueda de las raíces es mucho más difícil. (Recuerde que para polinomios de grado ≥ 5, ni siquiera existe una fórmula "adecuada" para las raíces)
fuente
Problema: Diseñe una representación de gráficos planos donde podamos verificar si ( u , v ) es una ventaja en el tiempo O ( 1 ) .O ( n ) ( u , v ) O ( 1 )
Podemos eliminar el vértice con un grado máximo de 5 y agregarlo a una lista como clave y sus vecinos como valores. El gráfico restante también es plano y tiene un vértice con un grado máximo de 5. Por lo tanto, el espacio consumido es como máximo de . Podemos verificar si u está en la lista de adyacencia de v ; si no, podemos verificar si v está en la lista de adyacencia de u . Esto toma como máximo 10 pasos.5 n tu v v tu 10
fuente
Creo que el posterchild para esta categoría, al menos en lo que respecta a la asimetría de dificultad, es el siguiente problema:
Dado un gráfico plano , ¿es G 4 coloreable?sol sol
El teorema de cuatro colores simplifica el algoritmo a
return true
.fuente
Si un polinomio real (multivariado) puede expresarse como una suma de cuadrados de polinomios reales puede resolverse mediante reducción a una programación semi-definida. Necesita saber SDP y ese SDP se puede resolver de manera eficiente.pags
fuente
Otro ejemplo: dado un gráfico no dirigido, ¿tiene un corte mínimo en el que todos los bordes son disjuntos? Si es así, encuentra uno.
Se puede extender a cortes casi mínimos, que son más grandes que el corte mínimo, pero como máximo por un factor constante. Su número aún está limitado por un polinomio.
(No busqué una referencia, recuerdo que estos resultados se deben a D. Karger).
fuente
Problema: Satisfacción de una fórmula MSO (lógica monádica de segundo orden) sobre palabras finitas.
Teorema: MSO es equivalente a autómatas finitos sobre palabras finitas.
Lo anterior se puede elevar a palabras infinitas, árboles finitos, árboles infinitos.
fuente
Un ejemplo un poco más complicado: la factorización de matriz no negativa , cuando el rango no negativo es constante.
fuente
Decisional Diffie Hellman
Bajo los supuestos estándar de dureza del problema de registro discreto, este problema también puede parecer difícil.
Puede leer más sobre esto en El decisivo problema del hombre del infierno , Boneh'98 o una búsqueda en Google sobre Emparejamientos
fuente
(Trivialmente) la existencia de un equilibrio de Nash en un juego finito, un número par de caminos hamiltonianos en un gráfico cúbico, varios tipos de puntos fijos, comparaciones decentemente equilibradas en órdenes parciales y muchos otros problemas de PPAD.
fuente
fuente
Aquí hay otro ejemplo: dado un gráfico simple no dirigido, decida si tiene dos circuitos separados de vértice.
Dado que es fácil verificar si una gráfica es una de las gráficas permitidas por el Teorema, esto nos proporciona un algoritmo de tiempo polinómico para el problema de decisión.
Notas: (1) La demostración del teorema no es nada fácil. (2) Una vez que decidimos que existen dos circuitos disjuntos, parece menos claro cómo resolver el problema de búsqueda asociado , es decir, cómo encontrar realmente dichos circuitos. El teorema no da consejos directos a eso.
fuente
ejemplos menos complejos: hay algunas propiedades de tipo teorema que muestran que los algoritmos codiciosos para algunos problemas son óptimos. no es tan obvio para los no iniciados que un algoritmo codicioso puede encontrar un árbol de expansión mínimo . conceptualmente algo similar es el algoritmo de Dijkstra para encontrar la ruta más corta en un gráfico. en realidad, en ambos casos, los "teoremas" asociados son casi los mismos que los algoritmos.
fuente
Encuentra la secuencia de números de Fibonacci que son el producto de otros números de Fibonacci. Por ejemplo, el número 8 de Fibonacci está en la secuencia porque 8 = 2 * 2 * 2, y 2 es un número de Fibonacci que no es igual a 8. El número 144 de Fibonacci está en la secuencia porque 144 = 3 * 3 * 2 * 2 * 2 * 2, y 2 y 3 son números de Fibonacci que no son iguales a 144.
El teorema de Carmichael implica que 8 y 144 son los únicos términos de esta secuencia.
fuente