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 [- n ,  n ].

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.