Algorithm: ComputingDSS (n, q,ρ)
procedure RecPartition(n, B, N )
if n = 0
then if N=q+1 and 2*∑i≠j ai
* aj ≥(n-1)* ρ
then for Q1 in U
and | Q1 | = a1
do
for Q2 in U \ Q1 and | Q2 | =
a2
do for Q3 in U \ (Q1∪Q2) and | Q3 | =
a3
...
do for Qq
in U \ (Q1∪Q2∪...∪Qq-1 ) and | Qq
| = aq
doM ← { a – b ( mod n ) | a∈Qi , b∈Qj , i≠j}
ifM is DSS
then return ( [Q1 , ..., Qq
] )
else for i ← 1 tomin (B,
n)
do aN+1 ← i
RecPartition( n-i, i, N+1)
main
U ←
{1, 2, ... , n}
r ← Ceiling(Sqrt ( (q * n
* ρ)/ (q -1) ) )
RecPartition(r, r, 0)