簡體   English   中英

循環圖中的對稱軸

[英]Axis of symmetry in cyclic graph

我必須用c ++編寫一個程序,該程序返回循環圖中對稱軸的數量。 當左側相對頂點或邊緣之間的值是右側值的鏡像時,循環圖具有對稱軸。 對稱軸可以與頂點和邊緣相交。

例如:

在此處輸入圖片說明

有什么方法可以比O(n^2)更快地執行此操作嗎?

nm的答案實際上幾乎是正確的,但無論如何都不是。

讓我們將節點之一稱為起始節點,將經過起始節點的軸稱為主軸。 在某個軸上翻轉圖形等於在主軸和旋轉上翻轉圖形:

圖片1

旋轉后,主節點可以放置在任何其他節點位置(並且我們也總是可以找到當前軸來執行此操作)。

如果我們將圖存儲為字符串,則由反向字符串描述的翻轉圖循環地移位0到N-1個位置。 這些字符串的相等意味着圖形的相等。 顯然,此類匹配的次數等於兩次重復圖形的字符串中出現反向字符串的次數:

圖片2

因此,是的,KMP具有O(N)復雜度。

但您應避免將str等於reverse(str)的情況,因為匹配將以0和N個移位進行計數,盡管它們描述的是同一根軸。 因此,在任何情況下,都不應使用str及其本身的串聯,而只能使用該串聯的第一個(2 * N – 1)個字符來實現正確的行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM