Advertisement
dmkozyrev

all_subsets2.m

Mar 29th, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.80 KB | None | 0 0
  1. function all_subsets2(X)
  2. % Функция выводит все подмножества Y множества X
  3. % Пример вызова функции в консоли: all_subsets2([1,2,3,4,5])
  4.  
  5.     len_X = length(X); % Мощность множества X
  6.     include = zeros(1, len_X); % Массив, отвечающий за включение i-го элемента в подмножество
  7.    
  8. % Каждому элементу ставим 1, если он входит в подмножество, иначе ставим 0
  9. % Получаем последовательности из нулей и единиц
  10.  
  11.     for num = 0 : 2^len_X-1 % Перебор k - значных чисел в двоичной системе счисления
  12.         t = num; % Копируем число во временную переменную
  13.        
  14.         Y = zeros(1, len_X); % Подмножество Y
  15.         len_Y = 0; % Мощность подмножества Y
  16.        
  17.         for i = len_X:(-1):1 % Разбор числа на разряды: нули и единицы
  18.             include(i) = mod(t, 2); % Крайняя правая цифра числа
  19.             t = fix(t / 2); % Смещение числа на один разряд вправо
  20.            
  21.             if ( include(i) == 1 ) % Если элемент включен в подмножество
  22.                 len_Y = len_Y + 1; % увеличиваем мозность подмножества Y
  23.                 Y(len_Y) = X(i); % Добавляем элемент в подмножество
  24.             end
  25.         end
  26.         Y = Y(1:len_Y); % Вырезаем только ненулевые, добавленные нами элементы
  27.         disp(Y); % Выводим Y на экран
  28.     end
  29. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement