2013-01-10 3 views
7

Alla ricerca di una lib che rilevi le comunità sovrapposte in una rete abbastanza grande (fino a 10.000 nodi) in pochi secondi, non minuti? [nota: da "rete" intendo un grafico]per rilevare le comunità sovrapposte in una rete?


In risposta a un commento che chiede per i dettagli, ecco un semplice esempio:

D-E-F
          |
        G
        |
ABC

Esistono molti algoritmi che sono in grado di rilevare (D, E, F, G) e (A, B, C) 2 (non sovrapposte) comunità in questa rete distinti - o, naturalmente, (D, E, F) e (A, B, C, G).

Sto cercando un algoritmo, implementato in Java, che sia in grado di rilevare (D, E, F, G) e (A, B, C, G) come i due sovrapposti (perché si sovrappongono a G) comunità in questa rete.

+0

Fornire un po 'più di dettaglio sarebbe utile. Potresti dare un esempio di una piccola rete, come sono definite le comunità in tale rete e cosa ti aspetteresti di trovare? – mitchus

+0

@seinecle, hai trovato qualcosa alla fine? – skyork

+0

Non sono riuscito a trovare una soluzione – seinecle

risposta

1

Prova gephi. Credo che ciò che pensi di fare sia già implementato lì. Tuttavia, è open source (3 GPL) e puoi ottenere alcune idee dal codice. La descrizione dell'API java Graph è here.

Inoltre si potrebbe desiderare di rivedere this articolo

+0

gephi rileva * non * sovrapponendo le comunità con alvoro Louvain – seinecle

+0

è buono o cattivo? – aviad

+0

questo non è né buono né cattivo, ma solo la funzione che sto cercando. Comunità non sovrapposte significa che i nodi nella rete appartengono a una comunità o l'altra, ma non a diverse (le comunità sono disgiunte, per così dire). Conoscevo l'articolo che hai citato! Ho appena trovato anche questo: http://arxiv.org/abs/1110.5813 - ma non si tratta di implementazione – seinecle

2

prova, SNAP strumento presso la Stanford University. Hanno questo caso d'uso nella cartella degli esempi già implementata.

http://snap.stanford.edu/

+0

Non riuscivo a trovarlo. Puoi pubblicare il link preciso per favore? – seinecle

+0

Nella cartella degli esempi, vedrai le cricche. http://snap.stanford.edu/snap/description.html dice about - cliques: trova sovrapposti gruppi densi di nodi nelle reti, in base al metodo di percolazione Clique. Come mai, non sono sicuro se lo farà in pochi secondi. – TechCrunch

+0

Comunque è molto interessante, grazie! – seinecle

0

COPRA è un algoritmo per la sovrapposizione comunità implementato in Java ed è molto veloce.

http://www.cs.bris.ac.uk/~steve/networks/software/copra.html

Altri link utili per la sovrapposizione cluster (non necessariamente scritto in Java) sono:

MOSES: cliquecluster.org/moses~~V~~plural~~3rd

OSLOM: oslom.org/

OVERMAP : bitbucket.org/dsign/grbracket/wiki/Home

Modello a blocchi stocastici: github.com/premgopalan/svinet

Problemi correlati