Sprawdzanie, czy nie ma cykli w drzewie

0

witam,

mam listę tablic, gdzie w każdy element tablicy ma swoją nazwę oraz swoje "dzieci", które jak narysuje się to graficznie ma postać drzewa, tzn jest jeden element nadrzędny, a każdy pozostały jest albo pochodzi od niego, albo od innego elementu, który z niego pochodzi itp.

Otóż chodzi mi o to, jak sprawdzić, czy nie ma np takiej sytuacji

A->B->C->E
   B->D->A

i się w ten sposób utworzył cykl A->B->D->A. Jak nazywa się algorytm, który by sprawdzał, czy taki cykl istnieje?

0

Zrób z tego graf (jak rozumiem to jest graf z listą sąsiedztwa?) i puść DFS / BFS który w przypadku trafienia na już odwiedzony węzeł zasygnalizuje cykl.

0
  1. Wyszukaj korzeń - prosty sposób to odwrócenie krawędzi i wystartowanie z dowolnego wierzchołka.
    2a. Odwracamy krawędzie w oryginalnym kierunku, a z korzenia odpalamy DFS lub BFS.
    2b. Jeśli przy przeszukiwaniu trafiliśmy na już odwiedzony wierzchołek to mamy cykl, czyli na pewno nie jesteśmy w drzewie.
    2c. Jeśli startując z tego potencjalnego korzenia nie dało się odwiedzić wszystkich wierzchołków to znaczy że nie należą one do tego drzewa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1