Diciamo che abbiamo un multiset (impostato con possibili duplicati) di numeri interi. Vorremmo trovare la dimensione del sottoinsieme più grande del multiset in modo tale che tutti i numeri nel sottoinsieme siano congruenti tra loro modulo alcuni m > 1.
Ad esempio:
1 4 7 7 8 10
per m = 2 i sottoinsiemi sono: (1, 7, 7) e (4, 8, 10), entrambi con dimensione 3.
per m = 3 i sottoinsiemi sono: (1, 4, 7, 7, 10) e (8), il più ampio set di dimensioni 5.
per m = 4 i sottoinsiemi sono: (1), (4, 8), (7, 7), (10), il più grande set di dimensioni 2.
In questo momento è evidente che la risposta migliore è 5 per m = 3.
Dato m possiamo trovare la dimensione del sottoinsieme più grande in tempo lineare.
Poiché la risposta è sempre uguale o superiore alla metà della dimensione del set, è sufficiente controllare i valori di m upto-median del set.
Inoltre ho notato che è necessario verificare solo i valori primi di m.
Tuttavia, se i valori nell'insieme sono grandi, l'algoritmo è ancora piuttosto lento.
Qualcuno ha qualche idea su come migliorarlo?