eae pessoal blz?
bom quanto a isso tenhu uma sugestão
vc’s podem usar o conceito de busca binaria somado com o conveito de percurso em grafo
bom usando o modelo de busca binaria RED, tera que ser feita algumas modificações quanto a estrutura do algoritmo
como um grafo é uma arvore de n braços no o sistema de busca tera que ser mudado para o genero
R ListaBraços ED
visitando as arestas de cada vertice do sentido da esquerda para a direita, ou caso essas arestas estejam armazenadas como uma lista simplesmente encadeada, percorrer a lista de arestas visitando cada aresta
paremetro para o algoritmo Origem e Destino
onde antes vc vai ter que localizar o seu vertice de Origem para entaum começar a sua busca
agora como o caso de busca bidirecional
vc pode pensar no seguinte tendo uma classe de busca que implementa esse modelo
vc tera duas threads que executarão a busca uma que tem um objeto da classe de busca recebera os paremetros de busca
Origem :arrow: Destino
e a outra thread
Destino :arrow: Origem
onde devera tb ter mais duas funcionalidades implementadas um método que te permitira verifica e compara a posição atual da busca entre as duas threads e outra funcionalidade tem um local onde será armazrenado o percurso ateh o atual momento
sendo a busca encerrada de acordo com os estados:
:arrow: posição atual no grafo da primeira busca que está sendo executada pela primeira thread igual a posição atual no grafo da segunda busca implementada na segunda thread
:arrow: localizar um caminho entre a Origem e o Destino em qq das duas threads disparadas
:arrow: todos os vertices segundo um controle de percurso marcados como visitados
mais ou menos esse esquema 
:roll: procurem fundir os conhecimento de estrutura de dados com os comecimento de teoria de grafos para criar as adaptações necessarias no modelo de busca RED em arvore binária 
[]'s manos