Знаходження невеликих наборів цілих чисел, у яких кожен елемент є сумою двох інших


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  Ne 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 [або полілог ( N ) -time], щоб або (i)  створити сильно самонесучий набір, максимальне абсолютне значення якого N , або (ii) )  визначити, що такого набору не існує? [ Редагувати : як зазначено в найдавнішій відповіді + мій коментар до неї, завжди існує такий набір для N  ≥ 10.]

Питання №2. Чи можна для N > 0 побудувати сильно самонесучий набір з максимальним абсолютним значенням N і який має найменші можливі елементи?


1
міграція відповідей на запитання не є звичайною практикою, і питання виглядає тут чудово. Але якщо ви хочете, я перенесу це.
— Каве

Я також не впевнений, що має сенс мігрувати відповідь на запитання.
— Суреш Венкат

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

Відповіді:


6

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

Враховуючи будь-який 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, −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.