Vấn đề ít nhất là NP-hard, bằng cách giảm từ 3-SAT.
Trước tiên, hãy xem xét vấn đề tìm đường dẫn từ Bắt đầu đến Thoát khỏi biểu đồ được chỉ dẫn sau với hạn chế là không có đường dẫn nào có thể truy cập cả ba nút (vuông) của mệnh đề:
(X1∨X2∨X3)∧(X1∨¬X2∨X4)
Chúng tôi chuyển đổi các biểu đồ này thành một mạng chuyển đổi. Đối với điều này, chúng tôi sử dụng ba tiện ích:
- Mỗi nút tròn và cạnh hai chiều trở thành một Dây , tạo thành các kết nối giữa các công tắc.
- Mọi cạnh được định hướng sẽ trở thành tiện ích Một chiều bao gồm một công tắc duy nhất (xem bên dưới).
- Mỗi nút vuông đại diện cho một trong ba công tắc là một phần của tiện ích Khoản (xem bên dưới).
Trong các minh họa sau đây, các công tắc được vẽ dưới dạng hai mũi tên đến, một trong số đó là nét đứt (bị vô hiệu hóa). Hướng mục tiêu được vẽ bằng một vòng tròn màu đen (sao cho mũi tên rắn cuối cùng phải ở bên cạnh vòng tròn).
Lưu ý: Chúng tôi sẽ sử dụng phần chữ đậm để phân biệt Thoát khỏi biểu đồ với các lối thoát của tiện ích.
ABBAX1X2X3X1′X2′X3′
Hãy nhớ lại rằng đối với biểu đồ ban đầu, việc tìm một đường dẫn đến Lối ra và không truy cập cả ba nút vuông của bất kỳ mệnh đề nào là NP-đầy đủ. Bây giờ hãy xem xét vấn đề tiếp cận Thoát khỏi biểu đồ được chuyển đổi mà không phải lo lắng về vị trí mục tiêu của các công tắc.
Quan sát rằng bất kỳ đường dẫn nào là giải pháp cho vấn đề đồ thị ban đầu cũng là một giải pháp cho biểu đồ được chuyển đổi. Vì vậy, giả sử một đường dẫn cho biểu đồ được chuyển đổi không phải là một giải pháp cho biểu đồ ban đầu. Điều này có thể xảy ra trong hai trường hợp:
- BA
- Một đường dẫn đi qua cả ba đường dẫn của một số tiện ích Khoản .
Trong trường hợp đầu tiên, tiện ích Một chiều trước tiên phải được di chuyển theo hướng dự định, trong trường hợp đó, đường dẫn cũng có thể tránh đi qua nó ở vị trí đầu tiên.
Vì vậy, hãy xem xét trường hợp thứ hai trong đó đường dẫn đi qua cả ba công tắc của một số tiện ích Khoản . Sau đó, tiện ích đó sẽ có tất cả ba công tắc được lật (xem bên dưới). Đây là nơi chúng tôi sử dụng các vị trí mục tiêu. Lưu ý rằng xương sống màu xám của tiện ích Khoản không còn có thể đạt được, có nghĩa là các công tắc không còn có thể được chuyển đến vị trí mục tiêu của chúng. Trong trường hợp này, chúng tôi nói rằng tiện ích Khoản này không thể phục hồi.
Vẫn còn cho thấy rằng đối với bất kỳ giải pháp nào cho vấn đề đồ thị ban đầu, các công tắc của đồ thị được chuyển đổi có thể được đặt ở vị trí đích của chúng. Đối với điều này, chúng tôi sử dụng thực tế là dây Thoát chỉ có thể đạt được khi có giải pháp hoặc một số tiện ích Khoản nào đó không thể phục hồi được.
Để đặt các công tắc ở vị trí mục tiêu của chúng, giờ đây chúng ta có thể thêm các tiện ích Một chiều bổ sung từ dây Thoát vào lối vào của mọi tiện ích Một chiều hiện có , cũng như ba dây thoát của tất cả các tiện ích Khoản . Sau đó, khi mã thông báo đạt đến Thoát , tất cả các tiện ích Một chiều bổ sung có thể được duyệt qua (và do đó đặt vào vị trí mục tiêu của chúng), đồng thời đặt các công tắc còn lại vào vị trí mục tiêu của chúng (trừ khi có một điều khoản không thể phục hồi). Cuối cùng, mã thông báo có thể quay trở lại Thoát và câu đố được giải.
Chúng ta nên lưu ý rằng các tiện ích khoản chỉ có thể được phục hồi khi được nhập từ một lối thoát chưa được xử lý; và do các tiện ích Một chiều được đặt giữa các tiện ích Khoản và biến tiếp theo, điều này không thể xảy ra cho đến khi đạt được dây Thoát .
Do đó, vấn đề mạng chuyển đổi là NP-hard.
Hiện vẫn chưa rõ vấn đề nằm ở NP hay PSPACE-hard. Việc giảm độ cứng NP khi xây dựng mạng chuyển mạch phẳng sẽ có ý nghĩa rất lớn đối với các biến thể bị hạn chế của Sokoban, cụ thể là vì tất cả các công tắc đều tương đương với tiện ích Sokoban bên dưới.