Erstellen Sie eine Matrix abhängig von zwei zufälligen Wanderungen in einem Graphen

8

Ich arbeite an einem Projekt und ich habe diesen Punkt erreicht, aber tatsächlich stecke ich seit einer Woche fest daran. Ich habe viele Ideen ausprobiert, aber alle Versuche, meinen Algorithmus zu programmieren, scheiterten.

Angenommen, wir haben das folgende einfache Diagramm:

Die Kanten in der Reihenfolge sind: 1--3 , 1--4 , 3--2

Für jede Kante wird auf jedem Knoten ein Random Walk definiert, um zu einem seiner Nachbarn zu gelangen:

Für die erste Kante, v1=1 ,v2=3, n1=3,4 und n2=1,2 in der Reihenfolge, also die möglichen Bewegungen von v1 und v2 sind:

%Vor%

Für die zweite Kante, v1=1 ,v2=4, n1=3,4 und n2=1 in der Reihenfolge, so sind die möglichen Bewegungen von v1 und v2:

%Vor%

Für die dritte Kante, v1=3 ,v2=2, n1=1,2 und n2=3 in der Reihenfolge, also sind die möglichen Bewegungen von v1 und v2:

%Vor%

Für den gesamten Graphen gibt es nur 8 mögliche Verschiebungen , also habe ich 8 Variablen, um die Constraints-Matrix zu konstruieren

Bezeichnen wir die Bewegungen nach x (gemäß ihrer Reihenfolge der Vorkommen); d. h.

%Vor%

Ich möchte die erforderliche Constraints-Matrix in Abhängigkeit von diesen Bewegungen erstellen, die Anzahl der Constraints ist gleich \sum{i} ( number of neighbors for v1(i) * number of neighbors for v2(i) ) , was 10 in unserem Graphen ist.

Mein Algorithmus zum Erstellen dieser Matrix ist:

%Vor%

Die resultierende Matrix nach diesem Algorithmus lautet:

%Vor%

Was ich nicht geschafft habe, ist: wie man die Matrix wissen lässt, dass es eine Bewegung gibt und sie durch 1 an ihrer Position ersetzt, und wenn es keine Bewegung gibt, um sie durch 0 zu ersetzen Position

Mein Code ist:

%Vor%

Ich suche nicht jemanden, der den Code schreibt. Ich möchte, dass das Programm zwischen den möglichen Bewegungen unterscheidet und die 1 und 0 in der geeigneten Position für die resultierende Bewegung speichert.

Vielen Vielen Dank für jede Art von Hilfe

    
user8003788 13.02.2018, 16:58
quelle

1 Antwort

2

Hier ist eine Lösung bestehend aus zwei Teilen

%Vor%

Die Zeilenreihenfolge ist anders, aber ich vermute, dass dies kein Problem ist. Für eine einzelne Kante können Sie auch edgeMoves(e) und edgeConstraints(e) * 1 verwenden.

    
Julius 20.02.2018, 02:34
quelle