¿Cuáles son los algoritmos más eficientes que resuelven de manera óptima un cubo de Rubik?

No hace mucho tiempo que resumí el algoritmo para resolver un cubo de Rubik, después de haber revisado muchos recursos en línea. Es realmente desafiante, pero una vez que lo obtienes, ¡sientes que realmente has aprendido algo increíble!

Compartiré el algoritmo que uso para resolverlo, y lleva menos de 5 minutos con una buena cantidad de práctica.

Pseudo – código / mapa de memoria para resolver un cubo de Rubik, desde cualquier configuración dada

Nota al margen: se han utilizado las anotaciones de cubo estándar de Rubik, aprenda primero. ¡Son bastante simples de aprender!

Paso 1 – OBTENER LA CRUZ BLANCA
(i) Rodee la cara amarilla centrada con piezas blancas
(ii) Siga los pasos como en este video

Paso 2: OBTENER LAS ESQUINAS BLANCAS
Ve este video una vez para entender lo que sigue
(i) SI el blanco está en el lado izquierdo:
Aplica el siguiente algoritmo:
UR U ‘R’
(ii) SI el blanco está en el lado derecho:
Aplica el siguiente algoritmo:
R U R ‘
(iii) SI el blanco está en la parte superior:
Aplica el siguiente algoritmo:
R U2 R ‘U’ RU R ‘

Paso 3 – SOLUCIONANDO LA SEGUNDA CAPA
Ve este video una vez
(i) Siempre que gire y verifique que necesita hacer una R ‘, aplique el siguiente algoritmo: R’ U ‘R’ U ‘R’ URUR
(ii) Siempre que gire y verifique que necesita hacer una R, aplique el siguiente algoritmo: RURUR U ‘R’ U ‘R’

Paso 4: OBTENER LA CRUZ AMARILLA
Ve este video una vez
(i) si obtiene una línea de 3 amarillas, aplique
FRU R ‘U’ F ‘
(ii) si no existe tal línea, aplique
f RU R ‘U’ f ‘
(iii) más se aplica (i), y luego (ii)

