示例#1
0
        private List <Token> ConstructSkeletonGraph(IList <Node> nodes, List <Tuple <Node, Node> > edges)
        {
            TokenDistribution tokenDistribution = new TokenDistribution();
            Token             token;


            IList <Node> Vertices = new List <Node>();
            List <Token> TokenwithDistanceMessage = new List <Token>();
            List <Tuple <Node, Node> > Edges      = new List <Tuple <Node, Node> >();

            //int MaxHopDistance = 15;

            Vertices = nodes;
            Edges    = edges;

            for (int i = 0; i < Vertices.Count; i++)
            {
                List <Tuple <Node, Node, int, int> > dupliccatetokenmessage = new List <Tuple <Node, Node, int, int> >();
                token = tokenDistribution.LocalBroadcast(Edges, Vertices[i], Vertices);

                for (int j = 0; j < token.TokenMessage.Count; j++)
                {
                    //if (token.TokenMessage[j].Item3 < MaxHopDistance)
                    //{
                    dupliccatetokenmessage.Add(token.TokenMessage[j]);

                    //}
                }
                Token duplicate = new Token(token.SourceID, dupliccatetokenmessage);
                TokenwithDistanceMessage.Add(duplicate);
            }
            return(TokenwithDistanceMessage);
        }
示例#2
0
        /*node to nodes within the max hop distance (Exact)*/
        private List <Token> ConstructSkeletonGraph()
        {
            TokenDistribution tokenDistribution = new TokenDistribution();
            Token             token;

            LocalEdge    localEdge   = new LocalEdge();
            GraphLayout  graphLayout = new GraphLayout();
            IList <Node> Vertices    = new List <Node>();
            List <Token> TokenwithDistanceMessage = new List <Token>();
            List <Tuple <Node, Node> > Edges      = new List <Tuple <Node, Node> >();

            int MaxHopDistance = 20;

            Vertices = graphLayout.GetGraphLayout();
            Edges    = localEdge.GetGrapgEdges(Vertices);

            for (int i = 0; i < Vertices.Count; i++)
            {
                List <Tuple <Node, Node, int, int> > dupliccatetokenmessage = new List <Tuple <Node, Node, int, int> >();
                token = tokenDistribution.LocalBroadcast(Edges, Vertices[i], Vertices);

                for (int j = 0; j < token.TokenMessage.Count; j++)
                {
                    if (token.TokenMessage[j].Item3 < MaxHopDistance)
                    {
                        dupliccatetokenmessage.Add(token.TokenMessage[j]);
                    }
                }

                Token duplicate = new Token(token.SourceID, dupliccatetokenmessage);
                TokenwithDistanceMessage.Add(duplicate);
            }
            return(TokenwithDistanceMessage);
        }
        private List <Token> GetEveryNodesDistance(IList <Node> nodes, List <Tuple <Node, Node> > edges)
        {
            TokenDistribution tokenDistribution = new TokenDistribution();
            Token             token;


            IList <Node> Vertices = new List <Node>();
            List <Token> TokenwithDistanceMessage = new List <Token>();
            List <Tuple <Node, Node> > Edges      = new List <Tuple <Node, Node> >();



            Vertices = nodes;
            Edges    = edges;

            for (int i = 0; i < Vertices.Count; i++)
            {
                token = tokenDistribution.LocalBroadcast(Edges, Vertices[i], Vertices);
                TokenwithDistanceMessage.Add(token);
            }
            return(TokenwithDistanceMessage);
        }
示例#4
0
        private List <Token> GetEveryNodesDistance()
        {
            TokenDistribution tokenDistribution = new TokenDistribution();
            Token             token;

            LocalEdge    localEdge   = new LocalEdge();
            GraphLayout  graphLayout = new GraphLayout();
            IList <Node> Vertices    = new List <Node>();
            List <Token> TokenwithDistanceMessage = new List <Token>();
            List <Tuple <Node, Node> > Edges      = new List <Tuple <Node, Node> >();



            Vertices = graphLayout.GetGraphLayout();
            Edges    = localEdge.GetGrapgEdges(Vertices);

            for (int i = 0; i < Vertices.Count; i++)
            {
                token = tokenDistribution.LocalBroadcast(Edges, Vertices[i], Vertices);
                TokenwithDistanceMessage.Add(token);
            }
            return(TokenwithDistanceMessage);
        }
示例#5
0
        //Construct Exact Algorithm From Graph from skeleton

        private List <Token> ConstructAlgoSkeletonGraph()
        {
            TokenDistribution tokenDistribution = new TokenDistribution();
            Token             token;

            LocalEdge    localEdge   = new LocalEdge();
            GraphLayout  graphLayout = new GraphLayout();
            IList <Node> Vertices    = new List <Node>();
            List <Token> TokenwithDistanceMessage = new List <Token>();
            List <Tuple <Node, Node> > Edges      = new List <Tuple <Node, Node> >();

            List <int> veticesNumber = new List <int>();


            int MaxHopDistance = 20;

            Vertices = graphLayout.GetGraphLayout();
            Edges    = localEdge.GetGrapgEdges(Vertices);

            for (int i = 0; i < Vertices.Count; i++)
            {
                veticesNumber.Add(Vertices[i].ID);
            }

            for (int i = 0; i < Vertices.Count; i++)
            {
                List <Tuple <Node, Node, int, int, double> > dupliccatetokenmessage = new List <Tuple <Node, Node, int, int, double> >();
                token = tokenDistribution.LocalBroadcast(Edges, Vertices[i], Vertices);

                for (int j = 0; j < token.TokenMessage.Count; j++)
                {
                    //within 2 hop counts
                    if (token.TokenMessage[j].Item4 < 3)
                    {
                        dupliccatetokenmessage.Add(Tuple.Create(token.TokenMessage[j].Item1,
                                                                token.TokenMessage[j].Item2, token.TokenMessage[j].Item3, token.TokenMessage[j].Item4,
                                                                (double)token.TokenMessage[j].Item3));
                    }
                    else
                    {
                        dupliccatetokenmessage.Add(Tuple.Create(token.TokenMessage[j].Item1,
                                                                token.TokenMessage[j].Item2, token.TokenMessage[j].Item3, token.TokenMessage[j].Item4,
                                                                double.PositiveInfinity));
                    }
                }
                List <Tuple <Node, Node, int, int, double> > Uniquedupliccatetokenmessage = new List <Tuple <Node, Node, int, int, double> >();
                Tuple <Node, Node, int, int, double>         unique;
                if (dupliccatetokenmessage?.Count != 0)
                {
                    for (int k = 0; k < veticesNumber.Count; k++)
                    {
                        if (veticesNumber[k] != dupliccatetokenmessage[0].Item1.ID)
                        {
                            unique = GetUniqueVeticesToken(veticesNumber[k], dupliccatetokenmessage);
                            Uniquedupliccatetokenmessage.Add(unique);
                        }
                        else
                        {
                            Uniquedupliccatetokenmessage.Add(Tuple.Create(dupliccatetokenmessage[i].Item1,
                                                                          dupliccatetokenmessage[k].Item1, 0, 0, (double)0));
                        }
                    }
                }
                var   orderedDuplicatemessage = Uniquedupliccatetokenmessage.OrderBy(x => x.Item2.ID).ToList();
                Token duplicate = new Token(token.SourceID, orderedDuplicatemessage);
                TokenwithDistanceMessage.Add(duplicate);
            }
            return(TokenwithDistanceMessage);
        }