Miniproyecto - Envolver regalos

B

Hola!

Tengo la siguiente pregunta matematica:

Dado un objeto plano (no tridimensional), cual es la minima area de un papel rectangular que necesitamos para envolverlo completamente?

Una vez respondido esto, me gustaria tener un algoritmo para hacerlo. Creeis que podemos hacerlo aqui entre los 4 frikis de las matematicas que habra?

No podemos cortar el papel rectangular, solo plegarlo (y al plegarlo puede ser que pleguemos por encima de otro papel).

Vamos con un poco de definiciones para explicarme mejor.

Definicion 1:
Nuestro objeto es un n-gono (\mathcal{O}), definido por (n) vertices en el plano: ((v_1,\dots,v_n)) con (v_i = (v_i1,v_i2)). Lo tenemos centrado, de manera que

(\sum_{i=1}n (v_i1,v_i2) = (0,0))

No obstante, lo podemos girar, multiplicando estos vectores por una matriz de tipo
(\left(\begin{array}
&\cos\theta & \sin\theta \
-\sin\theta & \cos\theta\end{array}\right))

Definicion 2:
Nuestro papel empieza siendo un rectangulo: ( \mathcal{P}_0=[-a,a]\times[-b,b] ) y su area es, evidentemente, (4ab).

Definicion 3:
Las operaciones que permitimos son giros del objeto y pliegues del papel. Un pliegue del papel se define por una recta:
( r: (x,y) = (x_0, y_0) + \lambda(u_1,u_2) )
Tal que no cruce el objeto. Una vez tenemos esa recta, definimos (\mathcal{O}r) como el conjunto de puntos de (\mathcal{P}i) que estan o bien a un lado o a otro de la recta y tienen interseccion no nula con el objeto (\mathcal{O}) y (r(\hat{\mathcal{O}r})) el reflejo especular por (r) de los otros puntos. Entonces (\mathcal{P}{i+1} = \mathcal{O}r \cup r(\hat{\mathcal{O}r}))

Definicion 4:
Decimos que (x\in\mathcal{O}) queda envuelto por el paso (i) si la recta (r) correspondiente al paso (i) cumple que (x\in r(\hat{\mathcal{O}_r})).
Decimos que (\mathcal{O}) queda envuelto por el paso (i) si (i) es el menor numero natural tal que (\forall x\in\mathcal{O}), (\exists j \leq i) tal que (x) queda envuelto por el paso (j).

Problema:

Queremos minimizar (a,b), nuestras variables son (a,b), (\theta) y las rectas que escogemos en cada paso.

Resultados hasta ahora:
Es evidente que (4ab \geq 2A(\mathcal{O})) (tenemos que tener al menos tanto papel como el doble del area del objeto).

5
B

Que pasa?, estas buscando una excusa para ahorrarte los regalos de navidad? XDDDD

2
Zerokkk

No tengo suficiente conocimiento del tema como para participar bien, pero tengo una pregunta: al ser bidimensional, ¿por qué se toma el giro del objeto como una posibilidad?

Con esto quiero decir, que si un objeto es bidimensional, no puede tener "dos lados" a menos que el contexto en el que sea estudiado, sea tridimensional. Incluso un objeto de profundidad 1 sería tridimensional, ya que z=1 (y debería ser 0 para ser bidimensional). Entonces, estamos invalidando la premisa de que es bidimensional.

Diciendo esto, y bajo esta tonta observación, lo que más sentido me tiene, es que un objeto bidimensional sólo tiene una cara, y esa es la que tenemos que "envolver". Por tanto, la superficie necesaria de papel, sería exactamente igual que la superficie del objeto.

No sé, es lo que me tiene sentido ahora xD, pero me encantaría saber por qué me equivoco (que supongo que de alguna manera será así).

2 respuestas
KoRMuZ

Yo soy aún más noob que todos vosotros, pero quiero pensar, respecto a lo que ha dicho #3 que lo que quiere decir es que hay que envolver por debajo y por encima, pero no tener en cuenta la altura a la hora de hacer el doblez. Si estoy metiendo la pata, os jodéis xD

2 respuestas
Zerokkk

Yo incluso me atreveré a ir algo más allá y a decir que esta pregunta carece de sentido, ya que... ¿cómo vas a envolver algo, cuando no hay espacio para "el embalaje"? Por ejemplo, con lo que yo decía, el "regalo" bidimensional quedaría una capa por debajo del embalaje, lo que implicaría dos capas, y por tanto, profundidad.

Incluso si no tenemos en cuenta la altura como dice #4, vendría a ser lo mismo, "embalar" algo bidimensional implicaría sustituir el "regalo" por el embalaje... por lo que ya no estaríamos embalando.

