Я отправил another question раньше, если вы хотите какой-то контекст. Похоже, что с этим подходом я ошибался.Эффективно генерирующие «цепи вычитания»
Addition chains может использоваться для сведения к минимуму количества умножений, необходимых для повышения числа. Например, для требуется четыре умножения. Два вычислить = а × а и = а × в , и еще два, чтобы вычислять = а × × а.
Аналогичным образом, я пытаюсь создать все возможные «цепи вычитания» для набора чисел. Например, учитывая набор чисел {1, 2, 3}
, я пытаюсь сгенерировать следующие перестановки.
{1, 2, 3}
{1, 2, 3}, {1, 2}
{1, 2, 3}, {1, 2}, {1}
{1, 2, 3}, {1, 2}, {2}
{1, 2, 3}, {1, 2}, {1}, {2}
{1, 2, 3}, {1, 3}
{1, 2, 3}, {1, 3}, {1}
{1, 2, 3}, {1, 3}, {3}
{1, 2, 3}, {1, 3}, {1}, {3}
{1, 2, 3}, {2, 3}
{1, 2, 3}, {2, 3}, {2}
{1, 2, 3}, {2, 3}, {3}
{1, 2, 3}, {2, 3}, {2}, {3}
{1, 2, 3}, {1, 2}, {1, 3}
{1, 2, 3}, {1, 2}, {1, 3}, {1}
{1, 2, 3}, {1, 2}, {1, 3}, {2}
{1, 2, 3}, {1, 2}, {1, 3}, {3}
{1, 2, 3}, {1, 2}, {1, 3}, {1}, {2}
{1, 2, 3}, {1, 2}, {1, 3}, {1}, {3}
{1, 2, 3}, {1, 2}, {1, 3}, {2}, {3}
{1, 2, 3}, {1, 2}, {1, 3}, {1}, {2}, {3}
# and so on...
где каждый элемент в перестановке (помимо {1, 2, 3}
) может быть найден путем удаления одного элемента из другого множества в перестановке.
Например, перестановка {1, 2, 3}, {1}
недействительна, так как {1}
не может быть сконструирован путем удаления одного элемента из {1, 2, 3}
.
Есть ли известный алгоритм для поиска этого подмножества силового набора силового набора? Моя реализация будет в Python, но вопрос - агностик. Кроме того, я действительно не хочу, чтобы перестановки, содержащие набор с одним элементом (например, {1, 2, 3}, {1, 2}, {1}
), потому что они соответствуют случаю «диктатора», который не представляет интереса.
Я не думаю, что алгоритм генерации всех этих списков множеств будет слишком сложным для реализации, но каким-то образом я не вижу связи с цепочками добавок и с предыдущим вопросом.По вашему предыдущему вопросу не следует «{1, 2, 3], {1, 2}', '{1, 2, 3}, {1, 3}' и '{1, 2, 3} {2, 3} 'все считаются эквивалентными –
@tobias_k Вы правы, я не думаю, что у меня будет время для обновления вопроса сегодня. –