¿Cuál es el peor caso de complejidad temporal de BFS (cuando se busca un elemento), sin almacenar los estados visitados?

Realmente no hay suficientes datos para responder: depende de las propiedades estructurales de la estructura de datos en la que estamos buscando.

Sin más información, podemos decir que no se debe visitar ningún nodo (vértice) ni borde más de una vez, en adelante O (| V | + | E |).

El borde | E | No se debe olvidar el término porque en algunos casos (como gráficos altamente conectados) puede ser mucho mayor que el número de nodos. En un árbol podemos ignorarlo.

Búsqueda de amplitud primero – Wikipedia

Tenga en cuenta que si usa BFS en un gráfico, necesita una forma de romper bucles, o el algoritmo será incorrecto. Una forma de hacerlo es almacenar los estados visitados o marcarlos. Si no tiene forma de romper los bucles, la respuesta no debe ser sobre la complejidad sino sobre la corrección del algoritmo.

No hay problemas para los árboles, pero aún tiene que almacenar futuros nodos para visitar, ese es el principio del algoritmo BFS. Me pregunto de dónde viene su restricción “sin almacenar los estados visitados”. Parece muy poco BFS, ya que generalmente BFS se usa en contextos donde la complejidad del espacio O (| V |) no es un problema.

Puede hacer un gráfico para que el tiempo de ejecución sea exponencial en el número de nodos cuando agregue ciegamente nodos adyacentes a la cola sin verificar si ya se han visitado o agregado. Un ejemplo es un gráfico bipartito completo con una cadena lineal larga unida a un lado, donde el nodo buscado está al final de esa cadena y el nodo inicial está en la parte altamente conectada.

Suponga que la cadena lineal tiene n / 3 nodos de longitud, y también lo es cada mitad de la parte bipartita completa. La primera ronda agrega ~ n / 3 nodos a la cola. La segunda ronda agrega ~ n ^ 2/9 nodos a la cola. La tercera ronda agrega ~ n ^ 3/27 nodos a la cola y así sucesivamente. Esto continúa durante n / 3 rondas, lo que significa que es O (n ^ n) al final.

Infinito (por ejemplo, en la situación en que el elemento deseado no existe), simplemente volvería a visitar los mismos nodos nuevamente.