Etiquetar un borde con el número de ciclos que participa en

Aidenhjj:

Dado un gráfico G = (V, E), usando DFS, ¿cómo puedo etiquetar cada borde con el número de ciclos simples que participa en? Ya estoy etiquetado los nodos con un post-orden cuando puedo extraer los componentes fuertemente conectados en el gráfico, así que tal vez puede utilizar esa información de alguna manera.

private Integer labelEdges(Node currentNode, Set<Node> component) {

    Integer numLoops = 0;
    currentNode.onStack = true;

    for (Edge outEdge : currentNode.getEdges()) {
        Node nextNode = outEdge.getEnd();
        if (component.contains(nextNode)) {
            if (nextNode.onStack) {
                // loop
                numLoops += 1;
            }
            else {
                numLoops += labelEdges(nextNode, component);
            }
            outEdge.cycles = numLoops;
        }

    }
    currentNode.onStack = false;

    return numLoops;
}

Parece que no puedo razonar con claridad acerca de esto. ¿Puede mi punto cualquiera en la dirección correcta?

Josef Ginerman:

Es difícil dar una respuesta completa sin ver el código de conjunto, pero creo que esto ayudará. Tenga en cuenta que los enlaces que se proporcionan son para grafos no dirigidos.

Creo que se debe dividir el problema en dos:

1. Encontrar todos los ciclos en un gráfico (guardarlos en una tabla hash o similar)

2. Finding cuál de esos ciclos contiene cierto nodo.

Solución para 1: Para el primer paso hay una gran cantidad de algoritmos en línea, como éste que trabajaría con ajustes menores o éste que cuenta el número de ciclos y se puede cambiar para guardar los ciclos que encuentra.

Solución para 2: Esto depende de cómo guardar los ciclos, pero es un simple algoritmo de búsqueda.

Tenga en cuenta que esta solución no es óptima si solo deseas para encontrar la respuesta para un nodo de una vez, pero es realmente bueno si quieres ser capaz de encontrar el número de ciclos para cualquier nodo dado y en cualquier momento dado.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=187993&siteId=1
Recomendado
Clasificación