7
p = perms([0:2]) 

p =lỗi rõ ràng trong perms Matlab của hoạt

2  1  0 
2  0  1 
1  2  0 
1  0  2 
0  1  2 
0  2  1 

This function là nghĩa vụ phải hiển thị các hoán vị của một vector trong thứ tự từ điển ngược lại. Do đó, tôi mong đợi hàng cuối cùng của đầu ra này chứa các phần tử 0 1 2; tuy nhiên, nó chứa 0 2 1. Các hàng khác được hiển thị chính xác.

Tóm lại, thứ tự của hai hàng cuối cùng được thay đổi. Chuyện gì đang xảy ra ở đây?

+0

Không phạm tội nhưng đây có phải là câu hỏi không? –

+0

[ví dụ về trang web của Mathworks] (http://www.mathworks.com/help/matlab/ref/perms.html) cũng làm điều tương tự – Daniel

+1

@ Benoit_11 Tôi đã chỉnh sửa nó theo những gì tôi nghĩ rằng OP là cố gắng hỏi. Siva, nếu bản chỉnh sửa của tôi không phản ánh chính xác câu hỏi của bạn, vui lòng chỉnh sửa lại để làm rõ. – Daniel

Trả lời

9

Vâng, điều này có vẻ là một lỗi. Nắm bắt tốt! Nhưng có thể là một lỗi trong số documentation, thay vì trong hàm.

Nếu bạn gõ open perms để xem mã nguồn, bạn sẽ thấy các mô tả sau đây trong dòng đầu tiên:

%PERMS All possible permutations. 
% PERMS(1:N), or PERMS(V) where V is a vector of length N, creates a 
% matrix with N! rows and N columns containing all possible 
% permutations of the N elements. 
% 
% This function is only practical for situations where N is less 
% than about 10 (for N=11, the output takes over 3 gigabytes). 
% 
% Class support for input V: 
%  float: double, single 
%  integer: uint8, int8, uint16, int16, uint32, int32, uint64, int64 
%  logical, char 

trong đó không có tài liệu tham khảo được thực hiện để đảo ngược thứ tự từ điển.

Công việc thực tế được thực hiện bởi hàm đệ quy, cục bộ permsr. Nếu bạn nhìn vào mã của nó, nó không rõ ràng lúc đầu nó hoạt động như thế nào (như thường lệ với đệ quy), nhưng dòng

t(t == i) = n 

cho một đầu mối không có thứ tự cụ thể nào được tìm thấy trong kết quả.

Nếu bạn thử một vector lớn hơn, bạn sẽ thấy sự khác biệt từ thứ tự từ điển ngược trong nhiều hàng:

>> perms(0:3) 
ans = 
    3  2  1  0 
    3  2  0  1 
    3  1  2  0 
    3  1  0  2 
    3  0  1  2 
    3  0  2  1 %// here. Affects cols 1 and 2 
    2  3  1  0 
    2  3  0  1 
    2  1  3  0 
    2  1  0  3 
    2  0  1  3 
    2  0  3  1 %// here. Affects cols 1 and 2 
    1  2  3  0 
    1  2  0  3 
    1  3  2  0 %// here. Affects cols 2 and 3 
    ... 

Nói tóm lại, chức năng dường như đã được thiết kế mà không quan tâm đến bất kỳ thứ tự. Đây là tài liệu có thể sai khi tuyên bố thứ tự đó.

+0

Nếu đúng như vậy, thì làm cách nào tôi có thể sắp xếp các câu trả lời theo thứ tự từ điển. –

+2

@Siva 'sortrows (p)' –

+1

@LuisMendo - Điều Siva thực sự có nghĩa là cảm ơn bạn vì đã siêng năng trong nỗ lực của bạn và rằng anh ấy sẽ chấp nhận câu trả lời của bạn rất sớm trong tương lai gần. – rayryeng