示例#1
0
        private void runFriendRecommendation()
        {
            System.Console.WriteLine("Friend Recommendation Running");
            listBoxFriend.Items.Clear();
            string selectedAcc = comboBoxAcc.Items[comboBoxAcc.SelectedIndex].ToString();
            FriendRecommendation friendRecom = new FriendRecommendation();
            IList <Tuple <string, HashSet <string> > > daftarRecom = friendRecom.getFriendRecommendation(graf, selectedAcc);

            if (daftarRecom.Count == 0)
            {
                listBoxFriend.Items.Add("Tidak ada friend recommendation");
            }
            foreach (var recom in daftarRecom)
            {
                //BFS
                ExploreFriendBFS eksplorasiBFS = new ExploreFriendBFS();
                //Ambil dari daftar rekomendasi
                List <string>    tempList     = new List <string>();
                string[]         tetangga     = graf.getMap()[selectedAcc].Split(' ');
                string           namaRecom    = recom.Item1;
                HashSet <string> daftarMutual = recom.Item2;
                //syarat belum menjadi teman dan bukan dirinya sendiri
                if (!Array.Exists(tetangga, element => element == namaRecom) && namaRecom != selectedAcc)
                {
                    listBoxFriend.Items.Add(namaRecom);
                    if (selectedAcc != namaRecom)
                    {
                        eksplorasiBFS.bfs(graf, selectedAcc, namaRecom);
                        eksplorasiBFS.tampilkanHasil();
                        string[] rute = eksplorasiBFS.getHasil().ToArray();
                        for (int i = 0; i < rute.Length; i++)
                        {
                            graph.FindNode(rute[i]).Attr.FillColor = Microsoft.Msagl.Drawing.Color.Green;
                        }
                        listBoxFriend.Items.Add(tampilkanHasil(eksplorasiBFS.getHasil()) + ", derajat pertemanan: " + eksplorasiBFS.getDerajat().ToString());
                    }

                    foreach (string nama in daftarMutual)
                    {
                        tempList.Add(nama);
                    }
                    string[] tempArr     = tempList.ToArray();
                    string   outTetangga = tempArr.Length.ToString() + " Mutual friends: " + string.Join(" ", tempArr);
                    listBoxFriend.Items.Add(outTetangga);
                    listBoxFriend.Items.Add(" ");
                }
            }
        }
示例#2
0
        private void warnaiGraph()
        {
            labelDerajatKoneksi.Text = "";
            labelJalur.Text          = "";
            string[] list_simpul = graf.getDaftarSimpul();
            string   selectedAcc = comboBoxAcc.Items[comboBoxAcc.SelectedIndex].ToString();
            string   targetAcc   = comboBoxTarget.Items[comboBoxTarget.SelectedIndex].ToString();

            foreach (var simpul in list_simpul)
            {
                graph.FindNode(simpul).Attr.FillColor = Microsoft.Msagl.Drawing.Color.White;
            }
            if (checkBoxBFS.Checked)
            {
                //BFS
                System.Console.WriteLine("Menggunakan BFS");
                ExploreFriendBFS eksplorasiBFS = new ExploreFriendBFS();

                /*
                 * try
                 * {
                 *  eksplorasiBFS.bfs(graf, "A", "W");
                 *  eksplorasiBFS.tampilkanHasil();
                 *  eksplorasiBFS.tampilkanDerajat();
                 * }
                 * catch (Exception ex)
                 * {
                 *  System.Console.WriteLine(ex);
                 *  System.Console.WriteLine("Tidak ada jalur koneksi yang tersedia");
                 *  System.Console.WriteLine("Anda harus memulai koneksi baru itu sendiri.");
                 * }
                 */
                try
                {
                    if (selectedAcc != targetAcc)
                    {
                        eksplorasiBFS.bfs(graf, selectedAcc, targetAcc);
                        eksplorasiBFS.tampilkanHasil();
                        string[] rute = eksplorasiBFS.getHasil().ToArray();
                        for (int i = 0; i < rute.Length; i++)
                        {
                            graph.FindNode(rute[i]).Attr.FillColor = Microsoft.Msagl.Drawing.Color.Green;
                        }
                        tampilkanHasil(eksplorasiBFS.getHasil());
                        labelDerajatKoneksi.Text = eksplorasiBFS.getDerajat().ToString();
                    }
                    else
                    {
                        MessageBox.Show("Tidak ada jalur koneksi yang tersedia", "Not Found!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Tidak ada jalur koneksi yang tersedia", "Not Found!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    System.Console.WriteLine(ex);
                }
            }
            else
            {
                //DFS
                System.Console.WriteLine("Menggunakan DFS");
                ExploreFriendDFS eksplorasiDFS = new ExploreFriendDFS();
                try
                {
                    string[] rute = eksplorasiDFS.getConnection(graf, selectedAcc, targetAcc);
                    for (int i = 0; i < rute.Length; i++)
                    {
                        graph.FindNode(rute[i]).Attr.FillColor = Microsoft.Msagl.Drawing.Color.Green;
                    }
                    labelDerajatKoneksi.Text = eksplorasiDFS.getDegreeConnection(graf, selectedAcc, targetAcc).ToString();
                    List <string> ruteList = rute.ToList();
                    tampilkanHasil(ruteList);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Tidak ada jalur koneksi yang tersedia", "Not Found!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    System.Console.WriteLine(ex);
                }
            }
            gViewer1.Graph = graph;
        }