首頁  >  文章  >  後端開發  >  建立一個圖,其中不包含任何具有相同值的相鄰節點對

建立一個圖,其中不包含任何具有相同值的相鄰節點對

王林
王林轉載
2023-09-14 14:33:031017瀏覽

建立一個圖,其中不包含任何具有相同值的相鄰節點對

建構的圖表可能是一個非重複的中心行動方案,其中沒有兩個相鄰的中心共享相同的價值。每個中心代表一個獨特的價值,連結邊連結中心而不重複價值。此圖表體現了多樣性和獨特性優先的設計,確保相鄰的中心之間始終不同。透過遵循這個規則,圖表培養了一個專注和視覺上獨特的表示,可以在組織規劃、資訊視覺化或資源分配等不同領域中具有相關性。它的結構避免了枯燥的集群,並促進了中心之間的動態和多樣化的聯繫,為更具教育性和吸引力的圖形表示做出貢獻。

使用的方法

  • 遞迴建構

遞迴構建

在此技術中,圖表是利用遞歸功能建構的。正在運作的中心、其價值以及價值清單都作為功能的邊界傳遞。此功能致力於在每一步向任何當前集線器添加具有替代值的邊緣。如果確實如此,它會增加優勢並遞歸地要求隨後的值。如果它無法與適當的集線器連接,它會返回主集線器並嘗試其他值。

演算法

  • 首先繪製清晰的圖表,並列出圖表中每個中心所需的值。

  • 開發一個名為「constructGraph」的遞歸功能,它有三個邊界:目前中心、其價值以及剩餘品質的清單。

  • 儲存在「constructGraph」功能中:

  • a-記住正在進行的中心和與圖表相關的激勵

  • b-強調透過圖表的持續中心來查看其中是否有任何值與持續中心的值不同。

  • a-如果我們找到具有替代值的集線器,則在目前集線器和目前集線器之間新增一條邊。

  • 將持續的中心作為起始中心,對於清單中仍然存在的每個值,重複呼叫"constructGraph"功能

範例

#include <iostream>
#include <vector>
using namespace std;

const int N = 5; // Number of nodes in the graph

class Graph {
public:
   vector<int> graph[N];

   void constructGraph(int currentNode, int currentValue, vector<int>& 
remainingValues) {
      graph[currentNode].push_back(currentValue);
      for (int i = 0; i < N; ++i) {
         if (i != currentNode) {
            for (int j = 0; j < remainingValues.size(); ++j) {
               int nextValue = remainingValues[j];
               remainingValues.erase(remainingValues.begin() + j);
               constructGraph(i, nextValue, remainingValues);
               remainingValues.insert(remainingValues.begin() + j, nextValue);
            }
         }
      }
   }
};

int main() {
   Graph g;
   vector<int> values = {1, 2, 3};
   g.constructGraph(0, 0, values);

   for (int i = 0; i < N; ++i) {
      cout << "Node " << i << ": ";
      for (int neighbor : g.graph[i]) {
         cout << neighbor << " ";
      }
      cout << endl;
   }

   return 0;
}

輸出

Node 0: 0 2 3 3 2 3 2 3 2 1 3 3 1 3 1 3 1 1 2 2 1 2 1 2 1 2 3 3 2 3 2 3 2 1 3 
3 1 3 1 3 1 1 2 2 1 2 1 2 1 2 3 3 2 3 2 3 2 1 3 3 1 3 1 3 1 1 2 2 1 2 1 2 1 2 
3 3 2 3 2 3 2 1 3 3 1 3 1 3 1 1 2 2 1 2 1 2 1 
Node 1: 1 3 2 3 2 3 2 3 2 2 3 1 3 1 3 1 3 1 3 2 1 2 1 2 1 2 1 3 2 2 3 3 2 3 2 
3 1 1 3 3 1 3 1 2 1 1 2 2 1 2 1 3 2 2 3 3 2 3 2 3 1 1 3 3 1 3 1 2 1 1 2 2 1 2 
1 3 2 2 3 3 2 3 2 3 1 1 3 3 1 3 1 2 1 1 2 2 1 2 1 
Node 2: 3 2 2 3 3 2 3 2 3 1 1 3 3 1 3 1 2 1 1 2 2 1 2 1 1 3 2 3 2 3 2 3 2 2 3 
1 3 1 3 1 3 1 3 2 1 2 1 2 1 2 1 3 2 3 2 2 3 3 2 3 1 3 1 1 3 3 1 2 1 2 1 1 2 2 
1 3 2 3 2 2 3 3 2 3 1 3 1 1 3 3 1 2 1 2 1 1 2 2 1 
Node 3: 3 2 3 2 2 3 3 2 3 1 3 1 1 3 3 1 2 1 2 1 1 2 2 1 3 2 3 2 2 3 3 2 3 1 3 
1 1 3 3 1 2 1 2 1 1 2 2 1 1 3 2 3 2 3 2 3 2 2 3 1 3 1 3 1 3 1 3 2 1 2 1 2 1 2 
1 3 2 3 2 3 2 2 3 3 1 3 1 3 1 1 3 2 1 2 1 2 1 1 2 
Node 4: 3 2 3 2 3 2 2 3 3 1 3 1 3 1 1 3 2 1 2 1 2 1 1 2 3 2 3 2 3 2 2 3 3 1 3 
1 3 1 1 3 2 1 2 1 2 1 1 2 3 2 3 2 3 2 2 3 3 1 3 1 3 1 1 3 2 1 2 1 2 1 1 2 1 3 
2 3 2 3 2 3 2 2 3 1 3 1 3 1 3 1 3 2 1 2 1 2 1 2 1 

結論

可以利用這三種策略中的任何一種來製作不具有任何具有相同值的相鄰中心的圖表。所選的方法取決於特定的先決條件、開放的資訊結構以及即將出現的圖表的複雜性。每種方法都提供了製作此類圖表的實用技巧,並且可以擴展以解決更複雜的情況。

以上是建立一個圖,其中不包含任何具有相同值的相鄰節點對的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除