static void Main(string[] args)
        {
            RandomDataGenerator generator = new RandomDataGenerator();
            List <UserNode>     users     = generator.Generate();

            foreach (var user in users)
            {
                Console.WriteLine(user + " " + user.Id);
            }

            Console.WriteLine("Done");
            Console.ReadLine();

            BreadthFirstSearch search = new BreadthFirstSearch(users);
            int distance = search.MinDistance(users[0], users[6]);

            Console.WriteLine(distance);
            Console.ReadLine();

            //Console.WriteLine(search.FriendsOfFriends(users[0], 3));
            HashSet <UserNode> result = search.FriendsOfFriends(users[12], 2);

            foreach (var user in result)
            {
                Console.WriteLine(user);
            }
            Console.ReadLine();
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            RandomDataGenerator generator = new RandomDataGenerator();
            List <UserNode>     users     = generator.Generate();

            foreach (var user in users)
            {
                Console.WriteLine(user);
            }
            Console.WriteLine("Done");

            while (true)
            {
                Random   rand     = new Random();
                UserNode user1    = users.ElementAt(rand.Next(users.Count));
                UserNode user2    = users.ElementAt(rand.Next(users.Count));
                int      distance = rand.Next(5);

                Console.WriteLine("\nUser1: " + user1 + ", User2: " + user2 + ", Distance: " + UserNode.DistanceBetweenUsers(user1, user2));
                Console.WriteLine("\nUser1: " + user1 + "Distance: " + distance + "\n Friends: ");
                foreach (var user in user1.FriendsOfFriends(distance))
                {
                    Console.WriteLine(user);
                }

                Console.WriteLine("Press escape to exit, anyhing else to rerun the functions");
                var key = Console.ReadKey();
                if (key.Key == ConsoleKey.Escape)
                {
                    break;
                }
            }
        }
Esempio n. 3
0
        static void Main(string[] args)
        {
            RandomDataGenerator generator = new RandomDataGenerator();
            List <UserNode>     users     = generator.Generate();
            BreadthFirstSearch  bfs       = new BreadthFirstSearch(users);

            foreach (var user in users)
            {
                Console.WriteLine(user);
            }

            Random random = new Random();

            UserNode user1 = users[random.Next(0, users.Count)];
            UserNode user2 = users[random.Next(0, users.Count)];

            Console.WriteLine($"\nDistance between {user1} and {user2} is: {bfs.GetDistance(user1, user2)}");

            Console.WriteLine($"Friends of {user1} with distance 2 are:");
            foreach (var friend in bfs.GetFriendsOfFriends(user1, 2))
            {
                Console.WriteLine(friend);
            }


            Console.WriteLine("Done");
            Console.ReadKey();
        }
Esempio n. 4
0
        static void Main(string[] args)
        {
            RandomDataGenerator generator = new RandomDataGenerator();
            List <UserNode>     users     = generator.Generate();
            var userGraph = new UserGraph(users);

            var shortestDistance = userGraph.GetShortestDistanceBetweenNodes(users[0], users[6]);
        }
        static void Main(string[] args)
        {
            var   rng   = new Random();
            Graph graph = new Graph();
            RandomDataGenerator generator = new RandomDataGenerator();

            graph.AddRange(generator.Generate(4));
            var users = new List <UserNode>(graph.Users);
            int max   = Math.Min(3, users.Count);

            Console.WriteLine($"Total number of people in the graph: {users.Count}");

            for (int i = 0; i < max; i++)
            {
                var user = users[rng.Next(users.Count)];
                if (i == 0)
                {
                    var friends = graph.GetFriendsOfFriends(user, 2);
                    Console.WriteLine($"The closest people to {user} are: ");
                    foreach (var friend in friends)
                    {
                        Console.WriteLine($"\t{friend}");
                    }
                }

                for (int j = 0; j < max; j++)
                {
                    var otherUser = users[rng.Next(users.Count)];
                    int distance  = graph.GetDistance(user, otherUser);
                    var paths     = graph.GetShortestPaths(user, otherUser);
                    var sb        = new StringBuilder();

                    foreach (var path in paths)
                    {
                        sb.Append($"\t ({path.Count})");
                        sb.Append("[");
                        foreach (var userNode in path)
                        {
                            sb.Append(userNode);
                            sb.Append(",");
                        }
                        sb.Append("]\n");
                    }

                    Console.WriteLine($"{user} is {distance} friends away from {otherUser}");
                    Console.WriteLine($"The shortest routes between them are: \n{sb.ToString()}");
                }
            }

            Console.WriteLine("Done");
            Console.ReadKey();
        }
