Beispiel #1
0
 //remove an edge from the graph. requires updating the nodes involved with the edge.
 public virtual void RemoveEdge(GraphEdge e)
 {
     e.node1.edges.Remove(e);
     e.node2.edges.Remove(e);
     e.node1.neighbors.Remove(e.node2);
     e.node2.neighbors.Remove(e.node1);
     edges.Remove(e);
     nodeToEdgeDict.Remove(CombineHashes(e.node1, e.node2));
 }
Beispiel #2
0
        //remove an edge based on the two nodes in the edge (overload of above)
        public virtual void RemoveEdge(GraphNode n1, GraphNode n2)
        {
            GraphEdge edge = GetEdge(n1, n2);

            if (edge == null)
            {
                return;
            }

            n1.edges.Remove(edge);
            n2.edges.Remove(edge);
            n1.neighbors.Remove(n2);
            n2.neighbors.Remove(n1);
            edges.Remove(edge);
            nodeToEdgeDict.Remove(CombineHashes(n1, n2));
        }
Beispiel #3
0
        public override void CreateEdge(GraphNode node1, GraphNode node2)
        {
            if (!nodes.Contains(node1) || !nodes.Contains(node2))
            {
                throw new InvalidOperationException("Cannot add an edge if one or more of the nodes arent in the graph.");
            }

            if (node1.edges.Count > 0 && node2.edges.Count > 0)
            {
                throw new InvalidOperationException("Can't create an edge between nodes that are already connected to tree.");
            }

            GraphEdge newEdge = new GraphEdge(node1, node2);

            edges.Add(newEdge);
            nodeToEdgeDict[CombineHashes(node1, node2)] = newEdge;
        }
Beispiel #4
0
        //Creates an edge in the graph between the two given nodes, if they exist in the graph
        public virtual void CreateEdge(GraphNode node1, GraphNode node2)
        {
            if (!nodes.Contains(node1) || !nodes.Contains(node2))
            {
                throw new InvalidOperationException("Cannot add an edge if one or more of the nodes arent in the graph.");
            }

            GraphEdge newEdge = new GraphEdge(node1, node2);

            edges.Add(newEdge);

            try {
                nodeToEdgeDict.Add(CombineHashes(node1, node2), newEdge);
            }
            catch (ArgumentException)  {
                Debug.Log("hash collision: " + node1.GetHashCode().ToString() + " " + node2.GetHashCode().ToString()
                          + " " + CombineHashes(node1, node2).ToString());
                Debug.Log(nodeToEdgeDict[CombineHashes(node1, node2)].ToString());
                return;
            }
        }
        public override void CreateEdge(GraphNode node1, GraphNode node2) {
            if (!nodes.Contains(node1) || !nodes.Contains(node2)) {
                throw new InvalidOperationException("Cannot add an edge if one or more of the nodes arent in the graph.");
            }

            if (node1.edges.Count > 0 && node2.edges.Count > 0) {
                throw new InvalidOperationException("Can't create an edge between nodes that are already connected to tree.");
            }

            GraphEdge newEdge = new GraphEdge(node1, node2);
            edges.Add(newEdge);
            nodeToEdgeDict[CombineHashes(node1, node2)]  = newEdge;
        }
 //remove an edge from the graph. requires updating the nodes involved with the edge.
 public virtual void RemoveEdge(GraphEdge e) {
     e.node1.edges.Remove(e);
     e.node2.edges.Remove(e);
     e.node1.neighbors.Remove(e.node2);
     e.node2.neighbors.Remove(e.node1);
     edges.Remove(e);
     nodeToEdgeDict.Remove(CombineHashes(e.node1, e.node2));
 }
        //Creates an edge in the graph between the two given nodes, if they exist in the graph
        public virtual void CreateEdge(GraphNode node1, GraphNode node2) {
            if (!nodes.Contains(node1) || !nodes.Contains(node2)) {
                throw new InvalidOperationException("Cannot add an edge if one or more of the nodes arent in the graph.");
            }

            GraphEdge newEdge = new GraphEdge(node1, node2);
            edges.Add(newEdge);

            try {
                nodeToEdgeDict.Add(CombineHashes(node1, node2), newEdge);
            }
            catch(ArgumentException)  {
                Debug.Log("hash collision: " + node1.GetHashCode().ToString() + " " + node2.GetHashCode().ToString() 
                    + " " + CombineHashes(node1, node2).ToString());
                Debug.Log(nodeToEdgeDict[CombineHashes(node1, node2)].ToString());
                return;
            }

        }