Paso 5: OBTENER LAS ESQUINAS AMARILLAS
Ve este video una vez
(i) si tiene una configuración de pescado {
si hay una esquina derecha amarilla {
aplicar R ‘U2 RU R’ UR
}
Si hay un frente amarillo en la esquina {
aplicar R ‘U’ R U ‘R’ U2 R
}
(ii) si tiene una configuración de tortuga {
Haz que te mire, si no hay amarillos frontales, aplica R ‘U2 RU R’ UR para obtener un pez
Si tiene amarillos frontales, gire la cabeza de la tortuga hacia la derecha, aplique
R ‘U2 RU R’ UR para obtener un pez y luego usar (i)
}
(iii) si tiene una configuración en la que no se hacen esquinas, coloque dos amarillos en la parte posterior, si los amarillos no están en el frente nuevamente, colóquelos a la izquierda y aplique R ‘U2 RU R’ UR
(iv) si tiene una configuración en la que no se hacen esquinas, coloque dos amarillos en la parte posterior, si los amarillos en el frente nuevamente, sostenga uno directamente hacia usted y aplique R ‘U2 RU R’ UR
(v) Si tiene una configuración de 2 peces, coloque una cabeza arriba a la derecha y una cabeza en la parte inferior izquierda, asegúrese de tener un amarillo en la parte posterior y luego aplique R ‘U2 RU R’ UR para obtener un pez

Paso 6 – Terminando 🙂
(i) Busque un par de faros, colóquelos en la parte posterior y aplique
R ‘F R’ B2 R F ‘R’ B2 R2
(ii) Si no hay faros, sostenga el cubo en cualquier posición aleatoria y aplique el algoritmo anterior, ahora encontrará los faros. Hacer (i) ahora.
(iii) Ahora puede tener 2 configuraciones:
a. 3 aristas no hechas
yo. Coloque la fila completa en la parte posterior y aplique
F2 (U o U ‘) R’ L F2 R L ‘(U o U’) F2
si. 4 bordes no hechos
yo. Mantenga cualquier posición y aplique el algoritmo de cualquier manera

¡Aclamaciones! Lo resolviste ahora 🙂

Referencia: Cómo resolver un cubo de Rubik – thecubesolver100, Youtube

Bueno eso depende. Asumiré que te refieres al método de resolución que es el más corto de aprender, es decir, toma menos tiempo para aprender a resolver el cubo.

Ese es un método particular para principiantes conocido como LBL. Si solo quieres poder resolver un cubo de Rubik rápidamente, este es un método bastante bueno para aprender, aunque si quieres comenzar a aprender a resolverlo más rápido, hay otros métodos que puedes aprender.

Una descripción rápida de LBL:

Paso 1: Haz la cruz. No hay mucho que explicar sobre este paso, aparte de decir que debe asegurarse de que cada pieza esté alineada con el centro correcto.
Debería tener algo parecido a esto (aunque los colores pueden ser diferentes):
Paso 2: inserta las esquinas. Ahora tiene 4 ranuras entre los bordes cruzados y los centros. Lo que vas a hacer a continuación, será insertar las 4 esquinas que corresponden a esas ranuras. Debería tener algo parecido a esto (asegúrese de que esté alineado con los centros correctos, y asegúrese de que las pegatinas en los lados de la capa de solución sean de un color por lado):
Paso 3: inserta los bordes. Aquí separamos a aquellos que han jugado con un cubo de Rubik por un tiempo de aquellos que saben cómo resolver uno. Por primera vez, nos encontramos con una situación en la que, para arreglar una parte del cubo, primero tenemos que destruir lo que ya hemos creado. Lo que vamos a hacer, es que vamos a eliminar la esquina que acabamos de insertar de tal manera que cuando la quitemos, se alinee con el borde al que se conecta, para que podamos insertar ambas . Una vez que hagas eso, las 4 ranuras que tu cruz dejó abiertas deben llenarse de esta manera (solo imagina que la cruz también está allí):
¡Felicitaciones, has resuelto las 2 primeras capas! Ahora llegamos a la parte más complicada para la mayoría de los principiantes: la última capa. Aquí es donde las cosas se complican. Tienes que resolver la última capa, pero no puedes dividir nada de lo que ya has creado al hacerlo. Hay muchas formas de resolver la última capa, aunque hay dos que son particularmente comunes. Ambos requieren que memorice muchos algoritmos (el más común requiere 78, el menos común requiere 71). Eso es difícil y lleva mucho tiempo, por lo que vamos a comenzar con algo más fácil. Learn Beginner Last Layer (las pegatinas grises no importan por ahora).

Paso 4: crea una cruz en la parte superior. Esto es al mismo tiempo más difícil que hacer la cruz en la parte inferior, porque no tienes tanta libertad en este momento. Sin embargo, es más fácil, porque solo hay 8 formas posibles de configurar sus bordes en este momento. En realidad, es más fácil que eso, ya que 4 de ellos son en realidad el mismo caso, otros 2 son en realidad el mismo caso, y uno de los casos es que tuvo suerte y ya tiene una cruz en la parte superior. Aprenderás un algoritmo (algunos métodos te enseñan dos, lo que te ahorra algo de tiempo en muchos casos) que eventualmente te dejará con algo como esto:
Paso 5: Oriente las esquinas correctamente. Aprenderá un algoritmo que asegurará que las esquinas estén orientadas correctamente, aunque es posible que deba usarlo varias veces. Esto no es realmente complicado por la cruz en la parte superior, ya que el algoritmo que usas para orientar las esquinas correctamente no debería afectar la orientación de los bordes, pero asegúrate después de que tu cruz todavía esté allí. Después de terminar este paso, debería tener algo parecido a esto:
Paso 6: resuelve las esquinas. Aprenderá un algoritmo que resuelve las esquinas sin romper la orientación de la cara superior (todas las pegatinas en la cara superior aún deben estar hacia arriba cuando termine). Puede que tenga que usarlo dos veces a veces, pero después de eso, debería quedarse con algo como esto:

Paso 7: ¡Ya casi estás allí! Si tienes suerte (1/12 de las veces), ¡habrás terminado! El resto de las veces, necesitará reorganizar los bordes. Esto es principalmente complicado porque necesita preservar todo lo demás, pero no es tan complicado, y los algoritmos son bastante fáciles de aprender y usar.

Si hiciste todo eso correctamente, deberías quedarte con esto:
¡Felicidades, lo hiciste!

Si quieres aprender a realizar todos estos pasos, mira el siguiente tutorial:

Si te refieres a cuál es el algoritmo más eficiente para que un humano lo use en tiempo real, la mayoría de los mejores speedcubers usan el método Fridrich: http://www.ws.binghamton.edu/fri

Hay un súper algoritmo llamado como el algoritmo de Dios que puede resolver cualquier desorden en cualquier permutación o combinación del cubo de Rubik en un máximo de 20 movimientos. Básicamente produce un procedimiento de solución que tiene la menor cantidad de pasos posibles. Pero sí, esto no es posible para una mente humana para comprender esas permutaciones complejas. Los solucionadores artificiales súper rápidos usan este tipo de algoritmos avanzados para programar.

Como sabemos, necesitamos saber el cambio en la configuración causado debido a cada movimiento mientras se está resolviendo el cubo, el método Back Tracking se usa generalmente para rastrear el cambio en la posición de los cubitos pequeños.

Aquí está el artículo de Richard Korf que describe su proyecto para encontrar soluciones óptimas para instancias aleatorias de un cubo de Rubik:

http://www.cs.princeton.edu/cour

Encontró que la mediana de la longitud óptima de la solución era 18 movimientos, y el caso más bajo involucraba solo 16 movimientos.

El documento describe cómo utiliza la profundización iterativa A (IDA), buscando soluciones cada vez más largas en una serie de iteraciones, y utilizando una heurística de límite inferior para podar ramas una vez que un límite inferior en su longitud excede el límite de iteraciones actual (página 2)

Resolver el cubo se divide en subproblemas, y el número de movimientos necesarios para resolverlos proporciona un límite inferior para el número de movimientos necesarios para resolver todo el cubo. Los subproblemas detallados son (1) solo esquinas, ignorando bordes, (2) 6 bordes solo, ignorando esquinas y bordes restantes y (3) los otros 6 bordes solamente, ignorando esquinas y 6 bordes iniciales.

BFS solía resolver el cubo de Rubik.

BFS encuentra los pasos mínimos para resolver los cubos rubik.

Por ejemplo, en el cubo Rubik 2 * 2 * 2 tenemos 8! * 2 ^ 8 = 264,539,520 estadísticas posibles.
1. Creamos el gráfico de configuración de cada configuración posible de (cubos) que son vértices. BFS encuentra la ruta más pequeña a la que se puede acceder desde un estado del cubo de unión al otro cubo del mismo tipo y también encuentra la ruta más pequeña, así que una vez que encontramos la ruta más pequeña a la que se puede acceder desde el cubo de unión del mismo tipo (color ) podemos ponerlos a resolver estado. Espero que esto ayude.

Pruebe el método freidrich con 2 look PLL y OLL y F2L. Hay 13 permanentes y 40 algoritmos que aprenden los speedcubers. Vaya a http://www.solvethecube.com y aprenda los conceptos básicos en la sección avanzada, pero comience con el método de principiantes. Además de los algoritmos de trucos con los dedos, el cubo derecho y la mejor lubricación también son importantes. La mayoría de los speedcubers usan spray de silicona para lubricación y cubos de bricolaje (hágalo usted mismo cubos).

Pero creo que con la práctica puedes hacerlo en menos de 1 minuto solo con el método de principiantes. Pero si desea que su tiempo promedio sea de alrededor de 10-15 segundos, debe seguir los consejos anteriores.

PD: la mejor de las suertes 🙂

Esto está relacionado con ¿Cuál es el número mínimo de turnos necesarios para resolver un Cubo de Rubik desde cualquier estado inicial? .

Los algoritmos informáticos utilizados para demostrar el número mínimo de movimientos son básicamente búsquedas, aunque búsquedas inteligentes (lo que significa que podan el espacio de búsqueda, etc.). Ahora se sabe que el cubo de Rubik requiere como máximo 20 movimientos de cualquier configuración para ser resueltos (ver http://www.cube20.org/ ).

Esto es muy diferente de las formas en que los humanos resuelven el cubo de Rubik. Los solucionadores humanos dividen el cubo en subproblemas a lo largo de las líneas de “capa por capa” o “esquinas primero, luego bordes”. No van por el número mínimo de movimientos, sino que solo pueden ver cómo progresar. La solución “óptima” para una posición determinada puede no parecer visualmente como si estuviera progresando.

El número mínimo de movimientos necesarios para descifrar un cubo de rubik en cualquier orientación en el peor de los casos se llama Número de Dios. En 2010, un grupo de investigadores demostró que este número es igual a 20 (utilizando métodos computacionales). Eso significa que, sin importar en qué estado se encuentre el cubo de Rubik, siempre se puede resolver en no más de 20 pasos. (Han creado un sitio web que detalla su investigación: el número de Dios es 20)

Por lo tanto, el mejor algoritmo para resolver el rompecabezas siempre debe dar soluciones de no más de 20 movimientos. Richard E. Korf escribió un artículo describiendo un algoritmo óptimo. (Esto fue antes de que se descubriera el número del dios). Por supuesto, solo las computadoras pueden implementar estos algoritmos, es claramente imposible para un ser humano normal ya que requiere demasiada memoria. (Nunca se sabe lo que puede suceder en el futuro, tal vez encontremos formas de expandir la memoria humana y el poder de cómputo exponencialmente, y tal vez hacer esto no sea una tarea tan difícil como lo es ahora)

Richard Korf publicó en 1997 un algoritmo para encontrar soluciones óptimas para el Cubo de Rubik. Si bien se sabía desde 1995 que 20 era un límite inferior en el número de movimientos para la solución en el peor de los casos, se demostró en 2010 a través de un extenso cálculos de computadora que ninguna configuración requiere más de 20 movimientos. Así 20 es un límite superior agudo en la longitud de soluciones óptimas. Este número se conoce como el número de Dios .

Y el conjunto de movimientos necesarios para devolver el cubo a su estado no codificado en el número mínimo de movimientos, es decir, 20, se conoce como el algoritmo de Dios.

Hay dos ramas de las matemáticas-computer_science que son aplicables al cubo Rubics. Son teoría de grupo y teoría de autómatas. Desde el último punto de vista, ver un cubo de Rubics como una máquina de estados finitos (grandes pero), que se puede expresar como Graph. Solo hay un estado terminado y muchos estados sin terminar. Suponiendo que uno tuviera suficiente memoria para representar todo el diagrama de estado o Gráfico, la respuesta es para nosotros un algoritmo de ruta mínima de rama y límite que se sabe que da la respuesta exactamente de una vez por todas.

Cada solucionador del Cubo usa un algoritmo, que es una secuencia de pasos para resolver el Cubo. Un algoritmo podría usar una secuencia de movimientos para resolver la cara superior, luego otra secuencia de movimientos para colocar los bordes medios, y así sucesivamente. Hay muchos algoritmos diferentes, que varían en complejidad y cantidad de movimientos requeridos, pero aquellos que pueden ser memorizados por un mortal generalmente requieren más de cuarenta movimientos.

Cada posición del Cubo de Rubik se puede resolver en veinte movimientos o menos. Este 20 se llama el número de Dios.

Podemos resolver un cubo de Rubik, usando BFS.
Podemos denotar cada uno de los estados del cubo como un nodo en el gráfico.
Ahora realice un BFS desde el nodo inicial (que es el estado actual sin resolver del cubo de Rubik) y busque el nodo correspondiente al estado resuelto del cubo.
Como el número de nodos sería exponencial, en términos del tamaño del cubo, no generamos el gráfico completo. Preferimos ir con la representación implícita del gráfico, donde los estados se generan in situ, a través de una llamada al método. Supongamos que estamos en una posición particular en términos de la configuración actual del cubo, podemos generar las siguientes configuraciones posibles, ad-hoc, a través de una llamada al método, que toma como parámetro, el estado actual.
El BFS luego buscaría el resultado, yendo desde el nodo inicial al nodo de destino.

Sí, hay muchos algoritmos existentes o más bien métodos:
Método CFOP
Método Roux
Método de Petrus
Método de Pochmann (cubos con los ojos vendados)
etcétera etcétera
si quieres aprender cómo resolverlo, visita este enlace
badmephisto
Los tutoriales de Badmephisto son los mejores tutoriales para aprender a resolver un cubo de rubik (rápido).
Incluso aprendí de sus tutoriales.

Para resolver el cubo esencialmente, necesita seguir otras cosas además del algoritmo

  1. Control de borde
  2. Intituve F2l
  3. Algas F2L para casos extraños
  4. ZBLL (MEMORIZARLO NO SERÁ FÁCIL)
  5. NEUTRALIDAD DEL COLOR

CONTROL DEL BORDE VISTA TUTORIAL AMBOS

[NoahCubes] Edge Control Parte 1: Cuándo usar Sledgehammer

PDF ZBLL https://www.google.co.in/url?q=h

Esta aplicación le dará una lista de todos los algs, oll y pll de F2l

Más de 5 algs para 1 caso

Rubix Cube Algos – Aplicaciones de Android en Google Play

No existe un ALGORITMO más rápido de ningún tipo.

Hay muchos métodos con los que puede resolver el cubo, por ejemplo, el método Fridrich , también conocido como CFOP, es uno de los métodos más rápidos.
Principalmente porque muchas personas lo usan como sus métodos principales y lo hacen muy rápido con el tiempo y la práctica.

Hay muchos métodos, a saber, ROUX, ZZ, PETREUS, etc.

Eficiente puede significar cosas diferentes. ¿Resolviendo muy rápidamente (20 segundos o menos)? Tendrá que memorizar varias docenas de algoritmos. ¿Resolviendo bastante rápido (60–90 segundos)? Una docena de algoritmos funcionarán. Para mí, este último es más eficiente porque crea menos desorden cerebral. Los cubers de velocidad verdadera sin duda estarán en desacuerdo.

Si estás hablando de la eficiencia del movimiento y quieres el método, entonces es el método ZZ.

Sí, ZBLL y ZZ-CT (?) Son subconjuntos muy pesados, pero es suficiente aprender casos completos de PLL y OLL resueltos por bordes.

Para algs menores, mi método Roux es mi recomendado. Se trata principalmente de construcción de bloques, y si eres bueno en eso, esto es para ti.

Este sitio web que utilicé fue muy útil y se explica por sí mismo para un método para principiantes
http://ruwix.com/the-rubiks-cube

Este es el método CFOP
http://ruwix.com/the-rubiks-cube

(Ambos tienen geniales repeticiones Gif de cómo girar el cubo

El algoritmo de Kociemba.

Este algoritmo informático casi siempre obtiene una solución con 20 o menos movimientos.

La fase 1 del algoritmo encuentra una manera de reducir el cubo al subconjunto .

La fase 2 lo resuelve solo con movimientos R2, F2, L2, B2, U y D.

Puedes encontrar más información aquí:

http://kociemba.org/cube.htm

More Interesting

Normalmente me canso después de resolver 2 - 3 problemas algorítmicos en Leet Code. ¿Qué debo hacer para resolver más problemas diariamente?

¿Alguna vez has usado los algoritmos que has aprendido en la universidad?

¿Por qué usarías una cola en lugar de una lista vinculada? ¿No es una cola una versión peor de una lista vinculada?

¿Cómo funciona la recursividad en el árbol de búsqueda binaria en orden? ¿Cómo se pueden explicar las llamadas recursivas, sin resumirlas como llamadas de pila?

¿Cuál es el número esperado de pasos necesarios para que una entidad sin memoria atraviese un gráfico completo de 4 nodos?

¿Cómo funciona LSH, 'hashing local sensible', para calcular el valor de hash?

¿Cómo obtenemos ideas para resolver preguntas de programación dinámica?

Cómo tomar una matriz 1d y convertir la matriz en una matriz 2d en una función c ++ para que la matriz ahora sea 2d en main ()

Me acabo de unir a TopCoder porque quiero aprender las estructuras de datos y cómo codificarlas en C, pero no tengo idea de dónde comenzar en TopCoder ya que puedo ver 3 categorías en el sitio, pero no pude encontrar la forma correcta. ¿Qué debo hacer para comenzar?

¿Qué algoritmo puedo usar para hacer que una imagen se vea más caricaturesca?

¿Cómo funcionan los algoritmos y la estructura de datos cuando procesamos cualquier solicitud en un sitio web?

¿De qué se trata el algoritmo Google Hawk?

¿Cómo se crean las redes publicitarias?

¿Por qué el tipo Bubble se llama Bobble?

¿Por qué obtener más puntos de datos soluciona el problema de la alta variación en un algoritmo de aprendizaje automático?