private void prime(int index) { IVector <int> vertexSet = Vector <int> .VectorFactory(); vertexSet.Insert(index); IVector <int> vertexCutSet = CaluCutSet(index); Status(index, VStatus.Visited); while (true) { Tuple <int, int> edge = MimimumEdge(vertexSet, vertexCutSet); if (edge == null) { break; } vertexSet.Insert(edge.Item2); vertexCutSet.Remove(vertexCutSet.Find(edge.Item2)); Status(edge.Item2, VStatus.Visited); if (Exist(edge.Item1, edge.Item2)) { Status(edge.Item1, edge.Item2, EStatus.Tree); } else { Status(edge.Item2, edge.Item1, EStatus.Tree); } } }
public void Concat(IString other) { for (int i = 0; i < other.Length; i++) { _vector.Insert(other.CharAt(i)); } }
public override int Insert(TV e) { for (int i = 0; i < N; i++) { _e[i].Insert(null); } ++N; _e.Insert(CreateEdges()); _v.Insert(new Vertex <TV>(e)); return(_v.Size - 1); }
public void TestFind() { _vector.Insert(new Coordinate() { X = 0, Y = 0 }); Assert.AreEqual(_vector.Find(new Coordinate() { X = 0, Y = 0 }), 0); }
private IVector <BinNode <HuffChar> > InitHuffChars() { IVector <BinNode <HuffChar> > huffChars = Vector <BinNode <HuffChar> > .VectorFactory(); foreach (var charItem in _charweights.Keys) { huffChars.Insert(new BinNode <HuffChar>( new HuffChar(charItem, _charweights[charItem]))); } return(huffChars); }
private IVector <IVector <int> > BuildVertex() { IVector <IVector <int> > vertexs = Vector <IVector <int> > .VectorFactory(); for (int i = 0; i < N; i++) { IVector <int> vertex = Vector <int> .VectorFactory(); vertex.Insert(i); vertexs.Insert(vertex); } return(vertexs); }
/// <summary> /// 获取顶点的补集 /// </summary> /// <param name="index">起始的位置</param> /// <returns>返回</returns> private IVector <int> CaluCutSet(int index) { IVector <int> cutSet = Vector <int> .VectorFactory(); for (int i = 0; i < N; i++) { if (i != index && Status(i) != VStatus.Visited) { cutSet.Insert(i); } } return(cutSet); }
private void BuildTree() { IVector <BinNode <HuffChar> > huffchars = InitHuffChars(); while (huffchars.Size > 1) { Tuple <Int32, Int32> twoMin = FindTwoMin(huffchars, 0, huffchars.Size); int first = Math.Min(twoMin.Item1, twoMin.Item2); int second = Math.Max(twoMin.Item1, twoMin.Item2); var node1 = huffchars.Remove(second); var node2 = huffchars.Remove(first); BinNode <HuffChar> newNode = new BinNode <HuffChar>( new HuffChar('^', node1.Data.Weight + node2.Data.Weight), null, node1, node2); node1.Parent = newNode; node2.Parent = newNode; huffchars.Insert(newNode); } _huffmanRoot = huffchars[0]; }
public override void Push(T e) { _vector.Insert(e); }
private void InsertVector() { _vector.Insert(4); _vector.Insert(5); _vector.Insert(6); }