Un amigo mío y yo hemos decidido probar el método de fuerza bruta y calcular algunos valores de para valores pequeños de y . Esto es totalmente imposible sin emplear la poda, y esperamos que los trucos que hemos encontrado nos den una idea del resto del problema. Hasta ahora, no hemos logrado reducir significativamente el tiempo de ejecución doblemente exponencial del método de fuerza bruta (aproximadamente es nuestro mejor límite hasta el momento) y, por lo tanto, todavía no hemos alcanzado nuestro objetivo original de alguna manera prediciendo la función detrás detnd32nfdesde sus primeros valores. Tampoco hemos estudiado todos los comentarios de los subprocesos anteriores en detalle, por lo que algo de esto ya puede ser conocido: básicamente nos divertimos haciendo que nuestro código sea rápido y quería publicar nuestros resultados en algún lugar, si tuviera un entorno LaTeX que funcionara pon esto en el ArXiV.
Código (no es exactamente el código de producción ...): http://pastebin.com/bSetW8JS . Valores:
f(d=2, n)=2n-1 for n <= 6
f(d=3, n=3) = 6
{} {0} {01} {012} {12} {2}
f(d=4, n=4) = 8
f(d=3, n=4) = 8
{} {0} {01} {1,02,03} {2,13} {123} {23} {3}
{} {0} {01} {2,013} {1,02,03} {023} {23} {3}
f(d=5, n=5) = 11
f(d=4, n=5) = 11
f(d=3, n=5) = 11
{} {0} {01} {1,02} {2,13,04} {12,03,14} {3,124} {23,24} {234} {34} {4}
{} {0} {01} {1,02} {2,13,04} {12,03,14} {3,124} {23,24} {234} {34} {4}
{} {0} {01} {012,3} {02,12,013,014} {13,023,04,124} {123,024} {23,24} {234} {34} {4}
{} {0} {01} {012,13} {02,12,013} {03,123,014,024} {023,124} {23,24} {234} {34} {4}
Decimos que la secuencia es convexa si (*) se mantiene. Nuestro enfoque construye secuencias convexas agregando familias a secuencias convexas más cortas, esencialmente usando eso si es convexo, entonces es convexo. Notamos que es convexo si y solo si para todo tenemos que es convexo. Decimos que es compatible con siF1,...,FtF1,...,FtF1,...,Ft−1F1,...,FtA∈FtF1,...,Ft−1,{A}AF1,...,Ft−1F1,...,Ft−1,{A}es convexo: ahorramos tiempo de cálculo al calcular los conjuntos que son compatibles con una secuencia y luego tomar los elementos de su conjunto de potencia como el nuevo , en lugar de determinar si es convexo directamente.FtF1,...,Ft
Nuestra próxima aceleración es esencialmente una programación dinámica. Intentamos encontrar una relación de equivalencia en secuencias convexas con las siguientes dos propiedades. Primero, si para dos secuencias convexas, entonces es compatible con si y solo si es compatible con . Segundo, si y es convexo, entonces∼F1,...,Ft∼F′1,...,F′tAF1,...,FtF′1,...,F′tF1,...,Ft∼F′1,...,F′tF1,...,Ft,Ft+1F1,...,Ft,Ft+1∼F′1,...,F′t,Ft+1. Además, nos gustaría poder determinar si un conjunto es compatible con elementos de una clase de equivalencia y determinar un representante de la clase de equivalencia de dado y un representante de la clase de equivalencia de . El algoritmo de programación dinámica resultante es entonces obvio. El número de clases de equivalencia (junto con el tiempo empleado por las dos operaciones anteriores) proporciona un límite en el tiempo de ejecución del algoritmo de programación dinámica obvio.F1,...,Ft,Ft+1Ft+1F1,...,Ft
Para la equivalencia que usamos para obtener nuestro límite, usamos una caracterización de convexidad que se basa en 'intervalos' de la siguiente manera. Dado un subconjunto de , decimos que es contiguo con respecto a una secuencia (no necesariamente convexa) si para algunos enteros . Decimos que es el intervalo para wrt esta secuencia. Se ve fácilmente que es convexo si y solo si todos los subconjuntos deA{1,…,n}AF1,...,Ft{k∣∃B∈Fk:A⊆B}={i,…,j}1≤i≤j≤n(i,j)AF1,...,Ft{1,…,n} son contiguos con respecto a la secuencia.
Ahora, dada una secuencia convexa , marcamos todos los subconjuntos de como no tocados , no permitidos o activos de la siguiente manera: todos los elementos de están activos, todos los elementos de están prohibidos y todos los superconjuntos de los conjuntos cuyo intervalo con respecto a es con también están prohibidos. Es inmediato que un conjuntoF1,...,Ft{1,…,n}FtF1,...,Ft−1BAF1,...,Ft−1(i,j)j<t−1Aes compatible con la secuencia si y solo si está marcado como no tocado. Definimos dos secuencias como equivalentes bajo si su marcado es igual. Se ve fácilmente que esta relación de equivalencia satisface nuestras dos propiedades. Para calcular si un conjunto debe ser rechazado por la condición de intervalo, podemos usar la condición equivalente 'existe un conjunto tal que para ningún conjunto , '. es un límite inmediato en el número de clases de equivalencia.∼BC∈FtD∈Ft+1B∩C⊆D32n
También utilizamos varias podas adicionales. Solo consideramos antichains para y requerimos que los elementos de sus elementos provengan de . Por último, utilizamos la optimización que para secuencias óptimamente largas (y similares para y ). Imaginamos que investigar el comportamiento de puede generar ahorros más drásticos.Ft+11,…,iF1={{1}},F2={{1,2}}Ft−1FtF3