← 모든 Post
INTERACTIVE MODEL · 2 × 2 × 2

하나의 회전,
열두 개의 이동.

큐브의 면을 돌리면 스티커 12개가 자리를 옮깁니다. 왼쪽의 물리적 회전과 오른쪽의 그래프 이동은 하나의 순열을 보여줍니다.

01 / CUBE

회전하는 큐브

드래그하여 각도 변경
02 / STICKER GRAPH

이동하는 노드

24 노드 · 48 간선
03 / CONTROLS

직접 돌려보기

면을 선택하면 두 장면이 함께 움직입니다.

시작 위치 · 면의 4개와 이웃한 8개가 하나의 회전으로 이동합니다.

모델을 읽는 법

먼저 U 버튼으로 윗면을 한 번 돌려 보세요. 같은 순간 왼쪽 큐브와 오른쪽 그래프에서 스티커 12개가 움직입니다. 그래프 아래의 ‘스티커 ID 보기’를 켜면 색이 같은 스티커도 각각 구별할 수 있습니다. 방금 누른 한 번을 포함해 U를 네 번 누르면 모두 처음 자리로 돌아옵니다. 반대 방향 버튼 U′와 초기화도 시험해 보세요.

두 화면이 보여주는 것

한 면의 90° 회전은 그 면의 스티커 4개와 이웃한 면의 스티커 8개, 총 12개의 자리를 바꿉니다. 오른쪽 그래프는 여섯 개의 원과 교점 24개, 간선 48개로 이 이동 관계를 나타냅니다.

그래프의 점은 색만 바뀌는 표시가 아닙니다. 각각의 스티커 객체가 목적지까지 실제로 움직이며, 큐브와 그래프는 같은 논리 상태와 애니메이션 시각을 사용합니다. 따라서 두 화면의 움직임은 하나의 순열을 서로 다른 공간에서 보여준 결과입니다.

모델의 범위

이 그래프의 노드는 큐브의 가능한 전체 상태가 아니라 개별 스티커입니다. 현재 모델에는 큐브 풀이 또는 최단 경로 탐색 기능이 없습니다. 원 위 교점의 간격이 균등하지 않아, 그래프에서 두 노드 이동이 언제나 정확히 90°의 기하학적 회전을 뜻하지도 않습니다.

제작 정보

2×2×2 큐브의 면 회전 규칙을 바탕으로 이순형이 직접 구현한 Vite·TypeScript·Three.js 모델입니다. 스티커 순열과 그래프 대응은 프로젝트의 자동 검증으로 확인했습니다.

큐브 풀이가 왜 최단경로 문제일까?

위의 2×2×2 모델은 스티커가 움직이는 모습을 보여줍니다. 여기서 한 걸음 더 나아가 큐브 전체의 배치를 하나의 점으로 생각하면, 큐브 풀기를 그래프 이론의 언어로 설명할 수 있습니다.

1. 스티커 그래프와 상태 그래프는 점의 뜻이 다르다

화면 오른쪽 그래프의 점 24개는 각각 스티커 하나의 자리입니다. 면을 돌리면 같은 스티커가 어느 자리로 이동했는지를 따라갑니다.

이제부터 말할 상태 그래프에서는 점 하나가 큐브 전체의 배치입니다. 완성된 큐브, 윗면을 한 번 돌린 큐브, 거기서 오른쪽 면을 돌린 큐브가 각각 다른 점이 됩니다. 따라서 아래의 상태 그래프는 화면에 그려진 24점 그래프와 별개의 개념입니다.

2. 한 번의 회전이 두 상태를 잇는 간선이 된다

상태 G에서 윗면을 90° 돌려 S₁이 되고, 이어 오른쪽 면을 90° 돌려 S₂가 되었다고 합시다. 각 회전은 두 상태 사이를 이동시키는 간선 하나입니다. 반대 방향 회전 R′, U′를 차례로 적용하면 S₂에서 G로 돌아갈 수 있습니다.

여기서는 U·U′·R·R′처럼 한 면을 90° 돌리는 동작을 각각 1회로 셉니다. 180° 회전은 2회입니다. 어떤 회전을 1회로 셀지 정해야 “최단”의 뜻도 정해집니다.

G(완성) ─U→ S₁ ─R→ S₂
S₂ ─R′→ S₁ ─U′→ G

3. 큐브를 푼다는 것은 완성 상태까지의 경로를 찾는 일이다

뒤섞인 상태 S에서 완성 상태 G로 가는 회전 순서는 여러 개일 수 있습니다. 어떤 순서는 4회, 다른 순서는 3회라면 3회 경로가 더 짧습니다. 가능한 모든 회전 순서 가운데 횟수가 가장 적은 경로의 길이를 최단거리라고 합니다.

이렇게 정의한 수학적 문제와 사람이 큐브를 푸는 방식은 구별해야 합니다. 사람은 보통 익힌 단계와 알고리즘을 적용하며, 매번 모든 상태를 탐색해 정확한 최단경로를 계산하는 것은 아닙니다.

d(S, G) = S에서 G까지 필요한 90° 회전 횟수의 최솟값

4. 3×3×3의 상태 그래프는 얼마나 클까?

여기서 보이는 모델은 2×2×2이지만, 상태 공간의 크기를 보여주는 대표적인 수치는 3×3×3 큐브에서 나옵니다. 합법적으로 도달 가능한 상태는 43,252,003,274,489,856,000개, 약 4.33×10¹⁹개입니다.

꼭짓점 조각 8개의 위치는 8!가지이고, 독립적인 방향은 7개라 3⁷가지입니다. 모서리 조각 12개의 위치는 12!가지이고, 방향은 11개가 독립적이라 2¹¹가지입니다. 두 위치 배열의 짝홀성이 같아야 하므로 다시 2로 나누면 아래 식이 됩니다. 이 모든 상태를 점으로 만들고 연결선을 저장한 뒤 단순히 너비 우선 탐색하는 방법은 현실적이지 않습니다.

8! × 3⁷ × 12! × 2¹⁰ = 43,252,003,274,489,856,000

5. 회전을 묶어 보면 군론과 케일리 그래프가 나타난다

회전을 연달아 적용한 결과도 하나의 변환으로 볼 수 있습니다. R 다음 U를 실행하는 순서와 U 다음 R을 실행하는 순서는 일반적으로 결과가 다릅니다. R′은 R의 역회전이므로 R을 한 뒤 R′을 하면 원래 상태로 돌아옵니다. 이런 합성과 역원으로 큐브의 회전들을 군론에서 다룹니다.

가능한 전체 상태를 점으로, 미리 정한 기본 회전을 간선으로 놓은 상태 그래프는 큐브 군의 케일리 그래프로 볼 수 있습니다. 어떤 기본 회전을 허용하는지에 따라 간선과 최단거리도 달라집니다. 위의 스티커 그래프 자체가 케일리 그래프인 것은 아닙니다.

R · R′ = 항등변환     R U R′ U′ = 회전들의 합성

위 모델에서 U를 네 번 누르거나 U 다음 U′를 눌러 보세요. 처음 상태로 돌아오는 현상은 회전의 역원과 반복을 직접 확인하는 작은 실험입니다. 모델은 스티커의 이동을 보여주며, 상태 그래프의 전체 탐색이나 최단경로 계산은 수행하지 않습니다.

참고 자료