Qual è l'approccio migliore per trovare se un dato insieme è un sottoinsieme perfetta di un set - Se dato sottoinsieme non è ordinato?

StackOverflow https://stackoverflow.com/questions/2899317

  •  04-10-2019
  •  | 
  •  

Domanda

Qual è l'approccio migliore per trovare se un dato insieme (indifferenziati) è un sottoinsieme perfetta di un set principale. Ho avuto modo di fare un po 'di validazione nel mio programma in cui ho avuto modo di confrontare i clienti richiesta impostate con il set registrato capacità interna.

ho pensato di fare avendo insieme capacità interna allineati (non cambierà una volta registrato) e fare ricerca binaria per ogni elemento nel set richiesta del cliente. È il meglio che ho potuto ottenere? Sospettavo che ci potrebbe essere l'approccio migliore.

Qualche idea?

Saluti,

Microkernel

È stato utile?

Soluzione

Supponendo che la lingua scelta non implementa una classe set con "contiene in un set" Metodo già come Java fa con HashSet ...

Un approccio è quello di usare buon HashMaps (aka hash aka associativa array)

Se il superset non è troppo grande, generare un HashMap mappare ogni oggetto nel set più grande per un valore vero.

Poi, un ciclo su ogni elemento in un sottogruppo. Prova a trovare l'elemento nella HashMap generato. se non si riesce, il tuo piccolo insieme non è un sottoinsieme peoper. Se hai finito il ciclo senza venir meno, lo è.

Altri suggerimenti

dipende da quanti elementi sono in vostri set. per i set più grandi, di solito utilizzare una hashset per i giri mainset fuori le migliori prestazioni.

Dal momento che si conosce la capacità interna impostata è possibile utilizzare un perfetta funzione di hash per testare la elementi del set richiesta del cliente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top