簡體   English   中英

是否有可能開發一種解決圖形同構的算法?

[英]Is it possible to develop an algorithm to solve a graph isomorphism?

還是我需要為每個唯一的圖形開發一種算法? 為用戶提供了一種圖形,然后應該使用界面將節點和邊添加到初始圖形。 然后,他們提交圖形,並假定算法確認用戶圖形是否與給定圖形匹配。

該算法不僅需要確認每個節點的鄰居,還需要確認每個節點和每個邊具有正確的值。 初始圖將始終具有根節點,這是算法可從其開始的地方。

我想知道我是否可以在一般意義上為這種算法開發邏輯,還是我需要為每個唯一的圖實際編碼一個唯一的算法。 如果是后一種情況,這沒什么大不了的,因為我只有大約20個唯一的圖。

謝謝。 我希望我很清楚。

圖同構問題可能並不難。 但是很難證明這個問題並不難。

此問題有三種可能性。
1.圖同構問題是NP-hard的
2.圖同構問題具有多項式時間解。
3.圖同構問題既不是NP-hard也不是P。

如果兩個圖是同構的,則該同構存在一個排列。 以這個排列為證,我們可以證明這兩個圖在多項式時間內是同構的。 因此,圖同構位於NP集的范圍內。 但是,已經有30多年沒有人能夠證明這個問題是NP難題還是P難題了。因此,盡管對問題進行了簡單的描述,但從本質上講,這個問題卻很難解決。

如果我正確理解了這個問題,則可以使用一個單一算法,該算法將接受多個參考圖之一作為其輸入(除了要聲明與參考圖同構的未知圖的輸入之外)。

看來,你在尋求獲得一個給定的圖是否是完全相同的另一個圖,而不是如果圖形相對於一組特定的操作或特性的同構斷言。 這意味着向該算法提供了一些特定的參考圖,而不是根據某些“抽象”規則(例如,兩個圖是否都沒有循環,還是兩個圖都已完全連接等)進行工作,即使這些圖可能以其他方式有所不同。

確認后, 編輯
是的,將為該算法提供一個參考圖(即答案),然后將檢查用戶圖以查看該參考圖是否同構(包括邊和節點的值)

在那種情況下, 是的,很有可能開發出一個相對簡單的算法來斷言這兩個圖的同構。 請注意,其他評論和答案中提到的考慮因素以及與問題可能是NP-Hard的事實有關,僅表示簡單的算法(或任何與此問題有關的算法)可能不足以合理數量地解決問題大小和復雜度太大的圖的時間 但是,假設圖相對較小,並且利用了邊緣和節點的權重也需要匹配的要求(!),通常應采用以下算法。

總體思路
對於與圖的其余部分斷開連接的每個子圖,在用戶圖中標識一個(或可能幾個)節點,這些節點必須與參考圖的特定節點匹配。 通過遵循來自該節點的路徑(以一種有序的方式,請參見下文中的更多內容),聲明其他節點的身份和/或確定存在一些無法匹配的節點(因此這兩個結構不是同構的)。

粗糙的 偽代碼
1.對於參考圖和用戶提供的圖,請列出其 連接組件的列表,即其中與圖的其余部分斷開連接的子圖的列表。 通過從給定節點開始遵循廣度優先或深度優先的路徑,並使用任意[通常為增量]元素ID號“標記”該路徑上的所有節點,可以找到這些連接的組件。 一旦完全訪問了給定的路徑,請從任何其他未標記的節點重復該操作,直到沒有其他未標記的節點為止。

2.建立每個圖的特征的“數據庫” 這將有助於識別匹配的候選者,並在早期確定非同構實例。 每個“數據庫”將具有兩種“記錄”:節點和邊緣,分別具有以下字段:-node_id,Connected_element_Id,節點權重,輸出邊緣數,輸入邊緣數,輸出邊緣權重之和,傳入邊的權重。 節點-edge_id,Connected_element_Id,邊緣權重,node_id_of_start,node_id_of_end,weight_of_start_node,weight_of_end_node

3.建立每個圖的連接元素數據庫
每個記錄應具有以下字段:Connected_element_id,節點數,邊數,節點權重之和,邊權重之和。

4. [可選地] 分發非同構的簡單情況
4.連接的元素數量不匹配
4.b連接元素的數量不匹配,按除ID外的所有字段分組(節點數,邊數,節點權重之和,邊權重之和)

5.對於參考圖中的每個連接的元素
5.1在用戶提供的圖中標識匹配的連接元素的候選項。 候選對象必須具有相同的連接元素特征(節點數,邊數,節點權重之和,邊權重之 ), 並且包含相同的節點和邊列表,同樣,除ID外,還按所有特征分組。
5.2對於每個候選對象,最后確定其確認為相對於參考圖中相應連接元素的同構圖。 這是通過從候選節點匹配開始的,即希望是唯一的,在兩個圖上具有完全相同特征的節點開始。 如果沒有這樣的節點,則需要取消每個可能的候選者的資格,直到可以確認同構(或耗盡所有候選者)。 對於候選節點匹配,根據邊的方向和權重以及節點的權重,首先遍歷圖,然后查找其他節點的匹配項。

該算法的主要技巧是保持對候選對象的正確計算(無論候選連接元素是較高級別的候選元素還是較低級別的候選節點),並且還應記住並標記其他已標識的項目(如果未標記則將其取消標記)某種程度上,假設的候選人最終被證明是不可行的。)

我意識到以上內容沒有正式的算法描述,但是您應該決定要實現什么,以及可能的起點。

您可以指出,匹配節點和邊緣權重的要求似乎是斷言同構的另一個困難 ,由於底層的節點/邊緣特性使它們更具獨特性,因此有效簡化了算法,從而使算法更有可能a)查找唯一的節點候選者,並且b)快速找到路徑上的其他候選者和/或快速斷言非同構。

暫無
暫無

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

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