Claro está, el único embalaje bidimensionalmente válido que se me ocurre, sería que en lugar de centrarse desde una perspectiva tridimensional, nos ciñamos a la bidimensional, recubriendo los bordes del regalo, con nuestro embalaje. Se acercaría mejor al concepto de embalar algo y ahora sí sería posible calcularlo.

2 respuestas
KoRMuZ

#5 yo creo que lo que quería decir, y lo que quería decir yo, es que envolvamos un regalo tridimensional, con altura "simulada" para que hubiera que hacer solo un doblez por el borde, y no hacer cálculos de cada cara del regalo.

Lo que yo he entendido después de algunas lecturas más, es que lo que pretendemos conseguir es poner un plano de papel de regalo encima y otro debajo, y calcular qué tamaño deberíamos elegir para poder cubrirlo entero.

También entiendo y creo, que si es correcto lo que he dicho arriba, que habría sido mejor decir "un objeto tridimensional de altura prácticamente cero" y que pudieramos despreciarla a la hora de hacer los dobleces.

Millonet1

Bonito problema, la verdad es que la geometría y yo no somos muy buenos amigos pero justamente estoy estudiando todos los temas de giros, reflexiones, formas normales... y le daré unas vueltas.
Muy guay como representas los pliegues.

jilker

Supongo que mi interpretación del problema es incorrecta pero veo imposible envolver algo al trabajar en un espacio bidimensional (si no me equivoco las ecuaciones de #1 están escritas para R2) ya que para envolver algo tenemos que movernos en el plano tridimensional, ademas los giros en el plano bidimensional para este problema no los termino de entender ¿Para que girar el regalo?
Creo que para poder abordar este problema deberíamos de enunciarlo algo como...
Dado un objeto tridimensional , cual es la minima area de un papel rectangular que necesitamos para envolverlo completamente? y sobre todo ¿Cual es el método mas optimo? Me gustaría destacar que hay diferentes formas de envolver un regalo realizando diferentes dobleces y distintas posiciones a la hora de colocar el regalo dan otras soluciones...
P.d Creo que todo lo que he escrito arriba esta mal no me matéis :psyduck:

1 respuesta
B

#3 #8 he definido lo que significa doblar y pertenecer al pliegue, interpretadlo como dice #4. Hay que girarlo porque algunos metodos que he ido pensando dependen de la orientacion del objeto. Es un problema matematico, si quereis hacerlo con 3 dimensiones guay pero sera mas complicado...

Ulmo

#5 Creo que el problema se resume en resolver esta pregunta:

"Cual es el rectángulo con menor área capaz de incluir dentro a nuestra figura bidimensional."

Pero se ha hecho un lío con los regalos y el plegar.

De hecho es bastante probable que el problema no tenga solución y sólo puedan encontrarse aproximaciones, un problema parecido al que usan en el estudio tridimensional de proteinas y en donde en vez de minimizar el área minimizan la energía de la figura resultante (que para este caso viene a ser equivalente).

1 respuesta
B

#10 no me he hecho ningun lio xD, tal como lo dices tu ese problema es conocido y resuelto,

https://en.wikipedia.org/wiki/Minimum_bounding_box_algorithms
https://en.wikipedia.org/wiki/Minimum_bounding_rectangle

Hay que definir los pliegues para que el problema tenga algo de interes. Si se te ocurre una definicion mejor de lo que es un pliegue, adelante, pero no digas que me he hecho un lio para luego soltar tal simplificacion xD.

2
B

#1

1
B

Aún no he leído en detalle #1 xD.

Pero me ha venido esto a la cabeza, cuando sepamos lo que hay que cortar, siempre podremos utilizar este paper para minimizar el trabajo.

Mark H. Overmars and Emo Welzl. The complexity of cutting paper. Proc. [1st] Symposium on Computational Geometry, 316–321, 1985.

p.d. la curiosidad es que es el único paper que conozco que NO hace referencia alguna a ningún trabajo anterior.

aitorman

#1 en la definición del pliegue dices que la recta no debe cortar al objeto, pero supongo que permites que la recta coincida (en un trozo) con una de las aristas no? Si fuerzas la recta de corte a estar a una distancia positiva del objeto supongo que al menos para ciertos poligonos no habría solución óptima.

1 respuesta
B

#14 si, deberia haber dicho que no puede cortar el interior del objeto, buena puntualizacion. Puede intersecar con la frontera de este. He trabajado un poco en el, con los casos mas simples de poligonos convexos y un algoritmo "greedy", y tengo una cota superior pero es muy naive y no se si merece la pena que lo escriba.

Otra cosa que no menciono en #1 es si el algoritmo tiene que acabar en tiempo finito o permitimos un numero infinito de pasos (y no se si importa).

1
B

Has tratado de resolverlo numéricamente? Quiero decir cómo un problema de optimización sin más, a ver si lo que sale tiene sentido.

2 respuestas
Millonet1

#16 Creo que no se puede porque la dificultad del problema reside en que el objeto a envolver es una figura plana arbitraria y que la superficie mínima necesaria para envolverlo puede variar dependiendo de la orientación (giros) del objeto.
Si que es un problema de optimización, pero requiere un trabajo de geometría antes.

1 respuesta
B

#16 lo he pensado pero tengo 2 problemas:

  • Una vez escogido a,b y (\theta) el "envolverlo" ya es en si un problema de optimizacion (escoger las rectas) que no es lineal, cuyo espacio de soluciones tiene una topologia extraña y donde además importa el orden de los pliegues.
  • Incluso si tuvieramos un algoritmo que dado a,b, y (\theta) envolviera de la manera "mas perfecta" (i.e. desaprovechando el minimo de papel) el objeto, el problema de optimizacion para a,b, y (\theta) no es convexo y puede que tenga varios minimos locales.
1 respuesta
B

#17

Poderse se ha de poder porque es "sub" (me encanta el eufemismo sub) fuerza bruta.

No he podido pararme a pensar en el problema, pero por lo que comentas la dificultad está en el "setting" de la función de coste a.k.a. establecer lo que quieres minimizar/maximizar.

#18

La segunda parte ya lo daba por descontado xD. Es más por ver que una solución numérica dados a, b, y theta (se puede utilizar latex aquí??) tiene sentido, esto es, un "sanity check" de que lo que queremos optimizar está bien planteado.

Quizás porque soy más experimental que teórico, siempre arranco con una simulación antes de ponerme a analizar en detalle para ver posibles pistas. Una vez que tengais el setting si no quereis hacerlo, yo os escribo la simulación en un momento.

p.s. El general Jamón me ha puesto palote, así que he decidido acompañarte xD

B

Después de ponerme a envolver un pincho USB con un papel y asociar las definiciones matemáticas a los movimientos físicos tengo algunas preguntas que no alcanzo a ver la respuesta.

Cuál es la ventaja de poder rotar el objeto? En el momento que lo roto, los pliegues que he hecho en el papel quedan "descuadrados" (obviamente xD). Entiendo la definición matemática en #1, pero no llego a ver que sea realista.

Creo que hay que poner más restricciones a los pliegues? si no se permiten cortes en el papel los pliegues no pueden ser arbitrarios, ya que están restringidos a cómo esté doblado ya el papel.

Por supuesto, estas preguntas no restrigen en absoluto al problema planetado, es simplemente por verificar que es realista y así asociar el algortimo a envolver mi pincho USB xD.

1 respuesta
B

#20 realmente rotar el objeto (al menos en mi idea) solo lo hago antes de empezar a doblar el papel.

Mas que nada porque por ejemplo ponle que quieres envolver un cuadrado (centrado en 0). La unica manera de usar exactamente 2 veces el area del cuadrado es rotarlo hasta que cada vertice este en el eje, de cualquier otro modo (tal como he definido el problema) pierdes papel en uno de los pliegues como minimo y tienes que usar mas area.

Respecto a restricciones a los pliegues, te refieres a que no se puede doblar tantas veces el papel por encima de si mismo sin que quede un pegote? En ese caso tienes razon pero lo ignoro jaja.

Respecto a lo numerico pues tengo un algoritmo greedy pensado para poligonos convexos, tan simple como "dobla por el lado del poligono que haga que quede el maximo de area cubierto" en cada paso, pero no se como de malo es...

PD: Tenemos Mathjax! Quise hacer un hilo pero lo deje a medias... simplemente tienes que escribir el codigo entre "\ (" y "\ )" (sin espacios)
PD2: Buen avatar , general xD

1 respuesta
B

#21

Ah! entiendo ahora la ventaja de rotar la figura (o el papel) cómo condición inicial, ya que partimos de un rectángulo. Luego más adelante me atrevería a decir que no juega ningún rol esta operación.

Sí jaja, me refiero a los pegotes. Ok, asumimos que nos dan igual :P.

Probando probando: ( \alpha \beta )

Funciona!! qué comandos están disponibles? quiero decir, es muy similar al entorno matemático que hay en latex?

1 respuesta
B

#22 sin comillas tampoco jaja perdona (\alpha \beta)
Tienes que cerrar con ) !! Te lo he dicho mal antes!

B

#1 ayer me acorde de ti cuando leí esto. jeje no tiene que ver con los regalos, pero pensaba: aqui estaria Duronman para no cortar la pizza a partes iguales http://www.abc.es/ciencia/abci-matematicos-forma-justa-repartir-pizza-201601120930_noticia.html

2

Usuarios habituales