Điều gì sẽ là một thuật toán tương đối dễ dàng để mã trong Java để giải quyết khối lập phương của Rubik. Hiệu quả cũng rất quan trọng nhưng là một sự cân nhắc thứ cấp.Thuật toán mã dễ nhất cho khối lập phương của Rubik?
Trả lời
Cách đơn giản nhất không tầm thường thuật toán tôi đã tìm thấy là cái này:
http://www.chessandpoker.com/rubiks-cube-solution.html
Không quá khó để mã hóa. Liên kết được đề cập trong Yannick M.'s answer cũng có vẻ tốt, nhưng giải pháp của bước 'the cross' có vẻ như nó có thể phức tạp hơn một chút đối với tôi.
Có một số triển khai trình giải mã nguồn mở mà bạn có thể muốn xem. Đây là Python implementation. Điều này Java applet cũng bao gồm một người giải quyết, và mã nguồn có sẵn. Ngoài ra còn có một Javascript solver, cũng với mã nguồn có thể tải xuống.
Anthony Gatlin's answer tạo nên một điểm tuyệt vời về tính phù hợp của Prolog đối với tác vụ này. Đây là một bài viết chi tiết về cách viết Prolog solver của riêng bạn. Các heuristics nó sử dụng là đặc biệt thú vị.
liên kết đến trình giải mã JS dường như bị hỏng. –
Thực hiện các thao tác ngẫu nhiên cho đến khi bạn nhận được giải pháp phù hợp. Thuật toán đơn giản nhất và hiệu quả nhất.
Có thể muốn kiểm tra: http://peter.stillhq.com/jasmine/rubikscubesolution.html
Có một đại diện đồ họa của một thuật toán để giải quyết khối một 3x3x3 Rubik của
Tôi hiểu câu hỏi của bạn có liên quan đến Java, nhưng trên một lưu ý thực tế, các ngôn ngữ như Prolog là các vấn đề phù hợp hơn nhiều như giải quyết khối lập phương Rubik. Tôi cho rằng điều này có lẽ là cho một lớp học mặc dù và bạn có thể không có mất nhiều thời gian như sự lựa chọn của công cụ.
Bạn có thể làm điều đó bằng cách thực hiện BFS (Chiều rộng đầu tiên). Tôi nghĩ rằng việc thực hiện không phải là khó khăn (Nó là một trong những thuật toán đơn giản nhất theo thể loại của đồ thị). Bằng cách thực hiện nó với cấu trúc dữ liệu được gọi là hàng đợi, những gì bạn thực sự sẽ làm là xây dựng một cây BFS và tìm một đường đi ngắn nhất được gọi là từ điều kiện đã cho tới điều kiện mong muốn. Hạn chế của thuật toán này là nó không đủ hiệu quả (Không có bất kỳ sửa đổi nào, ngay cả khi giải quyết một khối 2x2x2 lượng thời gian cần thiết là ~ 5 phút). Nhưng bạn luôn có thể tìm thấy một số thủ thuật để tăng tốc độ.
Thành thật mà nói, đây là một trong những bài tập về nhà của khóa học có tên "Introduction of Algorithm" từ MIT. Đây là liên kết của bài tập về nhà: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/assignments/MIT6_006F11_ps6.pdf. Họ có một vài thư viện để giúp bạn hình dung nó và giúp bạn tránh được những nỗ lực không cần thiết.
- 1. Thuật toán hướng dẫn đường dẫn sao cho bề mặt khối lập phương
- 2. Mã giả cho thuật toán của Fortune
- 3. Điền thuật toán khối lượng
- 4. Thuật toán Eppstein và thuật toán của Yen cho k đường đi ngắn nhất
- 5. Thuật toán nén tốt nhất cho XML?
- 6. Thuật toán nhanh nhất để lập biểu đồ
- 7. Thuật toán lập lịch biểu
- 8. Thuật toán cho điểm gần nhất
- 9. Thuật toán mã hóa mới?
- 10. Thuật toán để tìm các yếu tố của một số đã cho .. Phương pháp ngắn nhất?
- 11. Thuật toán tốt nhất để lập chỉ mục các câu
- 12. Thuật toán lập trình song song hữu ích nhất?
- 13. Thuật toán lập lịch trình phù hợp tốt nhất
- 14. Làm thế nào để hình ảnh "cho" vòng lặp trong đại diện khối của thuật toán
- 15. Lập trình chức năng cho các thuật toán cơ bản
- 16. Cách tạo khối lập phương fractal?
- 17. Thuật toán lập lịch trình Thời gian cho Học sinh
- 18. Thuật toán tốt nhất cho từ gần nhất
- 19. Thuật toán tốt nhất cho màu phù hợp.
- 20. Thuật toán để tạo màu duy nhất
- 21. Thuật toán cho mê cung 3D
- 22. Ba cách hợp nhất thuật toán cho văn bản
- 23. Thuật toán xem đã giải mã cho CAD
- 24. Thuật toán nào cho chương trình lập lịch biểu
- 25. Phương pháp dễ nhất/tốt nhất để quản lý tệp thẻ ctags của bạn là gì?
- 26. Một mã ví dụ điển hình về cách triển khai các khối lập phương Marching?
- 27. Thuật toán cho quy hoạch vùng chứa
- 28. Nhận dạng điểm đánh dấu trên Android (nhận dạng khối Rubik)
- 29. Thuật toán mã hóa nào tốt nhất cho các chuỗi nhỏ?
- 30. thư viện thuật toán thuật toán phổ biến dài nhất có hiệu quả?
Câu hỏi không đúng ngữ pháp và câu hỏi được bình chọn là "đúng" không, trên thực tế, câu trả lời đúng. Điều này cho thấy lý do tại sao "thuật toán dễ dàng nhất để mã" có thể không phải là những gì bạn muốn --- chương trình có thể không bao giờ kết thúc. Và nó cho thấy lý do tại sao bạn cần phải quan tâm đến hiệu quả. – vy32
Tôi đã bị cướp * khóc *: p – Rushyo
Bạn chỉ có thể thuật lại, 'Thuật toán mã đơn giản nhất cho kết quả trong cuộc đời của chúng ta' :-) –