Mientras que la 2ª respuesta mía proporciona un método de fuerza bruta (restringido), este método no se puede utilizar cuando la longitud descompuesta es superior a 30 o así: el tiempo de cálculo crece exponencialmente con la longitud. (Si usamos para los dígitos disponibles para los residuos módulo 3 solo los residuos $\{0,1\}$ tenemos un problema de $2^\text{length}$ en lugar de un problema de $3^\text{length}$, pero vemos que el método pronto alcanzará su límite.)
Aquí he aplicado mi algoritmo "estrictamente decreciente" en algunos números de ejemplo $a_0$ tomados de las páginas de Collatz de Eric Roosendaal. Creo que son números "complicados": poseedores de récords de duración, demora y trayectoria; y el algoritmo "estrictamente decreciente" puede manejar números con docenas (o incluso cientos) de dígitos. La longitud de la trayectoria del algoritmo "estrictamente decreciente" es en todos los casos drásticamente más corta que la trayectoria original de Collatz. Por un lado, hay ejemplos donde las descomposiciones "estrictamente decrecientes" no son óptimas, pero podrían ser el mejor enfoque sistemático disponible cuando la longitud de la descomposición se vuelve grande y la memoria y/o el tiempo de cálculo se vuelven galácticos cuando la fuerza bruta combinatoria completa ya no es aplicable. (Esto me recuerda, por cierto, al problema de las "reglas perfectas" y "reglas óptimas", creo que hay una entrada en Wikipedia)
No doy la tabla en mathjax porque me gustaría tener colores, etc., y eso no es mi área de expertise... Así que aquí hay una imagen de la tabla, y debajo los datos en bruto.
Roosendaal :
aquí: idx= índice en la página web de E.R.
idx a0 collatz collatz collatz stric dec óptimo??
N (3^N) S (2^S) longitud(N+S)# de tokens
página: Récords de deslizamiento
32 180352746940718527 714 1189 1903 241
20 1200991791 326 547 873 113
10 626331 189 319 508 84
página: Récords de demora
100 14022512981985 590 979 1569 199
96 3743559068799 583 966 1549 179
66 1341234558 370 617 987 134
30 26623 113 194 307 77
página: Récords de trayectoria
93 274133054632352106267 672 1133 1805 280
88 1980976057694848447 547 928 1475 216
página: (otro)
30 903 41 75 116 54
Eric Roosendaal: http://www.ericr.nl/wondrous/
Récords de deslizamiento: http://www.ericr.nl/wondrous/glidrecs.html
Récords de demora: http://www.ericr.nl/wondrous/delrecs.html
Récords de trayectoria: http://www.ericr.nl/wondrous/pathrecs.html
El código Pari/GP es el siguiente (solo un poco ajustado para legibilidad, lo mejoraré más tarde)
\\ Pari/GP
\\ de algún a0 encuentra entre a1=a0*3^e3 ... a1+(3^e3 -1) un número a2 divisible por
\\ 2^e2 de tal manera que a3=a2/2^e2 < a0 . Si para e3=1 no hay tal número,
\\ aumentar e3 hasta tener éxito o e3>maxe3.
\\ Devolver una lista corta de primeras soluciones con e3 crecientes
\\
\\ la rutina de usuario "mcc( [vectorv,vectorv,...,vectorv])" devuelve una concatenación
\\ de matriz rectangular y "VE()" extrae las filas y columnas principales de la matriz
\\
{findstepdown(a0,maxe3=4)=mi(aa,ae,a1,p3,a2,m2,r1,A,res_a,res_A,res_e3,res_r,il);
res_a=res_e3=res_A=res_r=vectorv(maxe3);il=0; \\ vectores de valores resultantes
for(e3=1,maxe3,
p3=3^e3;[aa=p3*a0,ae=aa+p3-1,p3-1,m2=2^ceil(ld3*e3)];
[r1= (-aa % m2),p3-1] ; \\ >p3-1
if(r1>=p3,siguiente()); \\ el residuo debe estar en el intervalo a1..a1+3^e3-1
A=valuation(aa +r1,2);a1=(aa+r1)>>A;
il++;
res_e3[il]=e3;res_a[il]=a1;res_A[il]=A;res_r[il]=r1;
\\ llenar lista de vectores de resultado
); return(VE(mcc([res_e3,res_a,res_A,res_r]),il,4));
}
\\ llama a "findstepdown()" repetidamente hasta que a1 se acerca a 1
{strictlydecreasing(a0,maxstepdown=8)=mi(lambda,st,st1,st2,res,res1,e3,e2,a1,r1);
lambda=0; st=Str("");a1=a0;print1(a0,":");
for(k=1,40,
res= findstepdown(a1,maxstepdown);
res1=res[1,]; \\ ¡usa siempre el primer resultado de la disminución de paso!
e3=res1[1];a1=res1[2];e2=res1[3];r1=res1[4];lambda+=(e2+e3);
print1([a1,lambda]);
st1=st2="";
for(k=1,e2,st1=Str(st1,"*2"));
for(k=1,e3,st2=Str(st2,"/3"));
st=Str(st1,st2,st);
si(a1==1,romper())
);
print("");
print(a0,"=",Str(1,st," (#"lambda")")); }
\\ aplicar esto
a0=4535
strictlydecreasing(a0) \\ imprime una descomposición de a0
Resultados ejemplares: descomposiciones de dos valores no demasiado grandes $a_0$:
Estos también son un desafío para los métodos competidores para encontrar descomposiciones mejores/óptimas.
leyenda: -------------------------------------------------------------
a_0 :[a_k consecutivos, longitud parcial acumulativa] [...,...] ...
626331:[528467, 8][297263, 14][3919, 28][3307, 36][2791, 44][785, 51][589, 54][221, 58][83, 62][47, 68][5, 79][1, 84]
a_0 = cadena de descomposición comenzando en 1 creciendo hacia a_0:
626331=1*2*2*2*2/3*2*2*2*2*2*2*2*2/3/3/3*2*2*2*2/3/3*2*2*2/3*2*2*2/3*2*2/3*2*2*2*2*2/3/3*2*2*2*2*2/3/3/3*2*2*2*2*2/3/3/3*2*2*2*2*2*2*2*2*2*2*2/3/3/3*2*2*2*2/3/3*2*2*2*2*2/3/3/3 (#84)
26623:[14215, 19][1999, 27][1687, 35][949, 41][89, 47][67, 50][19, 57][11, 63][5, 72][1, 77]
26623=1*2*2*2*2/3*2*2*2*2*2*2/3/3/3*2*2*2*2/3/3*2*2*2*2*2/3/3*2*2/3*2*2*2*2*2/3*2*2*2*2/3/3*2*2*2*2*2/3/3/3*2*2*2*2*2*2/3/3*2*2*2*2*2*2*2*2*2*2*2*2/3/3/3/3/3/3/3 (#77)
0 votos
¿Es posible usar corchetes?
0 votos
@Constructor No
0 votos
Nota: $$c = \frac{\log(N/\lfloor2^a/3^b\rfloor)}{\log(2)}$$ P/S: Al igual que @Ross Millikan, no estoy seguro si es óptimo también
1 votos
Primero escribe $100$ como producto de números primos: $100 = 5*5*2*2$. Luego es fácil encontrar los resultados más simples: $5 = 2*2*2*2/3$ y $2=2$. Dando: $100 = 2*2*2*2/3 * 2*2*2*2/3 * 2 * 2$, que es más denso que el ejemplo en la pregunta. No tengo idea si los números $2,3$ son mínimos con este enfoque.
1 votos
Ten en cuenta que la pregunta inversa también tiene sentido: escribe $100$ como una multiplicación de $3$ y una división entera de $2$'s: $100 = 3*3*3*3/2/2/2/2 * 3*3*3*3/2/2/2/2 * 3*3/2/2 * 3*3/2/2$. Hecho de nuevo con los factores primos en: $100 = 5*5*2*2$.
0 votos
@HandeBruijn Creo que tus descomposiciones son para una pregunta diferente a la que se pidió. Parece que la pregunta indicada solo te permite dividir por tres en un solo bloque, no separarlos de manera óptima como lo haces en tu ejemplo. Esto es especialmente relevante ya que he visto que eres quien ha puesto la recompensa. Según se indica en la pregunta, creo que el algoritmo de Ross Millikan que verifica todos los posibles $c$ es más que suficiente.
0 votos
¡Necesitamos $23$ pasos para crear el número $27\>$! Comenzando con $1$ las operaciones son $222232\>222222\>332323\>22323$, donde un $2$ significa $\cdot2$ y un $3$ significa $/3$.
1 votos
@ACheca. No. Es seguro suponer que la mayoría de los usuarios piensan diferente al respecto. Ver, por ejemplo, el comentario de Christian Blatter (que, por supuesto, es completamente correcto). Si uno quiere hacer lo mismo según tu esquema, entonces podríamos tener, por ejemplo: $27 = 2^{46}/3^{26}$. Resultando en $45+26=71$ operaciones en lugar de las $27$ de Christian Blatter. Dado que la pregunta no es del todo explícita respecto a este tema, me toca decidir que el premio es para el menor número de operaciones, independientemente de cualquier "bloqueo".
0 votos
La condición es a > c o a=b?
0 votos
Este es un programa de enteros, necesitarás una computadora y probablemente tomará tiempo exponencial ya que al menos es NP-duro. $$3^bN \le 2^a2^c<3^b(N+1)$$ $$3^bN \le 2^d<3^b(N+1)$$ $$\log(N 3^b)/\log(2) \le d < \log((N + 1) 3^b)/\log(2)$$
0 votos
Necesitarás verificar si hay un número entero d para cada N que ingreses y $\forall$ b $\in$ N.
0 votos
Si no le das importancia a la condición $a>c$ entonces he encontrado mi camino. Pero si esa condición es importante entonces no funcionará. Si $N=2^c$ entonces simplemente toma $a=2, b=1$ para que $[{2^a\over 3^b}]=1$.
2 votos
Creo que es sabio restringir la atención solo a números impares, porque todos los números pares se construyen trivialmente multiplicando el primero por una potencia de dos. Entonces solo tenemos que responder a la primera mitad de la pregunta y deshacernos del bastante aburrido $2^c$ y $c$. Además, creo que se puede asumir de manera segura que resolver una ecuación $\left \lfloor 2^a/3^b \right \rfloor *2^c = N$ realmente no ayuda: vea mi comentario sobre $27 = 2^{46}/3^{26}$, en comparación con el significativamente más denso $27 = 2^4/3*2^7/3/3*2/3*2/3*2*2/3*2/3.
1 votos
¿Es obvio que cualquier número se puede escribir de esta manera? Y luego, ¿que la descomposición más corta no es necesariamente única? Por ejemplo, el número 27 tiene las descomposiciones 22222322222222333222333 y 22223222222233232322323, ambas de longitud 23 que es la mínima, si no me equivoco.
1 votos
@MatthieuLatapy - bueno, mi algoritmo es una fuerza bruta restringida, y para cada número encontró descomposiciones múltiples, a veces multi-multi, e incluso para el mismo $\rho$ (número de divisiones de 3) y $\lambda$ (número de todas las operaciones) encontró múltiples soluciones, demasiadas para documentarlas aquí. $a=25$ con $\rho=12$ (12 divisiones por 3) y $\lambda=36$ ($36$ operaciones en total), encontró alrededor de $256$ variantes.
1 votos
@MatthieuLatapy ve mi comentario debajo de la respuesta de Gottfried Helms para un argumento de por qué cada número tiene de hecho una descomposición. en realidad hay infinitas.
0 votos
@MatthieuLatapy. Sí, $27$ tiene muchas descomposiciones con una longitud óptima de $23$, para ser precisos: $716$ de ellas.
1 votos
Es imposible para mí juzgar cuál de las respuestas - dadas después de la subida de la recompensa - es la mejor. Espero que todos los participantes activos hayan disfrutado comentando y respondiendo la pregunta, como lo hice yo. En lugar de lanzar una moneda al aire, decidí otorgar los 100+ a la persona con la reputación más corta.
0 votos
¡Jaja, gracias Han! No estoy seguro de que sea justo, ¡pero aprecio los 100 puntos :) De todos modos, ¡explorar este tema contigo fue muy interesante y puede continuar!
0 votos
Fue un buen desafío y aún sigo en ello. Hay algo en él que vale la pena ejercitarse: construir una ruta hacia la prueba, (en este momento para el método "estrictamente decreciente"), y reactivar mis habilidades de programación de años anteriores para soluciones recursivas. Quizás pueda hacer mi prueba y la solución recursiva disponibles pronto. El problema de asignar una recompensa a la respuesta a veces es NP-complejo, al igual que el problema matemático en sí, así que ... ;-)
0 votos
Publiqué una versión extendida de esta pregunta en MathOverflow, con la esperanza de obtener más información: mathoverflow.net/questions/383675/…
0 votos
Esto está relacionado con una pregunta anterior: ¿Están relacionados por una composición de estas dos funciones cada dos enteros positivos?