private void UpdateMaxDoublet(ref Doublet <TLink> doublet, LinkFrequency <TLink> data) { var frequency = data.Frequency; var maxFrequency = _maxDoubletData.Frequency; //if (frequency > _minFrequencyToCompress && (maxFrequency < frequency || (maxFrequency == frequency && doublet.Source + doublet.Target < /* gives better compression string data (and gives collisions quickly) */ _maxDoublet.Source + _maxDoublet.Target))) if (_comparer.Compare(frequency, _minFrequencyToCompress) > 0 && (_comparer.Compare(maxFrequency, frequency) < 0 || (_equalityComparer.Equals(maxFrequency, frequency) && _comparer.Compare(Arithmetic.Add(doublet.Source, doublet.Target), Arithmetic.Add(_maxDoublet.Source, _maxDoublet.Target)) > 0))) /* gives better stability and better compression on sequent data and even on rundom numbers data (but gives collisions anyway) */ { _maxDoublet = doublet; _maxDoubletData = data; } }
public HalfDoublet(TLink element, LinkFrequency <TLink> doubletData) { Element = element; DoubletData = doubletData; }
private void ResetMaxDoublet() { _maxDoublet = new Doublet <TLink>(); _maxDoubletData = new LinkFrequency <TLink>(); }