Cómo construir un gráfico si se proporciona el recorrido DFS y el recorrido BFS

Para hacer el gráfico a partir de una secuencia DFS dada, haga lo siguiente: –

Haga una pila y presione el primer nodo de la secuencia en la pila.

Ahora, recorra desde el segundo nodo de la secuencia hasta el final empujándolos dentro de la pila y luego retirándolos de acuerdo con la siguiente receta:

CN = nodo actual; TS = Parte superior de la pila

  1. SI CN no es igual a TS, marque TS-CN como un borde y empuje CN a la Pila. Continuar atravesando
  2. Si CN es igual a TS, elimine TS de la pila. Continúa atravesando.

Ejemplo:

Supongamos que el recorrido del gráfico DFS dado es – AEFFGGEBDDCCBA

Al principio, haremos una pila y empujaremos el primer nodo, es decir, ‘A’.

Pila = [A]

Ahora atravesaremos la matriz desde el siguiente nodo en la secuencia, es decir, ‘E’ hasta el final.

  • A [matemáticas] \ neq [/ matemáticas] E. Edge-1 = AE. Pila = [A, E]
  • E [matemáticas] \ neq [/ matemáticas] F. Edge-2 = EF. Pila = [A, E, F]
  • F = F. Retire F de la pila. Pila = [A, E]
  • E [matemáticas] \ neq [/ matemáticas] G. Edge-3 = EG. Pila = [A, E, G]
  • G = G. Eliminar G de la pila. Pila = [A, E]
  • E = E. Retire E de la Pila. Pila = [A]
  • A [matemáticas] \ neq [/ matemáticas] B. Edge-4 = AB. Pila = [A, B]
  • B [matemáticas] \ neq [/ matemáticas] D. Edge-5 = BD. Pila = [A, B, D]
  • D = D. Retire D de la pila. Pila = [A, B]
  • B [matemáticas] \ neq [/ matemáticas] C. Borde-6 = BC. Pila = [A, B, C]
  • C = C. Retire C de la pila. Pila = [A, B]
  • B = B. Retire B de la pila. Pila = [A]
  • A = A. Retire A de la pila. Pila = []

Ahora tiene los bordes necesarios: –

AE, EF, EG, AB, BD, BC.

ps: este es el método que utilicé para resolver el siguiente problema: –

Juez en línea UVa 12582 – Boda del sultán

No estoy seguro de si este es el método correcto o no.

Si esta respuesta es incorrecta, comente. Lo borraré

Suponiendo un recorrido DFS en orden,

BFS: ABCDEFGHIJKLMNO
DFS: ABDHIEJKCFLMGNO

  1. Es obvio que A es root
  2. Por BFS, sabemos que BCD … .MNO está al menos en el nivel 2.
  3. De BFS, tenemos BCD, y de DFS, tenemos BD …..C ….
    Por lo tanto, D es el hijo inmediato de B, mientras que C está en el mismo nivel, es decir, hijo de A.
  4. Por lo tanto, tiene subárboles de B y C de DFS.
    A B DHIEJK C FLMGNO
  5. Repita para subárboles