Esempio n. 6
0
        static void Main(string[] args)
        {
            RandomDataGenerator generator = new RandomDataGenerator();
            List <UserNode>     users     = generator.Generate();

            System.Console.WriteLine();

            ShowDistance(users[0], users[1], 1);

            ShowDistance(users[0], users[7], 2);

            ShowDistance(users[29], users[0], 3);
        }
        static void Main(string[] args)
        {
            RandomDataGenerator generator = new RandomDataGenerator();
            List <UserNode>     users     = generator.Generate();

            foreach (var user in users)
            {
                Console.WriteLine(user);
            }

            Console.WriteLine("Done");
            Console.ReadKey();
        }
Esempio n. 8
0
        static void Main(string[] args)
        {
            RandomDataGenerator generator     = new RandomDataGenerator();
            List <UserNode>     users         = generator.Generate();
            FriendHandler       friendHandler = new FriendHandler(users);

            friendHandler.GetMinimumDistance("Alec Hillary", "Karleigh Winifred");

            friendHandler.GetFriendsByDistance("Alec Hillary", 3);

            Console.WriteLine("\nDone");
            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            RandomDataGenerator generator = new RandomDataGenerator();
            List <UserNode>     users     = generator.Generate();


            HashSet <UserNode> result = FriendsOfFriends(users[0], 2);

            foreach (UserNode member in result)
            {
                Console.WriteLine(member.ToString());
            }

            Console.WriteLine("Done");
            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            RandomDataGenerator generator = new RandomDataGenerator();
            List <UserNode>     users     = generator.Generate();
            Dictionary <UserNode, HashSet <UserNode> > dictonary = UploadDictionary(users);
            int steps = MinimumDistanceBetween2People(dictonary, users[3], users[25]);

            //GiveFriendsOfFriends(dictonary, users[0], 2);
            ShortestPathBetweenTwo(dictonary, users[3], users[22]);

            // foreach (var user in users)
            // {
            //     Console.WriteLine(user);
            // }
            //
            // Console.WriteLine("Done");
            // Console.ReadKey();
        }
        static void Main(string[] args)
        {
            RandomDataGenerator generator = new RandomDataGenerator();
            List <UserNode>     users     = generator.Generate();

            foreach (var user in users)
            {
                Console.WriteLine(user);
            }

            Console.WriteLine("Done");

            BreadthFirstSearch search = new BreadthFirstSearch();
            UserNode           test1  = users[0];
            UserNode           test2  = users[2];
            UserNode           test3  = users[6];
            UserNode           test4  = users[9];
            int minDistance           = search.FindMinimumDistance(test3, test4);

            Console.WriteLine("The mininmum distance between " + test3 + " and " + test4 + " is " + minDistance);
            int selectedDistance = 3;

            Console.WriteLine("The user " + test1 + " has the following friends of friends in " + selectedDistance + " level distance.");
            HashSet <UserNode> friendsOfFriends = search.ListFriendsOfFriends(test1, selectedDistance);

            foreach (var user in friendsOfFriends)
            {
                Console.WriteLine(user);
            }
            Console.WriteLine("The " + test3 + " and " + test4 + "has the following shortest paths: ");
            List <List <UserNode> > shortestPaths = search.ListShortestPaths(test3, test4);

            foreach (var path in shortestPaths)
            {
                foreach (UserNode node in path)
                {
                    Console.Write(node.ToString());
                }
                Console.WriteLine("End of path");
            }
            Console.WriteLine();
            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            RandomDataGenerator generator = new RandomDataGenerator();
            List <UserNode>     users     = generator.Generate();

            // Console.WriteLine("" + users[0]
            //                      + users[0] + "Distance is:"
            //                      + BreadthFirstSearch.GetMinimumDistance(users[0], users[0]));
            // Console.WriteLine("" + users[1]
            //                      + users[28] + "Distance is:"
            //                      + BreadthFirstSearch.GetMinimumDistance(users[1], users[28]));

            List <UserNode> friendsOfFriendsDepth1 = BreadthFirstSearch.GetFriendsOfFriends(users[0], 1);

            foreach (var friend in friendsOfFriendsDepth1)
            {
                Console.WriteLine(friend);
            }

            Console.WriteLine("<--------------------------------------------------->");
            List <UserNode> friendsOfFriendsDepth2 = BreadthFirstSearch.GetFriendsOfFriends(users[0], 2);

            foreach (var friend in friendsOfFriendsDepth2)
            {
                Console.WriteLine(friend);
            }


            // foreach (var user in users)
            // {
            //     Console.WriteLine(user);
            //     foreach (UserNode friend in user.Friends)
            //     {
            //         Console.Write(friend.FirstName +" " + friend.LastName + " | ");
            //     }
            //
            //     Console.WriteLine("");
            // }

            Console.WriteLine("Done");
            Console.ReadKey();
        }
