¿Cómo escribiría una función recursiva para contar el número de gráficos simples conectados con K bordes y N vértices claramente etiquetados?

La enumeración de subgrafos conectados de un gráfico, como el gráfico completo en vértices N en este caso, no es realmente un problema fácil, y hay algunas maneras igualmente eficientes de hacerlo de forma recursiva. Una buena solución es sugerida por el comentario de Zhao “el sub-gráfico N-1 se divide en islas” y esto se describe con gran detalle en mi nota citada a continuación. Curiosamente, es mucho más simple contar la suma * firmada * sobre todas las subgrafías conectadas de un gráfico, ya que este es solo el término lineal de su polinomio cromático.

“Una partición de gráficos conectados”. Electronic J. Combinatorics 12, N1 (2005), 8 pp. arXiv: matemáticas / 0505155.

Astracto: Definimos un algoritmo k que toma un gráfico G conectado en un conjunto de vértices totalmente ordenado y devuelve un árbol R creciente (que no es necesariamente un subárbol de G). Caracterizamos el conjunto de gráficos G de modo que k (G) = R. Debido a que este conjunto tiene una estructura simple (es isomorfo a un producto de conjuntos de potencia no vacíos), es fácil evaluar ciertos invariantes de gráficos en términos de árboles en aumento. En particular, demostramos que, hasta el signo, el coeficiente de x ^ q en el polinomio cromático de G es el número de bosques crecientes con componentes q que satisfacen una condición que llamamos conectividad G. También encontramos una biyección entre el aumento de árboles conectados a G y los subárboles libres de circuitos rotos de G.

Denotemos la función [matemáticas] f (N, K) [/ matemáticas]. Ahora, ¿cómo depende de los valores de [math] f (\ cdot, \ cdot) [/ math] con argumentos más pequeños?

Comencemos con una gráfica de vértices [matemática] N-1 [/ matemática], aristas [matemática] Kk [/ matemática]. ¿De cuántas maneras puedes agregar el vértice [matemático] N [/ matemático]? Deberá distribuir los bordes [matemáticos] k [/ matemáticos] entre el vértice [matemático] N [/ matemático] y los existentes; eso es [matemática] {N-1 \ elegir k} [/ matemática]. Ahora deberá sumar todos los valores posibles de [math] k [/ math].

Entonces la fórmula es [matemáticas] f (N, K) = \ sum_ {k = 1} ^ {N-1} {N-1 \ elegir k} f (N-1, Kk) [/ matemáticas] siempre [matemáticas ] K> = N-1 [/ matemática], o [matemática] 0 [/ matemática] de lo contrario.