Ho un problema che sembra il problema dei sottografi connectet da un miglio alto, ma è abbastanza distinto in quanto non rientra nelle definizioni rigorose.Algoritmo per identificare sottografi "fuzzily-connected"
Affronto un grafico con alcuni milioni di nodi e collegamenti (l'analisi manuale non è possibile), tra quei milioni di nodi, ci sono noti 2 o 3 "set".
Ciascuno degli "insiemi" comprende centinaia di millesimi di nodi e decine di millesimi sotto-grafici, non fortemente connessi. Ognuno di questi set non dovrebbe teoricamente essere collegato agli altri set ... ma ci sono (congetture) una dozzina di link errati che finiscono per connettere questi set.
Il problema è trovare questi set e i collegamenti errati, o almeno ottenere un elenco gestibile dall'uomo di collegamenti errati candidati che possono essere verificati manualmente.
La mia "migliore idea" corrente è quella di selezionare a caso due nodi, trovare il percorso più breve tra di loro, quindi contrassegnare i collegamenti su quel percorso più breve. Risciacquo & ripetere milioni di volte, e i collegamenti errati alla fine finiscono come quelli più marcati, in quanto sono "chokepoints" tra i set.
Tuttavia, questo è piuttosto lento, e quando un set è molto più grande degli altri e ha chokepoint interni, finisce per dominare la lista "più marcata", rendendola priva di significato.
Ci sono algoritmi/approcci migliori per questo?
edit: un perfezionamento della marcatura percorso è quello di segnare in proporzione con la lunghezza del percorso, che aiuta con le "strozzature interne di un grande insieme" problema, ma non si fa del tutto elimina come alcuni set possono avere distanti "valori anomali", mentre altri set hanno molti nodi strettamente collegati (brevi distanze interne)
L'esecuzione di un algoritmo min-cut tra due nodi casuali funziona? –