Esempio n. 13
0
        static void Main(string[] args)
        {
            RandomDataGenerator generator = new RandomDataGenerator();
            List <UserNode>     users     = generator.Generate();

            Console.WriteLine(users[0].MinDistanceFrom(users[2]));
            Console.WriteLine(users[0].FriendsAtDistance(2).Count);
            foreach (var user in users[0].FriendsAtDistance(2))
            {
                Console.WriteLine(user);
            }

            //foreach (var user in users)
            //{
            //    Console.WriteLine(user);
            //}

            //Console.WriteLine("Done");
            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            RandomDataGenerator generator = new RandomDataGenerator();
            List <UserNode>     users     = generator.Generate();

            Console.WriteLine("Users:");
            foreach (var user in users)
            {
                Console.WriteLine(user);
            }
            UserNode userOne = users[15];
            UserNode userTwo = users[9];

            Console.WriteLine($"User one is {userOne}");
            Console.WriteLine($"User two is {userTwo}");

            int distance = Distance.GetShortestDistanceBetweenUsers(userOne, userTwo);

            Console.WriteLine($"The shortest distance between {userOne.FirstName} and {userTwo.FirstName} is {distance}");
            ResetUsers(users);
            List <List <UserNode> > paths = ShortestPath.GetShortestPath(userOne, userTwo);

            Console.WriteLine($"The shortest distance between {userOne.FirstName} and {userTwo.FirstName} is:");
            foreach (List <UserNode> path in paths)
            {
                foreach (UserNode user in path)
                {
                    Console.WriteLine(user);
                }
            }
            ResetUsers(users);
            HashSet <UserNode> friends = Friends.GetFriendsOfFriends(userOne, 2);

            Console.WriteLine($"{userOne.FirstName}'s friends:");
            foreach (UserNode friend in friends)
            {
                Console.WriteLine(friend);
            }

            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            Random random = new Random();
            RandomDataGenerator generator     = new RandomDataGenerator();
            List <UserNode>     users         = generator.Generate();
            BreadthSearch       breadthSearch = new BreadthSearch(users);

            foreach (var user in users)
            {
                Console.WriteLine(user);
            }
            int distance = breadthSearch.DistanceBetweenUsers(users[0], users [1]);

            Console.WriteLine("Distance between users: " + distance);

            List <UserNode> friendsOfFriends = breadthSearch.GetFriendsOfFriends(users[0], 10);
            string          result           = string.Join(", ", friendsOfFriends);

            Console.WriteLine(result);
            Console.WriteLine("Done");
            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            RandomDataGenerator generator = new RandomDataGenerator();
            List <UserNode>     users     = generator.Generate();

            UserNode startUser = users[0];
            UserNode endUser   = users[1];

            GraphOperation graphOperation = new GraphOperation();

            graphOperation.ShowFriendsAndDistancesFromUser(startUser);

            Console.WriteLine(graphOperation.MinimumDistanceOfUsers(startUser, endUser));

            foreach (UserNode userNode in graphOperation.FriendsOfFriendsAtDistance(startUser, 1))
            {
                Console.WriteLine($"{userNode.FirstName} {userNode.LastName}");
            }

            Console.WriteLine("Done");
            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            RandomDataGenerator generator = new RandomDataGenerator();
            List <UserNode>     users     = generator.Generate();

            PrintUsers(users);
            FindPath(users);
            FriendsAtDistance(users, 2);
            var lastUser     = users[users.Count - 1];
            var secondToLast = users[users.Count - 3];

            lastUser.AddFriend(secondToLast);
            users[12].AddFriend(users[14]);
            users[14].FirstName = "Sile";
            users[14].LastName  = "Camataru'";
            FindShortestPaths(users);


            AllPathsCyclicGraph();
            Console.WriteLine("Done");

            Console.ReadKey();
        }
