public static HasseNodeCollection BruteForceFindGlb(HasseNode @ref, HasseNodeCollection AllNodes) { if (@ref.KeyString.Equals("x")) { System.Diagnostics.Debugger.Break(); } HasseNodeCollection glb = new HasseNodeCollection(); List <string> ToBeRemoved = new List <string>(); foreach (HasseNode Node in AllNodes.Values) { if (@ref.IsLargerThan(Node)) { glb.Add(Node.KeyString, Node); } } foreach (HasseNode Node in glb.Values) { foreach (HasseNode Node2 in glb.Values) { if (Node != Node2) { if (Node.IsLargerThan(Node2)) { ToBeRemoved.Add(Node2.KeyString); } // break; } } } foreach (string key in ToBeRemoved) { glb.Remove(key); } return(glb); }
public static HasseNodeCollection FindGlb(HasseNode ReferenceNode, HasseNodeCollection AllNodes) { bool dbg = Convert.ToBoolean(DEBUGLEVEL & LOG_DEBUG_MAKE_GLB); HasseNodeCollection glb = new HasseNodeCollection(); //List<string> ToBeRemoved = new List<string>(); HashSet <string> ToBeRemoved = new HashSet <string>(); foreach (HasseNode Node in AllNodes.Values) { if (!ToBeRemoved.Contains(Node.KeyString)) { System.Diagnostics.Debug.WriteLineIf(dbg, "test if " + ReferenceNode.KeyString + " is larger than " + Node.KeyString); if (ReferenceNode.IsLargerThan(Node)) { System.Diagnostics.Debug.WriteLineIf(dbg, " yes - is glb candidate, delete below..."); glb.Add(Node.KeyString, Node); FindNodesBelow(Node, ToBeRemoved, 0); } /* else if (Node.IsLargerThan(ReferenceNode)) * { * DeleteNodesAbove(Node, ToBeRemoved, 0); * } */ else { ToBeRemoved.Add(Node.KeyString); } } } foreach (string key in ToBeRemoved) { glb.Remove(key); } return(glb); }
public static HasseNodeCollection FindGlb(HasseNode ReferenceNode, HasseNodeCollection AllNodes) { bool dbg = Convert.ToBoolean(DEBUGLEVEL & LOG_DEBUG_MAKE_GLB); HasseNodeCollection glb = new HasseNodeCollection(); //List<string> ToBeRemoved = new List<string>(); HashSet<string> ToBeRemoved = new HashSet<string>(); foreach (HasseNode Node in AllNodes.Values) { if (!ToBeRemoved.Contains(Node.KeyString)) { System.Diagnostics.Debug.WriteLineIf(dbg, "test if " + ReferenceNode.KeyString + " is larger than " + Node.KeyString); if ( ReferenceNode.IsLargerThan(Node)) { System.Diagnostics.Debug.WriteLineIf(dbg, " yes - is glb candidate, delete below..."); glb.Add(Node.KeyString, Node); FindNodesBelow(Node, ToBeRemoved, 0); } /* else if (Node.IsLargerThan(ReferenceNode)) { DeleteNodesAbove(Node, ToBeRemoved, 0); } */ else ToBeRemoved.Add(Node.KeyString); } } foreach (string key in ToBeRemoved) { glb.Remove(key); } return (glb); }
public static HasseNodeCollection BruteForceFindGlb(HasseNode @ref, HasseNodeCollection AllNodes) { if (@ref.KeyString.Equals("x")) { System.Diagnostics.Debugger.Break(); } HasseNodeCollection glb = new HasseNodeCollection(); List<string> ToBeRemoved = new List<string>(); foreach (HasseNode Node in AllNodes.Values) { if (@ref.IsLargerThan(Node)) { glb.Add(Node.KeyString, Node); } } foreach (HasseNode Node in glb.Values) { foreach (HasseNode Node2 in glb.Values) { if (Node != Node2) { if (Node.IsLargerThan(Node2)) { ToBeRemoved.Add(Node2.KeyString); } // break; } } } foreach (string key in ToBeRemoved) { glb.Remove(key); } return (glb); }