示例#1
0
        public override bool Equals(UndirectedGraph.UndirectedGraph <int, Edge <int> > g1, UndirectedGraph.UndirectedGraph <int, Edge <int> > g2)
        {
            if (g1 == null)
            {
                return(g2 == null);
            }
            else if (g2 == null)
            {
                return(false);
            }
            else
            {
                if (g1.AllowParallelEdges != g2.AllowParallelEdges)
                {
                    return(false);
                }

                if (g1.VertexCount != g2.VertexCount)
                {
                    return(false);
                }

                if (g1.EdgeCount != g2.EdgeCount)
                {
                    return(false);
                }

                int[] vertices1 = g1.Vertices.ToArray();
                for (int i = 0; i < vertices1.Length; i++)
                {
                    if (!g2.ContainsVertex(vertices1[i]))
                    {
                        return(false);
                    }
                    else
                    {
                        foreach (Edge <int> ve in g1.AdjacentEdges(vertices1[i]))
                        {
                            if (!g2.ContainsEdge(ve.Source, ve.Target))
                            {
                                return(false);
                            }
                        }
                    }
                }
                return(true);
            }
        }
示例#2
0
        public override int GetHashCode(UndirectedGraph.UndirectedGraph <int, Edge <int> > g)
        {
            int hash = 0;

            if (g != null)
            {
                var edges = g.Edges;

                foreach (var e in edges)
                {
                    if (e != null)
                    {
                        hash += e.Source * e.Target;
                    }
                }
            }

            return(hash);
        }