2015-12-21 39 views
3

我最近在亞馬遜採訪中遇到了一個問題,並想知道堆棧溢出的相同意見。如何檢測定向圖中週期的循環

問題是

輸入:通過鄰接表表示有向圖

所需的輸出:這個圖形在一個週期內有一個週期,如果是那些是什麼週期。 循環條件中的循環定義如下:圖中有兩個循環C1和C2,它們共享一個或多個邊,然後它們將被稱爲循環中的循環。波紋管

實施例:
Cycle in a cycle

在上述圖中的一個可以看到有2個cylces C-> D-> E-> F-> G-> H-> C和另一個週期表示以H - > I-> J-> G-> H ..我們可以看到這2個週期的邊緣G-> H作爲共享邊緣,因此我們可以將它們稱爲週期中的週期。

So tha answer will be yes there are cycles in a cycles and 
the cyles are C->D->E->F->G->H->C and H->I->J->G->H 

我在採訪的方法是檢測(經由DFS遍歷)所有周期,並且一旦檢測到在保持哈希映射有邊緣。然後,當發現另一個週期時,我再次推他們在散列。這被禮貌地拒絕了,他沒有進一步討論就進一步採訪了。然後我發現找到所有的週期是一個難題。我很困惑 。有人可以澄清。

+0

一個基本週期檢測首先被問及我用dfs方法編碼,他對此感到滿意。 – MAG

+1

有關於圖論的標準書籍,其中包括圖表中檢測週期的算法。 – MWiesner

+0

如果我無法表達問題,我很抱歉。需要的輸出是這個圖在一個循環中有一個循環,如果是,那麼這些循環是什麼。我更新了他想要的結果的問題。 – MAG

回答

1
  1. 找到所有的循環
  2. 檢查每一對循環的邊緣之間的非空交叉點(如果交集不爲空的兩個週期是在一個週期一個週期)