Ho una vasta collezione di oggetti e ho bisogno di capire le somiglianze tra di loro.rilevamento rapida similitudine
Per essere precisi: dati due oggetti posso calcolare la loro diversità come un numero, un metric - valori più alti significano meno somiglianza e 0 significa che gli oggetti hanno contenuti identici. Il costo di calcolo di questo numero è proporzionale alla dimensione dell'oggetto più piccolo (ogni oggetto ha una determinata dimensione).
Ho bisogno dell'abilità di trovare rapidamente, dato un oggetto, l'insieme di oggetti simili ad esso.
Per essere precisi: ho bisogno di produrre una struttura di dati che mappa qualsiasi oggetto o all'insieme di oggetti non più dissimile da o di d, per qualche valore di dissomiglianza d, tale che l'elencazione degli oggetti nell'insieme non richiede più tempo che se fossero in un array o elenco collegato (e forse lo sono effettivamente). In genere, il set sarà molto più piccolo del numero totale di oggetti, quindi è davvero utile eseguire questo calcolo. È abbastanza buono se la struttura dei dati assume una d fissa, ma se funziona per una d arbitraria, ancora meglio.
Hai già riscontrato questo problema o qualcosa di simile? Qual è una buona soluzione?
Per essere precisi: una soluzione semplice coinvolge calcolare le differenze tra tutte le coppie di oggetti, ma è lento - O (n) dove n è il numero di oggetti. Esiste una soluzione generale con una complessità inferiore?
Si prega di fornire alcuni esempi di oggetti con i vostri commenti. – Misha