public void ComputeVertexInvariants() { var layerInvariants = new Dictionary <int, int[]>(); for (int i = 0; i < this.nodes.Count; i++) { DAG.Node node = this.nodes[i]; int j = node.vertexIndex; int[] layerInvariantsJ; if (layerInvariants.ContainsKey(j)) { layerInvariantsJ = layerInvariants[j]; } else { layerInvariantsJ = new int[this.layers.Count]; layerInvariants[j] = layerInvariantsJ; } layerInvariantsJ[node.layer] = invariants.GetNodeInvariant(i); } var invariantLists = new List <InvariantArray>(); foreach (var i in layerInvariants.Keys) { InvariantArray invArr = new InvariantArray(layerInvariants[i], i); invariantLists.Add(invArr); } invariantLists.Sort(); int order = 1; int first = invariantLists[0].originalIndex; invariants.SetVertexInvariant(first, 1); for (int i = 1; i < invariantLists.Count; i++) { InvariantArray a = invariantLists[i - 1]; InvariantArray b = invariantLists[i]; if (!a.Equals(b)) { order++; } invariants.SetVertexInvariant(b.originalIndex, order); } }
public void TestRank() { List <InvariantArray> list = MakeUnsortedList(); list.Sort(); int rank = 1; int[] ranks = new int[list.Count]; ranks[0] = 1; for (int i = 1; i < list.Count; i++) { InvariantArray a = list[i - 1]; InvariantArray b = list[i]; if (!a.Equals(b)) { rank++; } ranks[i] = rank; } int[] expecteds = { 1, 1, 2, 3, 4 }; Assert.IsTrue(Compares.AreEqual(expecteds, ranks)); }