Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Rubik's Cube Solver. An optimized implementation of Kociemba's two-phase algorithm.

Notifications You must be signed in to change notification settings

DeepBlueCoder/min2phase

Open more actions menu
 
 

Repository files navigation

min2phase

  • Rubik's Cube solver or scrambler. Build Status

two-phase algorithm

  • See Kociemba's page

Improvements comparing to conventional two-phase algorithm

Conventional two-phase algorithm only find (sub-)optimal solutions to <U,R2,F2,D,L2,B2>. However, If we are able to find more phase1 solutions within a limited depth, the probability of finding a short solution will be increased.

  • Try different axes: The target of phase1 can be either <U,R2,F2,D,L2,B2>, <U2,R,F2,D2,L,B2>, or <U2,R2,F,D2,L2,B>.
  • Try the inverse of the state: We will try to solve the inverse state simultaneously to find more phase1 solutions.
  • Try pre-scramble: We can also use pre-scramble technique (which is widely used in fewest-move challenge) to find more phase1 solutions.

Benchmark

  • Memory: ~1M with twist-flip-pruning (TFP) table, ~0.7M without TFP table, ~40M with Full table. See Search.java line 28.

  • Average solving time (CPU: Intel Core i7-2670QM. Flag: F=Full P1 table, T=TFP table, A=three axes, I=inverse, P=pre-scramble. Kociemba: Kociemba's twophase.jar):

    Flag Unlimited 21 moves 20 moves
    Kociemba 45 ms 70 ms >1000 ms
    TAIP 2.2 ms 2.6 ms 16 ms
    FAIP 1.8 ms 1.8 ms 2.5 ms
  • Initialization Time: 150 ms without TFP table, 220 ms with TFP table, 12 s with Full table.

File Description

  • Tools.java Many useful functions, can be excluded.
  • Util.java Definitions and some math tools.
  • CubieCube.java CubieCube, see kociemba's page.
  • CoordCube.java Only for generating tables.
  • Search.java Main.
  • MainProgram.java GUI version.
  • pruningValue.txt For checking whether the pruning table is generated correctly.

License GPLv3

Copyright (C) 2015  Shuang Chen

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

About

Rubik's Cube Solver. An optimized implementation of Kociemba's two-phase algorithm.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 99.4%
  • Makefile 0.6%
Morty Proxy This is a proxified and sanitized view of the page, visit original site.