Поиск небольших наборов целых чисел, в которых каждый элемент является суммой двух других


16

Это продолжение этого вопроса на math.stackexchange.

Допустим, что непустое множество S ⊆ ℤ является самонесущим, если для каждого a  ∈ S существуют различные элементы b, c  ∈ S, такие что a  =  b  + c. Для натуральных чисел n простые примеры включают идеал S =  n ℤ или (для n > 3) целочисленный интервал [- n ,  n ].

Мы будем говорить, что S сильно самоподдерживающийся, если S не пересекается с −S: то есть, если a  ∈ S, то - a  ∉ S. Ни один из приведенных выше примеров не является полностью самоподдерживающимся, потому что они на самом деле замкнуты под отрицанием. Существуют конечные множества, которые сильно самодостаточны: например, множества {−22, −20, −18, −16, −14, −12, −10, −2, 1, 3, 7, 8, 15 , 23} и {−10, −8, −6, −2, 1, 3, 4, 5}.

Вопрос 1. Для положительного целого числа N > 0 существует ли алгоритм poly ( N ) -time [или polylog ( N ) -time], чтобы либо (i)  создать сильно самоподдерживающийся набор, максимальное абсолютное значение которого равно N , либо (ii) )  определить, что такого набора не существует? [ Редактировать : как указано в самом старом ответе + мой комментарий к нему, такой набор всегда существует для N  ≥ 10.]

Вопрос 2. При N > 0, вы можете построить сильно самонесущий набор с максимальным абсолютным значением N , который имеет наименьшее количество возможных элементов?


1
перенос ответов на вопросы не является обычной практикой, и здесь вопрос выглядит хорошо. Но если ты хочешь, я перенесу это.
— Каве

Я также не уверен, что имеет смысл перенести ответ на вопрос.
— Суреш Венкат

Как пожелаешь, тогда. Тот факт, что этот вопрос остается здесь, беспокоил меня некоторое время, так как сайт стал зрелым форумом для вопросов и ответов по теоретическим темам. Я думал, что тон мог бы быть намного лучше подходящим для (неисследовательского уровня) cs.SE; но если вы не чувствуете существенную проблему согласованности, я перестану беспокоиться об этом.
— Ниль де Бодрап,

Ответы:


6

Я полагаю, что для вопроса № 1) должен быть возможен линейный алгоритм времени (и если вы готовы иметь дело с другим представлением, алгоритмом времени O (1))

Для любого N> = 23 мы строим сильно самонесущее множество, которое содержит 1 и N.

Мы можем сделать это легко, если построим то же самое для N-1, а затем добавим N к результирующему набору.

Для базового случая 23 мы можем начать с вашего примера набора.

Чтобы уменьшить размер, мы должны использовать аналогичный подход:

Построить наборы, которые содержат 1, N and N-1.

Мы используем эти ограниченные наборы и делаем эту конструкцию рекурсивно, чтобы уменьшить размер до O (logN) следующим образом:

  • Если N четное, для построения набора, содержащего 1, N и N-1, рекурсивно построить набор, содержащий 1, N / 2 и N / 2-1 (т. Е. Набор, соответствующий N / 2), и добавить N и N-1 в результирующий набор. Поскольку N-1 = N / 2 + N / 2-1 и N = 1 + N-1, это допустимый набор.

  • Если N нечетно, построить набор для N-1 и N для результирующего набора.

Для базовых случаев мы можем начать с {−22, −20, −18, −16, −14, −12, −10, −10, −2, 1, 3, 7, 8, 15, 23,24} для N = 24. Для 24 <N <= 47 мы можем использовать описанный выше алгоритм линейного времени и строить на основе набора для N = 24. Для N> = 48 мы переключаемся на уменьшение наполовину.

Фактически, для составного N мы можем уменьшить размер до размера, необходимого для одного из небольших простых чисел, которое делит N: найти множество для малого простого числа и просто умножить все числа на подходящий коэффициент.

Может быть интересно доказать некоторые нижние оценки в случае, когда N простое.


+1. Полагаю, мне подходит для постановки вопроса, где слишком много свободного места. Вы можете сделать то же самое для N> 10, конечно. Что оставляет нас с вопросом о создании множеств, которые меньше этого (возможно, минимального размера, как в # 2).
— Ниль де Бодрап,

Для вашего исправленного ответа, чтобы уменьшить размер: я не следую. Я понял, что вы хотите, чтобы N «поддерживали» (выражалось в виде суммы различных элементов) как 1 + (N-1). Но как вы «поддерживаете» N-1, тогда? --- Также: меня больше интересует размер, то есть мощность самого набора, хотя интересные границы его представления также могут быть интересны.
— Ниль де Бодрап,

@Niel: Я собирался комментировать: см. Мое редактирование :-)
— Aryabhata

Рассмотрим случай N = 46. Тогда N / 2 = 23; мы берем пример, приведенный в вопросе, как самоокупаемый набор, и включаем N-1 = 45 и N = 46. Как тогда мы «поддерживаем» N-1 = 45?
— Ниль де Бодрап,

2
(Вы можете подумать о смене своего псевдонима. Почему бы не объявить, кто вы на самом деле? Это также позволяет мне обращаться к вам, не выглядя так, будто я оскорбляю кого-то, если вы в конечном итоге решите сменить псевдоним позже.)
— Ниль де Бодрап

5

Для N ≥ 10 можно построить сильно самонесущий набор размером не более одиннадцати, как показано ниже:

{-N, -N + 2, -N + 4, -2, 1, 3, 4, 5, N-7, N-6, N-5}.

Более короткий пример, представленный в исходном вопросе, соответствует случаю N = 10. Это близко к тому, чтобы быть оптимальным, поскольку любой сильно самоподдерживающийся набор должен иметь количество элементов не менее восьми .

Таким образом, проблема разрешима за время O (log (N)) [занятое в мирских арифметических операциях над N], что дает набор мощностей от восьми до одиннадцати.

Конструкция для этого ответа была впервые представлена ​​для вопроса math.stackoverflow , который также дает интуицию для построения. Можем ли мы получить еще меньшие конструкции, например, сопоставляя нижнюю границу из восьми для каждого N> 9? Как насчет случаев N ∈ {8,9}?

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.