Heim > Backend-Entwicklung > C++ > Konstruieren Sie einen Graphen, der keine Paare benachbarter Knoten mit demselben Wert enthält

Konstruieren Sie einen Graphen, der keine Paare benachbarter Knoten mit demselben Wert enthält

王林
Freigeben: 2023-09-14 14:33:03
nach vorne
1044 Leute haben es durchsucht

Konstruieren Sie einen Graphen, der keine Paare benachbarter Knoten mit demselben Wert enthält

Bei dem erstellten Diagramm handelt es sich möglicherweise um einen Aktionsablauf mit nicht duplizierten Zentren, bei dem keine zwei benachbarten Zentren denselben Wert haben. Jeder Mittelpunkt stellt einen eindeutigen Wert dar, und Verbindungskanten verbinden Mittelpunkte, ohne Werte zu duplizieren. Das Diagramm spiegelt ein Design wider, das Vielfalt und Einzigartigkeit in den Vordergrund stellt und sicherstellt, dass benachbarte Zentren sich immer voneinander unterscheiden. Durch Befolgen dieser Regel erzeugen Diagramme eine fokussierte und visuell einzigartige Darstellung, die in so unterschiedlichen Bereichen wie Organisationsplanung, Informationsvisualisierung oder Ressourcenzuweisung relevant sein kann. Seine Struktur vermeidet langweilige Cluster und fördert dynamische und vielfältige Verbindungen zwischen Zentren, was zu einer lehrreicheren und ansprechenderen grafischen Darstellung beiträgt.

Anwendungsmethode

  • Rekursive Konstruktion

Rekursiver Build

Bei dieser Technik wird das Diagramm mithilfe rekursiver Funktionen erstellt. Der laufende Mittelpunkt, sein Wert und die Werteliste werden als Grenzen für die Funktion übergeben. Diese Funktion fügt bei jedem Schritt eine Kante mit einem alternativen Wert zu jedem aktuellen Hub hinzu. Wenn dies der Fall ist, bietet es einen Vorteil und erfordert rekursiv nachfolgende Werte. Wenn keine Verbindung zu einem geeigneten Hub hergestellt werden kann, kehrt es zum primären Hub zurück und versucht es mit anderen Werten.

Algorithmus

  • Zeichnen Sie zunächst ein klares Diagramm und listen Sie die erforderlichen Werte für jedes Zentrum im Diagramm auf.

  • Entwickeln Sie eine rekursive Funktion namens „constructGraph“, die drei Grenzen hat: den aktuellen Mittelpunkt, seinen Wert und eine Liste der verbleibenden Massen.

  • Gespeichert in der Funktion „constructGraph“:

  • a – Denken Sie an die fortlaufenden Zentren und Anreize, die mit dem Diagramm verbunden sind

  • b – Betonen Sie, dass Sie durch das Persistenzzentrum des Diagramms gehen, um zu sehen, ob sich darin Werte vom Persistenzzentrumswert unterscheiden.

  • a – Wenn wir einen Hub mit einem alternativen Wert finden, fügen Sie eine Kante zwischen dem aktuellen Hub und dem aktuellen Hub hinzu.

  • Mit dem fortlaufenden Zentrum als Startzentrum rufen Sie für jeden noch in der Liste vorhandenen Wert die Funktion „constructGraph“ wiederholt auf

Beispiel

#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;
}
Nach dem Login kopieren

Ausgabe

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 
Nach dem Login kopieren

Fazit

Jede dieser drei Strategien kann verwendet werden, um ein Diagramm zu erstellen, das keine benachbarten Mittelpunkte mit demselben Wert aufweist. Die gewählte Methode hängt von den konkreten Voraussetzungen, der offenen Informationsstruktur und der Komplexität des entstehenden Diagramms ab. Jede Methode bietet praktische Tipps für die Erstellung solcher Diagramme und kann auf komplexere Situationen erweitert werden.

Das obige ist der detaillierte Inhalt vonKonstruieren Sie einen Graphen, der keine Paare benachbarter Knoten mit demselben Wert enthält. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage