What are good algorithms for finding connected components in a graph defined by a set of elements X
, where each x
in X
is itself a set of features f
and a Boolean connectivity function (defined by generalization/subsumption) c(x,x')
?
c(x,x') = True if generalizes(x,x') or generalizes(x',x) else False
generalizes(x,x') = True if x-x'==set([]) else False
The point is not to build the entire graph (partially ordered set) in the first place but to use c(x,x')
as an oracle to query while computing component labels on the fly.
This can also be seen as finding weakly connected components of the DAG given by the partial order of the subset relation, but I think perhaps for this algorithm it could be better to have c
return True
more often, so I view the DAG as undirected and then define the task.