Nhờ giải thích thuật toán sinh hoán vị của Heap
Em xin chào các anh chị,hiện tại em đang học Javascript tren freecodecamp và em gặp bài toán cần sử dụng giải thuật Heap để tìm những biến thể hoán vị của một string.vd “abc” thì sẽ có “bac”,“cba”…
nhưng em đọc ở Wikipedia thì lại không hiểu rõ lắm vì có khá nhiều từ mới.Vậy anh chị nào có hiểu biết về giải thuật này hoặc hiểu được nó thì có thể giải thích lại cho em được không ạ.Em xin chân thành cảm ơn anh chị

Heap's algorithm
Heap's algorithm generates all possible permutations of n objects. It was first proposed by B. R. Heap in 1963. The algorithm minimizes movement: it generates each permutation from the previous one by interchanging a single pair of elements; the other n−2 elements are not disturbed. In a 1977 review of permutation-generating algorithms, Robert Sedgewick concluded that it was at that time the most effective algorithm for generating permutations by computer. The sequence of permutations of n obje...
Ban đầu thấy title tưởng là Heap sort, định vào hổ báo, ai dè “Giải thuật Heap” để brute force…
Search google mãi mới thấy
Em làm bài tập bình thường thôi anh,brute force nghe ghê quá
https://vascal.github.io/algo/permute
Đây là cách giải thích trong tiếng Việt, người ta giải thích cũng đến đây thôi chứ không biết nói sao.
Em mới học mỗi javascript nên đọc code mẫu ở trang anh bảo mà không hiểu lắm;
em có cái function viết bằng Javascript ở đây.mong anh và mọi người giải thích giúp
}
mới đọc tưởng cấu trúc dữ liệu Heap =))
mà sinh hoán vị xài đệ qui được rồi mà nhỉ?
Cái này cũng là quay lui thôi nhưng nó duyệt có vẻ nhanh hơn vì không bị hạn chế output.
Đầu tiên bạn giữ cố định phần tử cuối cùng và hoán vị phần còn lại. Sau đó bạn phải đổi chỗ nó với phần còn lại thì mới đủ. Hiểu sơ sơ thì nó như vậy. Vì sao phải chia trường hợp chẵn lẻ thì khó đây.
Đẹp nhất là thuật toán SJT (hay Johnson-Trotter), nhưng nhanh nhất vẫn là thuật toán của Heap.
cho mình hỏi tại sao lại nhanh nhỉ? cũng phải sinh đủ n! hoán vị mà nhỉ?
Còn dễ hiểu nhất là “thuật toán sinh hoán vị noz1995”:
Bài này dùng giải thuật battracking . Bạn xem chi tiết ở đây , có giải thích rõ ràng
GeeksforGeeks – 2 Aug 09
Write a program to print all permutations of a given string - GeeksforGeeks
A permutation, also called an “arrangement number” or “order,” is a rearrangement of the elements of an ordered list S into a one-to-one correspondence with… Read More »