У цьому легко може виникнути помилка, тому, будь ласка, повідомте мене, якщо ви знайдете його.
Здається, що відповідь - ні, або принаймні, що ця проблема міститься в НП. Міркування цього дуже просте. Ідея полягає у створенні іншого питання: "Чи можете ви переходити між конфігурацією A та конфігурацією B кроками S або менше?"
Зрозуміло, що це нове питання є в NP, оскільки існує алгоритм для вирішення куба з будь-якої розв’язуваної конфігурації, і тому, переходячи через вирішений стан, потрібно лише O ( n 2 ) переходити між будь-якими двома конфігураціями. Оскільки існує лише поліноміальна кількість рухів, набір рухів, що проходять між двома конфігураціями, може бути використаний як свідок цього нового питання.O(n2)O(n2)
Тепер, по-перше, якщо ми виберемо конфігурацію B для розв'язаного стану, у нас виникає проблема, яка задає питання, чи можна вирішити куб кроками або менше, який міститься в NP.S
Тепер давайте виберемо іншу конфігурацію для B, яку я називаю яка потребує n h a r d ≈ n 2 кроки для вирішення. Тепер, якщо ми запитуємо, чи можна пройти між конфігурацією A і B h a r d на S ′ кроків або менше, у нас знову виникає проблема NP з послідовністю рухів як свідок. Однак, оскільки ми знаємо, B h a r d приймає n h a r dBhardnhard≈n2BhardS′Bhardnhardкроки , щоб вирішити, ми знаємо , що , якщо це можливо , щоб перейти між А і в ˙s ' кроків, то він вимагає , щонайменше п ч а г д - S ' кроки , щоб вирішити п × п × п куб з конфігурація А.BhardS′nhard−S′n×n×n
Таким чином, ми маємо свідків як для нижньої межі кроків, так і для нижньої межі S кроків для вирішення з конфігурації A. Якщо тепер ми виберемо S 0 як мінімальну кількість ходів, необхідних для вирішення запуску куба з конфігурацією A, тоді, якщо ми виберемо нижню і верхню межі рівними (тобто S ′ = n h a r d - S 0 і S = S 0nhard−S′SS0S′=nhard−S0S=S0), то ми маємо свідчення того, що це рішення є оптимальним (складається з свідків двох проблем НП, пов'язаних із межами).
Нарешті, нам потрібен спосіб генерації . Напевно, нам потрібна найскладніша можлива конфігурація, але оскільки я не знаю, як це знайти, я пропоную просто обертати кожну другу площину один раз навколо осі x, а потім кожну четверту площину (підтримуючи центральну площину нерухомою) один раз вісь z. Я вважаю, що це призводить до стану, що вимагає вирішення кроків O ( n 2 ) .BhardO(n2)
Таким чином, у мене немає повного конструктивного доказу, але будь-яке оптимальне рішення, яке приймає менше очевидно, має свідком. На жаль, звичайно, щоб захопити всі можливі конфігурації, вам знадобиться n h a r d = число Бога ( n ) .nhardnhard=God's number(n)
EDIT: Регулярність конфігурації Superflip робить мабуть, що генерувати для n h a r d = число Бога ( n ) може бути відносно просто (тобто в P).Bhardnhard=God's number(n)