Esempio n. 18
0
        static void Main(string[] args)
        {
            RandomDataGenerator generator = new RandomDataGenerator();
            List <UserNode>     users     = generator.Generate();

            foreach (var user in users)
            {
                Console.WriteLine($"{user} user ID: {user.Id}");
                foreach (var item in user.Friends)
                {
                    Console.Write($" -{item.FirstName} {item.LastName} ({item.Id}) ");
                }
                Console.WriteLine();
            }

            //Console.WriteLine($"Min distance between 2 and 23: {MinimumDistance.DisplayShortestDistance(users, 2, 23)}");

            //ListOfFriendsAtDegree.DisplayListOfFriendsAtDegree(users, 1, 3);

            PersonPath.PrintShortestParthAndPeople(users, 1, 62);

            Console.WriteLine("Done");
            Console.ReadKey();
        }
Esempio n. 19
0
        static void Main(string[] args)
        {
            RandomDataGenerator generator = new RandomDataGenerator();
            List <UserNode>     users     = generator.Generate();

            //here is my edge array
            foreach (var user in users)
            {
                Console.WriteLine(user);
                foreach (var friend in user.Friends)
                {
                    myEdges.Add(Tuple.Create(user.Id, friend.Id));
                }
            }
            allVertices = users.Count;

            Console.WriteLine("\n" + "Hit enter to see the distance between to people: ");
            Console.ReadLine();

            //THE SHORTEST DISTANCE------------------------------------------------------------------------------

            //my addition
            //my vertices
            var myVertices = Enumerable.Range(1, allVertices).ToArray();

            //my edges list is on the top and i add the info in the first for loop
            //here i convert this list to an array
            var Edges = myEdges.ToArray();

            var graph      = new Graph <int>(myVertices, Edges);
            var algorithms = new Algorithms();

            var startVertex  = 2;
            var shortestPath = algorithms.ShortestPathFunction(graph, startVertex);

            //write out the shortest distance between two people, start vertex - end vertex (one vertex means 1)
            var endVertex = 10;

            Console.WriteLine(shortestPath(myVertices[endVertex]).Count());

            //write out the "way to the porson"
            Console.WriteLine("shortest path to {0}: {1}",
                              myVertices[endVertex], string.Join(", ", shortestPath(myVertices[endVertex])));

            Console.ReadLine();

            //THE FRIENDS NEARBY---------------------------------------------------------------------------------
            var distance = 3;

            foreach (var vertex in myVertices)
            {
                if (shortestPath(vertex).Count() == distance)
                {
                    Console.WriteLine("path in DISTANCE 3 {0,2}: {1}",
                                      vertex, string.Join(", ", shortestPath(vertex)));
                }
                Console.WriteLine("all shortest path to {0,2}: {1}",
                                  vertex, string.Join(", ", shortestPath(vertex)));
            }
            Console.ReadLine();

            //FRIEND CHAIN---------------------------------------------------------------------------------------
            if (shortestPath(myVertices[endVertex]).Count() == distance)
            {
                Console.WriteLine("{0} {1}'s Friends in Distance 3: " + "\n",
                                  users[myVertices[endVertex]].FirstName, users[myVertices[endVertex]].LastName);

                foreach (var ver in shortestPath(myVertices[endVertex]))
                {
                    Console.WriteLine("{0} {1}", users[ver].FirstName, users[ver].LastName);
                }
            }
        }