PUERTA | Puerta TI 2005 | Pregunta 88

Q84 Parte_A
Un sumidero en un grafo dirigido es un vértice i tal que hay una arista desde cada vértice j ≠ i a i y no hay arista desde i a ningún otro vértice. Un grafo dirigido G con n vértices se representa por su array de adyacencia A, donde A[i][j] = 1 si hay una arista dirigida del vértice i al j y 0 en caso contrario. El siguiente algoritmo determina si hay un sumidero en el gráfico G.
i = 0
do {
    j = i + 1;
    while ((j < n) && E1) 
       j++;
    if (j < n) E2;
} while (j < n);

flag = 1;
for (j = 0; j < n; j++)
    if ((j! = i) && E3)
        flag = 0;

if (flag)
    printf("Sink exists");
else
    printf ("Sink does not exist");

Elige las expresiones correctas para E 1 y E 2

 
(A) E1: A[i][j] y E2: i = j;
(B) E1 : !A[i][j] y E2 : i = j + 1;
(C) E1: !A[i][j] y E2 : i = j;
(D) E1: A[i][j] y E2: i = j + 1;

Respuesta: (C)
Explicación: Para que el vértice i sea un sumidero, no debe haber ninguna arista desde i a ningún otro vértice.

sink

De acuerdo con la entrada dada en cuestión,

A[i][j] = 1 means there is an edge from vertex i to j.
A[i][j] = 0 means there is no edge from i to j

Para que un Node de i se sumidero,

A[i][j] should be 0 for all j 
A[j][i] should be 1 for all j.

El pseudocódigo anterior verifica cada vértice i en busca de sumidero, comenzando desde i = 0. Básicamente verifica cada vértice j después de i para ver si es un sumidero. El truco del pseudocódigo es que no busca j más pequeño que i. Es posible que el i seleccionado por este bucle no se sumide. Básicamente se asegura de que no ignoremos un sumidero potencial. La comprobación de si i es realmente un sumidero o no se realiza más tarde después del ciclo do while.

El vértice i es un sumidero potencial mientras que A[i][j] es cero
Por lo tanto, E1 : !A[i][j]

Si la condición anterior es falsa, entonces i no es un sumidero. Todo j < i tampoco puede ser un sumidero porque no hay un borde de i a j.
Ahora, el próximo sumidero potencial puede ser j.
Entonces, E2 : i = j

Por lo tanto, la opción (C) es correcta.

 

Cuestionario de esta pregunta

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *