Trovare piccoli insiemi di numeri interi in cui ogni elemento è una somma di altri due


16

Questo è il seguito di questa domanda su math.stackexchange.

Diciamo che un insieme non vuoto S ⊆ ℤ è autoportante se per ogni a  ∈ S, esistono elementi distinti b, c  ∈ S tali che a  =  b  + c. Per numeri interi positivi n , semplici esempi includono S = n ℤ ideale  o (per n > 3) l'intervallo intero [- nn ].

Diremo che S è fortemente autoportante se S è disgiunto da -S: cioè, se un  ∈ S, allora - un  ∉ S. Nessuno degli esempi di cui sopra sono fortemente autoportanti, perché sono in realtà chiuso sotto negazione. Esistono insiemi finiti che sono fortemente autoportanti: per esempio, gli insiemi {−22, −20, −18, −16, −14, −12, −10, −2, 1, 3, 7, 8, 15 , 23} e {−10, −8, −6, −2, 1, 3, 4, 5}.

Domanda 1. Per un numero intero positivo N > 0, esiste un algoritmo poly ( N ) -time [o polylog ( N ) -time] per (i)  produrre un set fortemente autoportante il cui valore assoluto massimo è N , oppure (ii )  determinare che non esiste un tale set? [ Modifica : come sottolineato nella risposta più vecchia + il mio commento, esiste sempre un tale set per N  ≥ 10.]

Domanda 2. Per N > 0, puoi costruire un set fortemente autoportante con il massimo valore assoluto N e quale ha il minor numero possibile di elementi?


1
la migrazione delle domande con risposta non è una pratica comune e la domanda qui sembra soddisfacente. Ma se vuoi lo migrerò.
Kaveh,

Inoltre, non sono sicuro che abbia senso migrare una domanda con risposta.
Suresh Venkat,

Come desideri, allora. Il fatto che questa domanda rimanga qui mi ha infastidito per qualche tempo da quando il sito è diventato un forum maturo per domande e risposte su argomenti teorici. Ho pensato che il tono potesse essere molto più adatto al (livello non di ricerca) cs.SE; ma se non senti che c'è un significativo problema di coerenza, allora smetterò di preoccuparmi.
Niel de Beaudrap,

Risposte:


6

Suppongo che un algoritmo temporale lineare dovrebbe essere possibile per la domanda n. 1) (e se sei disposto a trattare con una rappresentazione diversa, un algoritmo temporale O (1))

Dato qualsiasi N> = 23, costruiamo un set fortemente autoportante che contiene 1 e N.

Possiamo farlo facilmente se costruiamo lo stesso per N-1 e quindi aggiungiamo N all'insieme risultante.

Per il caso base di 23, possiamo iniziare con il tuo set di esempi.

Per ridurre le dimensioni, dovremmo essere in grado di utilizzare un approccio simile:

Costruisci insiemi che contengono 1, N and N-1.

Usiamo questi set vincolati e facciamo questa costruzione in modo ricorsivo per ridurre la dimensione a O (logN) come segue:

  • Se N è pari, per costruire un set contenente 1, N e N-1, costruisci in modo ricorsivo un set contenente 1, N / 2 e N / 2-1 (ovvero set corrispondente a N / 2) e aggiungi N e N-1 al set risultante. Poiché N-1 = N / 2 + N / 2-1 e N = 1 + N-1, questo è un set valido.

  • Se N è dispari, costruisci un set per N-1 e N sul set risultante.

Per i casi base, possiamo iniziare con {−22, −20, −18, −16, −14, −12, −10, −2, 1, 3, 7, 8, 15, 23,24} per N = 24. Per 24 <N <= 47, possiamo usare l'algoritmo del tempo lineare sopra e basarci sul set per N = 24. Per N> = 48 si passa alla riduzione della metà.

In effetti, per il composito N, possiamo ridurre ulteriormente la dimensione della dimensione richiesta per uno dei numeri primi piccoli che divide N: trova un set per il numero primo piccolo e moltiplica semplicemente tutti i numeri per un fattore adatto.

Potrebbe essere interessante dimostrare alcuni limiti inferiori nel caso N sia primo.


+1. Mi sembra giusto per porre una domanda con troppa stanza in sospeso, suppongo. Puoi fare lo stesso per N> 10, ovviamente. Il che ci lascia con la questione di costruire insiemi più piccoli di questo (possibilmente di dimensioni minime, come nel n. 2).
Niel de Beaudrap,

Per la tua risposta rivista per ridurre le dimensioni: non seguo. Ho capito che vuoi avere N "supportato" (espresso come somma di elementi distinti) come 1 + (N-1). Ma come "supportare" N-1, allora? --- Inoltre: sono più interessato alla dimensione, cioè alla cardinalità, dell'insieme stesso, anche se i limiti interessanti sulla sua rappresentazione possono anche essere interessanti.
Niel de Beaudrap,

@Niel: stavo per commentare: vedi la mia modifica :-)
Aryabhata,

Considera il caso di N = 46. Quindi N / 2 = 23; prendiamo l'esempio fornito nella domanda come set autoportante e includiamo N-1 = 45 e N = 46. Come possiamo quindi "supportare" N-1 = 45?
Niel de Beaudrap,

2
(Potresti prendere in considerazione l'idea di cambiare il tuo soprannome. Perché non pubblicizzare chi sei in realtà? Mi permette anche di rivolgermi a te senza sembrare come se stessi insultando qualcuno, se alla fine dovessi scegliere di cambiare il tuo soprannome.)
Niel de Beaudrap

5

Per N ≥ 10, si può costruire un set di dimensioni fortemente autoportante al massimo undici, come segue:

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

L'esempio più breve presentato nella domanda originale corrisponde al caso N = 10. Questo è quasi ottimale, poiché qualsiasi set fortemente autoportante deve avere cardinalità almeno otto .

Pertanto, il problema è risolvibile nel tempo O (log (N)) [ripreso in banali operazioni aritmetiche su N], producendo un insieme di cardinalità tra otto e undici.

La costruzione di questa risposta è stata presentata per la prima volta per la domanda math.stackoverflow , che fornisce anche l'intuizione per la costruzione. Possiamo ottenere ancora costruzioni più piccole, ad esempio abbinando il limite inferiore di otto per ogni N> 9? E i casi di N ∈ {8,9}?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.