Compute permutation cycles of sets

11 次查看(过去 30 天)

Hello. Just to start, I am asking about something that I don't fully understand the terminology around yet so I will try but I apologize if there is some confusion. I am trying to find all the possible combinations of these sets (included below) which I started doing by hand but I would like to automate it with matlab to speed finding all the combinations.

a (1 3 2 4)(5 7 6 8)
b (1 4 2 3)(5 8 6 7)
c (1 5 2 6)(3 8 4 7)
d (1 8 2 7)(3 6 4 5)
e (1 6 2 5)(3 7 4 8)
f (1 7 2 8)(3 5 4 6)
g (1 2)(3 4)(5 6)(7 8)

Just in case I am mixing up the terminology, here is an example of what I am trying to do.
ac = (1 3 2 4)(5 7 6 8)(1 5 2 6)(3 8 4 7) = (1 8 2 7)(3 6 4 5) = d

I was looking at the perms() function but I am not sure how to use it to accomplish this type of result.

Thank you for any help and suggestions.

  2 个评论
Dyuman Joshi
Dyuman Joshi 2023-9-21
If I am understanding this correct, Variables a, b, c, d, e, f, and g are the data you are working with, and you have to find combinations of each of them taken 2 at a time?
Also, what is the logic behind this conversion or computation -
ac = (1 3 2 4)(5 7 6 8)(1 5 2 6)(3 8 4 7) = (1 8 2 7)(3 6 4 5) = d

请先登录,再进行评论。

回答(1 个)

Infinite_king
Infinite_king 2023-10-4
Hi,
I understand that you are interested in finding all the composite permutations that can be obtained from the given set of permutations.
To execute this task in MATLAB, it may be beneficial to consider utilizing the One-Line notation method.
One way to approach this is by using the 'combinations' function, which allows us to generate various combinations of the given set of elements.
Subsequently, we can iterate through each combination and calculate the composite permutations. Please refer the code below for reference
% permutation size
permutation_size = 3;
% permutations -> Enter the permutations here
p1 = int64([2 3 1]);
p2 = int64([2 1 3]);
% combining different permutations into single martix, let's call it
% permutation set
per_set = [p1;p2];
% row numbers of permutation set
per_set_nums = 1:2;
% Finding various combinations of given permutations
set_combinations = combinations(per_set_nums,per_set_nums);
% calculating number of combinations
size_of_table = size(set_combinations);
number_of_combs = size_of_table(1);
% calculating composite permutations
for comb = 1:number_of_combs
% Choosen permutations
per1 = set_combinations{comb,1};
per2 = set_combinations{comb,2};
% calculating composite permutations
composite_permutation = zeros(1,permutation_size);
for num = 1:permutation_size
composite_permutation(num) = per_set(per2,per_set(per1,num));
end
% printing the composite permutation
fprintf("composite permutation obtained by combining permutation %d and %d \n",per1,per2);
%for num = 1:permutation_size
disp(composite_permutation);
%end
fprintf("\n");
end
For more information, kindly refer the following documentations,
  1. https://en.wikipedia.org/wiki/Cyclic_permutation
  2. https://en.wikipedia.org/wiki/Permutation#Cycle_notation
  3. https://en.wikipedia.org/wiki/Permutation#Cycle_notation:~:text=unless%20otherwise%20specified.-,Two%2Dline,-notation%5Bedit
  4. https://www.mathworks.com/help/matlab/ref/combinations.html
Hope this is helpful.

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

产品


版本

R2023a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by