public IActionResult Index(DynamicConnectivityModel model) { if (ModelState.IsValid && model.elementsCount > 0) { QuickFind quickFind = new QuickFind(model.elementsCount); if (model.unions != null) { string[] pairStrings = model.unions.Split("\r\n"); string[] pair = new string[2]; for (int i = 0; i < pairStrings.Length; i++) { pair = pairStrings[i].Split(" "); int.TryParse(pair[0], out int a); int.TryParse(pair[1], out int b); quickFind.Union(a, b); } } model.collection = quickFind.array; } else { model.elementsCount = 10; } return(View(model)); }
public KruskalMst(EdgeWeightedGraph graph) { _mst = new Queue <Edge>(); var edges = graph.Edges(); Array.Sort(edges, (edge, edge1) => edge.CompareTo(edge1)); var vertices = graph.Vertices(); var uf = new QuickFind(vertices.Length); var count = 0; while (count < edges.Length && _mst.Count < vertices.Length - 1) { var edge = edges[count]; var v = edge.Either(); var w = edge.Other(v); if (!uf.Connected(v, w)) { uf.Union(v, w); _mst.Enqueue(edge); } count++; } }
public void IsConnected_NodesAreNotConnected_ReturnsFalse() { QuickFind quickFind = new QuickFind(5); quickFind.Union(1, 2); Assert.IsFalse(quickFind.IsConnected(2, 3)); }
public void IsConnected_NodesAreConnected_ReturnsTrue() { QuickFind quickFind = new QuickFind(5); quickFind.Union(1, 2); Assert.IsTrue(quickFind.IsConnected(1, 2)); }
public void IsConnected_MultipleUnions_ReturnsTrue() { QuickFind quickFind = new QuickFind(5); quickFind.Union(1, 2); quickFind.Union(2, 3); Assert.IsTrue(quickFind.IsConnected(1, 3)); }
public void DemoTest() { IUnionFind uf = new QuickFind(10); uf.Union(4, 3); int[] ids = uf.GetIds(); Assert.AreEqual(3, ids[3]); Assert.AreEqual(3, ids[4]); uf.Union(3, 8); ids = uf.GetIds(); Assert.AreEqual(8, ids[3]); Assert.AreEqual(8, ids[4]); uf.Union(6, 5); ids = uf.GetIds(); Assert.AreEqual(5, ids[5]); Assert.AreEqual(5, ids[6]); uf.Union(9, 4); ids = uf.GetIds(); Assert.AreEqual(8, ids[4]); Assert.AreEqual(8, ids[9]); uf.Union(2, 1); ids = uf.GetIds(); Assert.AreEqual(1, ids[1]); Assert.AreEqual(1, ids[2]); Assert.IsTrue(uf.Connected(8, 9)); Assert.IsFalse(uf.Connected(5, 0)); uf.Union(5, 0); ids = uf.GetIds(); Assert.AreEqual(0, ids[0]); Assert.AreEqual(0, ids[5]); Assert.AreEqual(0, ids[6]); uf.Union(7, 2); ids = uf.GetIds(); Assert.AreEqual(1, ids[1]); Assert.AreEqual(1, ids[2]); Assert.AreEqual(1, ids[7]); uf.Union(6, 1); ids = uf.GetIds(); Assert.AreEqual(1, ids[0]); Assert.AreEqual(1, ids[1]); Assert.AreEqual(1, ids[2]); Assert.AreEqual(8, ids[3]); Assert.AreEqual(8, ids[4]); Assert.AreEqual(1, ids[5]); Assert.AreEqual(1, ids[6]); Assert.AreEqual(1, ids[7]); Assert.AreEqual(8, ids[8]); Assert.AreEqual(8, ids[9]); }
public void IsConnected_UnionOfConnectedNodes_ReturnsTrue() { QuickFind quickFind = new QuickFind(5); quickFind.Union(1, 2); quickFind.Union(4, 5); quickFind.Union(1, 4); Assert.IsTrue(quickFind.IsConnected(2, 4)); }
public void InitWorks() { IUnionFind uf = new QuickFind(10); int[] ids = uf.GetIds(); for (int i = 0; i < 10; i++) { Assert.AreEqual(i, ids[i]); } }
public void QuickFindTest() { var pqPairs = CreatePairs(); var qf = new QuickFind(10); int[] arr = qf.DoSearch(pqPairs); //all items are now connected - all indexes are 1 Assert.IsFalse(arr.Any(i => i != 1)); }
public override object Clone() { var obj = new QuickFind( FindWhat, LookIn, MatchCase, MatchWholeWord, SearchUp, SearchType); return(obj); }
public void QuickFind_TinyFile_True() { var dots = new Dots(@"DataStore\tinyUF.txt"); var quickFind = new QuickFind(dots.Count); foreach (Tuple <int, int> item in dots.Items) { if (quickFind.Connected(item.Item1, item.Item2)) { continue; } quickFind.Union(item.Item1, item.Item2); } Assert.Equal(2, quickFind.Count); }
public void TestingUFQuickFind() { var unionFind = new QuickFind(10); unionFind.Union(4, 3); unionFind.Union(3, 8); unionFind.Union(6, 5); unionFind.Union(9, 4); unionFind.Union(2, 1); unionFind.Union(8, 9); unionFind.Union(5, 0); unionFind.Union(7, 2); unionFind.Union(6, 1); unionFind.Union(1, 0); unionFind.Union(6, 7); }
public void test_union_find() { var uf = new QuickFind(10); uf.Union(1, 3); uf.Union(2, 3); uf.Union(5, 6); uf.Union(4, 5); Assert.True(uf.IsConnected(1, 3)); Assert.True(uf.IsConnected(2, 3)); Assert.True(uf.IsConnected(1, 2)); Assert.True(uf.IsConnected(4, 5)); Assert.True(uf.IsConnected(4, 6)); Assert.False(uf.IsConnected(1, 6)); Assert.False(uf.IsConnected(3, 4)); this.logger.WriteLine("Connected: {1, 2, 3}"); }
public void TestQuickFind() { var input = new List <int[]>() { new int[] { 1, 3 }, new int[] { 1, 4 }, new int[] { 8, 9 } }; var N = 10; var uf = new QuickFind(N); foreach (var item in input) { uf.Union(item[0], item[1]); } Assert.Equal(uf.Connected(3, 4), true); Assert.Equal(uf.Connected(9, 0), false); }
public ScriptEditView(PluginMain main, bool highlight = false) { InitializeComponent(); InitializeAutoComplete(); Icon = Icon.FromHandle(Resources.ScriptIcon.GetHicon()); _main = main; _quickFind = new QuickFind(this, _codeBox); _codeBox.BorderStyle = BorderStyle.None; _codeBox.Dock = DockStyle.Fill; _codeBox.Styles[Style.Default].Font = StyleManager.Style.FixedFont.Name; _codeBox.Styles[Style.Default].SizeF = StyleManager.Style.FixedFont.Size; _codeBox.Styles[Style.Default].ForeColor = StyleManager.Style.TextColor; _codeBox.Styles[Style.Default].BackColor = StyleManager.Style.BackColor; _codeBox.StyleClearAll(); _codeBox.CharAdded += codeBox_CharAdded; _codeBox.InsertCheck += codeBox_InsertCheck; _codeBox.KeyDown += codebox_KeyDown; _codeBox.MarginClick += codeBox_MarginClick; _codeBox.SavePointLeft += codeBox_SavePointLeft; _codeBox.SavePointReached += codeBox_SavePointReached; _codeBox.TextChanged += codeBox_TextChanged; _codeBox.UpdateUI += codeBox_UpdateUI; Controls.Add(_codeBox); InitializeMargins(); if (highlight) { _codeBox.Lexer = Lexer.Cpp; InitializeHighlighting(""); InitializeFolding(); } StyleManager.AutoStyle(this); }
public void QuickFind_ReflexiveCheck() { var quickFind = new QuickFind(10); ReflexiveCheck(quickFind); }
public override object Clone() { var obj = new QuickFind( FindWhat, LookIn, MatchCase, MatchWholeWord, SearchUp, SearchType); return obj; }
public void SetUp() { _quickFind = new QuickFind(10); }
public void QuickFind_SymmetricCheck() { var quickFind = new QuickFind(10); SymmetricCheck(quickFind); }
public void QuickFind_TwoSites() { var quickFind = new QuickFind(10); TwoSitesCheck(quickFind); }
public QuickFindTests() { _unionFind = new QuickFind(_numberOfElements); }
public QuickFindItem(QuickFind parent, string fullpath) { m_parent = parent; m_fullpath = fullpath; }
public void TestQuickFind() { UnionFind unionFind = new QuickFind(count); this.TestUnionFind(unionFind); }
public void QuickFind_TransitiveCheck() { var quickFind = new QuickFind(10); TransitiveCheck(quickFind); }
public QuickFindTest() { _quickFind = new QuickFind(10); Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US"); }
public void QuickFind_AllConnected() { var quickFind = new QuickFind(10); AllConnectedCheck(quickFind); }
public void QuickFindTest() { var dc = new QuickFind(10); DynamicConnectivityTestRuner.RunTests(dc); }