¿Existe una forma/algoritmo para determinar si hay un ciclo en un grafo si sólo tengo la matriz de adyacencia y no puedo visualizar el grafo?
Respuesta
¿Demasiados anuncios?Que los vértices de G ser etiquetado v1,…,vn y la matriz de adyacencia de G sea A con fila/columna i de A corresponden a vi .
Si desea un enfoque puramente algebraico lineal (aunque no constructivo), considere L=D−A , donde D es la matriz diagonal con (D)i,i=deg(vi) . Esta matriz se denomina Laplaciano matriz de G . Un hecho básico es que el número de veces que el cero aparece como un valor propio de L es decir, n−rank(L) es el número de componentes conectados de G .
Reclamación : G es acíclico si y sólo si trace(L)=2rank(L).
Equivalentemente, G tiene un ciclo si y sólo si trace(L)≥2(rank(L)+1).
Prueba : G es acíclico si y sólo si es un bosque, es decir, G tiene c componentes y exactamente n−c=rank(L) bordes. Por otro lado, por el Lema de Manipulación tenemos |E(G)|=12trace(L) . El reclamo es el siguiente.