tôi cần phải hiệu quả tính toán hoán vị tiếp theo của chiều dài k
từ n
lựa chọn. Danh sách Wikipedia a great algorithm để tính toán hoán vị tiếp theo có chiều dài n
từ số n
lựa chọn.hiệu quả tính toán hoán vị tiếp theo của chiều dài k từ sự lựa chọn n
Điều tốt nhất tôi có thể sử dụng thuật toán đó (hoặc the Steinhaus–Johnson–Trotter algorithm), sau đó chỉ xem xét các mục k
đầu tiên của danh sách và lặp lại bất cứ khi nào thay đổi ở trên vị trí đó.
ràng buộc:
- Thuật toán phải tính toán hoán vị tiếp theo được gì hơn là các hoán vị hiện tại. Nếu cần tạo danh sách tất cả các hoán vị, nó sẽ chiếm quá nhiều bộ nhớ.
- Nó phải có khả năng tính toán một hoán vị của chiều dài chỉ
k
củan
(đây là nơi các thuật toán khác không
không hạn chế:
- Đừng quan tâm nếu nó trong- đặt hoặc không
- Tôi không quan tâm nếu nó theo thứ tự từ điển hoặc bất kỳ thứ tự nào cho vấn đề đó
- Tôi không quan tâm quá nhiều làm thế nào hiệu quả nó tính toán hoán vị tiếp theo, trong lý do tất nhiên, nó không thể cho tôi hoán vị tiếp theo bằng cách làm cho một danh sách của tất cả những người có thể mỗi lần.
Tôi khá chắc chắn bạn sẽ tìm thấy câu trả lời của bạn trong mã cho mô-đun itertools Python, có một cái nhìn – YXD
yeah nó là một * .so trên mac os x, vì vậy tôi đã quá lười biếng để đi tìm nguồn. đoán tôi nên ngừng lười biếng và đi làm điều đó. – aaronstacy
http://hg.python.org/releasing/2.7.3/file/7bb96963d067/Modules/itertoolsmodule.c#l2497 – Dougal