Es Myriaden von Möglichkeiten sind Graphenstrukturen darzustellen. Ein solcher Weg ist mit einer Matrix. Jede Zeile und Spalte wird durch den Scheitelpunkt indiziert, und jede Zelle in der Matrix repräsentiert eine gerichtete (möglicherweise gewichtete) Kante. Eine einfache, zyklische Graph, mit 0'en, da keine Verbindungskante und 1 mit einer Verbindungskante wie so wäre:
| 0 1 |
| 1 0 |
Wie bei vielen unveränderlichen Strukturen, wie du dich konstruieren ist durch neue Strukturen der Rückkehr auf der Grundlage des gewünschte Beziehung gegebener Matrizen. Wenn wir zum Beispiel das obige Diagramm verwenden und eine Kante auf dem ersten Eckpunkt auf sich selbst zurückführen möchten, ist die Matrix, die das darstellt, gerade.
| 1 0 |
| 0 0 |
und um das mit der anderen Matrix zu kombinieren, fügen wir sie einfach zusammen.
| 0 1 | + | 1 0 | == | 1 1 |
| 1 0 | | 0 0 | | 1 0 |
Natürlich gibt es viele Möglichkeiten Matrizen darzustellen, mit unterschiedlichen Vor- und Nachteile für die Geschwindigkeit, Raum und bestimmte andere Operationen, aber das ist eine andere Frage.
Es scheint übrigens unmöglich für mich. – configurator
Eine gute Antwort wird sprachspezifisch sein. Sie sollten dies in Ihrer bevorzugten Sprache markieren. –
Lazy Evaluation verwenden und die Zyklen rekursiv definieren – Dario