|
0 / 0 / 0
Регистрация: 08.06.2015
Сообщений: 14
|
|
Алгоритм построение композиции множества08.06.2015, 21:16. Показов 2004. Ответов 24
Метки нет (Все метки)
Здравствуйте, помогите,пожалуйста, построить алгоритм построения всех композиций конечного множества с увеличение количества блоков
0
|
|
| 08.06.2015, 21:16 | |
|
Ответы с готовыми решениями:
24
Построение выпуклой оболочки множества точек "Функции более высокого порядка. Функциональный аргумент, функциональное значение. Способы композиции функций" - композиции и функции высокого порядка Построение множества графиков |
|
Модератор
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
|
|
| 09.06.2015, 20:03 | |
|
Не понятно, композиция чего с чем?
1
|
|
|
0 / 0 / 0
Регистрация: 08.06.2015
Сообщений: 14
|
|
| 09.06.2015, 20:38 [ТС] | |
|
композиция множества=это упорядоченное разбиение множества
0
|
|
|
Модератор
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
|
|
| 09.06.2015, 22:24 | |
|
Чтобы получить все разбиения на k множеств, перечислите все n-разрядные числа в k-ичной системе счисления. Если i-ая цифра числа равна j, то i-ый (из n) элемент попадает в j-ое (из k) множество.
Начинаем с числа, состоящего из одних нулей и прибавляем по 1 для получения следующего. Для этого, начиная с младшего разряда, ищем первую цифру меньше максимальной, увеличиваем её на 1 и обнуляем все младшие разряды. Добавлено через 2 минуты Упс! Количество разных цифр может быть меньше k. Нужно ещё подумать, как избавиться от дублей.
1
|
|
|
0 / 0 / 0
Регистрация: 08.06.2015
Сообщений: 14
|
|
| 09.06.2015, 22:42 [ТС] | |
|
Построение упорядоченого разбиения идет с возростанием количества блоков(множетсв) в котором имеет место порядок в котором построенно то или иное разбиение
Вот как пример:[[{1}, {2}, {3}], [{1}, {3}, {2}], [{2}, {1}, {3}], [{3}, {1}, {2}], [{2}, {3}, {1}], [{3}, {2}, {1}], [{1}, {2, 3}], [{2}, {1, 3}], [{3}, {1, 2}], [{1, 2}, {3}], [{1, 3}, {2}], [{2, 3}, {1}], [{1, 2, 3}]] Это композиция множества размера 3
0
|
|
|
Модератор
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
|
|
| 09.06.2015, 22:50 | |
|
Понятно. 3! + 2!*1! + 1!*2! + 0! так?
0
|
|
|
0 / 0 / 0
Регистрация: 08.06.2015
Сообщений: 14
|
|
| 09.06.2015, 23:00 [ТС] | |
|
Да
![]() Добавлено через 9 минут Ой,ой, нет. Общее чилсло будет 3!/3!+3!/(1!*2!)+3!/(2!*1!)+3!/(1!*1!*1!)=13
0
|
|
|
Модератор
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
|
|||||||||||
| 10.06.2015, 21:02 | |||||||||||
|
Результат работы программы:
1
|
|||||||||||
|
0 / 0 / 0
Регистрация: 08.06.2015
Сообщений: 14
|
|
| 10.06.2015, 23:08 [ТС] | |
|
спасибо большое, только например для 4 он строит 75, а их всего 69
![]() Добавлено через 46 минут О, пересмотрел внимательно и там оказалась всё-таки 69 просто написало 75 Добавлено через 12 минут А можно сделать чтобы построение шло с возрастанием количества блоков?
0
|
|
|
Модератор
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
|
||||||||||||||||||
| 11.06.2015, 00:32 | ||||||||||||||||||
|
Добавлено через 7 минут Теперь выводит по порядку.
Можно добавить ещё одно условие по сортировке:
1
|
||||||||||||||||||
|
0 / 0 / 0
Регистрация: 08.06.2015
Сообщений: 14
|
|
| 11.06.2015, 00:35 [ТС] | |
|
ай простите, я забыл про 4!/2!*2!, а это еще +6, все верно
0
|
|
|
Модератор
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
|
|
| 11.06.2015, 00:36 | |
|
Я не стал упрощать код. Если сохранять список и очищать sb после добавления каждой строки (как я делаю во втором варианте), то переменные distStart и sbPos становятся не нужны.
1
|
|
|
0 / 0 / 0
Регистрация: 08.06.2015
Сообщений: 14
|
|
| 11.06.2015, 00:44 [ТС] | |
|
А вы могли бы подсказать, как строиться алгоритм который генерирует рандомную выборку(одно любое равновероятное разбиение)
0
|
|
|
Модератор
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
|
|||||||
| 11.06.2015, 00:51 | |||||||
|
Краткое описание алгоритма:
Я перебираю все n-разрядные числа в n-ичной системе счисления. Если i-ая цифра числа равна j, то i-ый (из n) элемент попадает в j-ое (из n) множество. Но! если в числе есть разрыв (в числе нет цифры j1 и есть цифра j2 > j1), то это число исключаем из рассмотрения. Пример для n=3:
Добавлено через 2 минуты То есть, выбираем случайное число от 0 до nn. Переводим его в n-ичную систему исчисления. Формируем разбиение. Если в процессе формирования разбиения обнаруживаем разрыва, то берём другое случайное число.
1
|
|||||||
|
0 / 0 / 0
Регистрация: 08.06.2015
Сообщений: 14
|
|
| 11.06.2015, 00:55 [ТС] | |
|
а чтобы вывести например первые 10 результатов, требуется записать все разбиения в список и потом вывести требующие нам число строк или можно сделать это быстрее?
0
|
|
|
Модератор
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
|
|
| 11.06.2015, 08:08 | |
|
Можно быстрее. Например, если нам требуются первые 10 для n = 4, то, мы, зная, что у нас есть 16 разбиений длинной не более 2, можем вычислить все разбиения длиной не более 2.
Вообще говоря, если требуется сортировать только по количеству разбиений, то программу можно переделать: 1. Добавить параметр k - количество разбиений (строка 8) 2. Отбрасывать "число", если встретился первый пустой элемент (строка 32) 3. Вызывать наше Solve(a, n, k) в цикле по k от 1 до n. (останавливаться, как только найдено нужное количество разбиений) 4. В функцию Next передавать k вместо n-1 (строка 55)
0
|
|
|
0 / 0 / 0
Регистрация: 08.06.2015
Сообщений: 14
|
|||
| 11.06.2015, 15:46 [ТС] | |||
|
Добавлено через 25 минут И кстате, это реализация рекурсивная, если да, то можно сделать не рекурсивной? Добавлено через 23 минуты ![]() Добавлено через 1 час 36 минут Кстате,что бы делать разбиения с возростанием количества блоков, можно упорядочить числа в n-ичной системе, например n=3: сумма чисел =0 -> 1 блок сумма чисел =1 или 2 -> 2 блока(тут бывает и сумма 4 но мы их убираем так как там разрыв) сумма = 3 -> 3 блока так и получиться наверное в порядке возрастания Если вы согласны с этим, знаете как это сделать?
0
|
|||
|
Модератор
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
|
||
| 11.06.2015, 16:04 | ||
|
Сейчас отбрасываются числа с "разрывами". Поэтому выводятся разбиения, состоящие из количества блоков, не больше заданного. Разрыв - это когда в числе нет некой цифры, но есть более старшая. Например, 103 - разрыв, так как нет 2 и есть 3. А 102 не разрыв, хотя нет 3. А если (как я описал в сообщении #16) отбрасывать числа с любой недостающей цифрой, то будут выводится только разбиения, состоящие ровно из заданного количества блоков.
0
|
||
|
0 / 0 / 0
Регистрация: 08.06.2015
Сообщений: 14
|
|
| 13.06.2015, 01:01 [ТС] | |
|
Знаете как организовать весь перебор таких н значных чисел по модулю н, чтобы количество одинаковых цыфр уменьшалось? Тогда можно сделать построение в порядке возростания блоков.
0
|
|
|
Антикодер
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
|
||||||||||||||||
| 13.06.2015, 04:11 | ||||||||||||||||
|
моё скромное, независимое решение задачки на Haskell:
вот что выводит только функция sets: Кликните здесь для просмотра всего текста
Вывод:
проблема этого решения в том, что на операцию subsequences $ subsequences [1,2,3,4,5] тратится слишком много времени...
0
|
||||||||||||||||
| 13.06.2015, 04:11 | |
|
Помогаю со студенческими работами здесь
20
Построение множества Жюлиа Построение множества на комплексной плоскости Построение множества отрезков на одной прямой Построение функции принадлежности нечеткого множества Комплексные числа. Построение на компл.прямой множества точек. Вычислить Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Первый деплой
lagorue 17.01.2026
Не спеша развернул своё 1ое приложение в kubernetes.
А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения
развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|