Tengo un grafo con la siguiente estructura de datos (C#) :
Código:
public class Grafo
{
int count = 0;
Dictionary<int, string> nombrevertices;
Dictionary<int, Object> vertices;
Dictionary<int, ArrayList> adjacencias;
bool [] visitados;
string[] acum;
public Grafo()
{
vertices = new Dictionary<int, Object>();
adjacencias = new Dictionary<int, ArrayList>();
nombrevertices = new Dictionary<int, string>();
}}
El tema es que tengo que sacar que nodos con comunes a todas las rutas diferentes entre dos nodos dados. La idea está clara, calcular todas las rutas posibles, y ver que nodos son comunes a todas. Mi problema viene que no tengo claro como pasarlo a codigo. He pensado hacer recorridos en profundidad, donde cada no nodo visitado se añade a una lista de recorridos ya hechos y si llega al punto final, se devuelve ese conjunto. Con todos los conjunto ya solo sería ver si que nodos se repiten en las combinaciones resultantes. De momento llevo esto:
Código:
public int process(int A, int B)
{
visitados = new bool[ObterNumVertices()];
acum = new string[ObterNumVertices()];
return 0 ;
}
public int process2(int A, bool [] V)
{
V[A] = true;
int i;
int[] adj = new int[(ObterNumVertices())];
acum[A] = (string)(acum + nombrevertices[A]);
adj(ArrayList) = adjacencias[A];
for (i = 0; i < adjacencias.Count;i++ )
{
if (!V[i])
{
//process2((int)adjacencias[A][i],V);
}
}
return 0;
}
Gracias de antemano.