2015-10-10 9 views
5

necessità di sviluppare un algoritmo per risolvere il seguente compitoRaggruppamento imposta algoritmo

Data:

The N sets with a different number of elements 

Risultato previsto:

The new M sets containing ≥X common elements of the N sets 

Esempio:

N1=[1,2,3,4,5] 
N2=[2,3,5] 
N3=[1,3,5] 
N4=[1,2] 

if X=3: 

M1=[1] (from N1,3,4) 
M2=[2] (from N1,2,4) 
M3=[3,5] (from N1,2,3) 
+0

Correlati: http://stackoverflow.com/questions/3941781/algorithm-to-find-common-subsets –

+0

Fuori dalla mia testa: ordina gli elementi dei set di input. quindi usa unione unione per avanzare attraverso ogni numero intero esistente, contando ognuno mentre vai. Quelli con Count> = X vanno in un set M. Usa la codifica binaria sulla nave membro N set per ogni tale intero, per creare un hash per raggruppare i membri negli insiemi M. – RBarryYoung

+0

i nuovi set M sono disgiunti o no? –

risposta

1

Dato N set (indicato con Ni) di ordinati interi, inizializzare le variabili N Hi che terranno le teste di ciascun set.

Mentre esistono ancora indici Hi che non hanno raggiunto la fine della loro rispettiva Ni, iterare i valori Vi=Ni[Hi] e trovare il valore minimo Vmin, contare il numero di occorrenze n e memorizzare gli indici corrispondenti j (che si può tutti fanno in un ciclo).

Incrementare lo Hj.

Se n>X, questo ti dà un nuovo set M = [Vmin] (from Nj).

Fino a modellare la rappresentazione dei dati di conseguenza in modo da utilizzare (from Nj) come chiave di mappa.