Me di cuenta de que Data.UnionFind utiliza la mónada IO para proporcionar punteros a través de IORefs. Me imagino que todos felizmente llaman al unsafePerformIO cuando lo usan localmente en código pur
Hay un algoritmo "Unión rápida ponderada con compresión de ruta". el código: public class WeightedQU
{
private int[] id;
private int[] iz;
public WeightedQU(int N)
{
id = n
Tengo un registro que describe un gráfico como conjuntos de nodos y bordes: data MyGraph a = MyGraph {
nodes :: Set a,
edges :: Set (a,a),
components :: UnionFindM a -- ?
}
emptyGraph