public List <string> GetGraf() { // Mengembalikan list graf dengan urut A - Z GFG gg = new GFG(); List <string> list = this.Graf; list.Sort(gg); return(list); }
public string ExploreFriendsDFS(string akunAsal, string akunTujuan) { List <string> listFriend = new List <string>(); List <string> listKunjungan = new List <string>(); if (akunAsal == akunTujuan) { return("Apakah " + akunTujuan + " berteman dengan dirinya sendiri?"); } GFG gg = new GFG(); string result = ""; DFS(akunAsal, akunTujuan, listKunjungan); if (listKunjungan.Contains(akunTujuan)) { //Console.WriteLine("Ada"); string awal = akunAsal; string akhir = akunTujuan; if (string.Compare(akunAsal, akunTujuan) > 0) { awal = akunTujuan; akhir = akunAsal; } listFriend = MyFriend(akhir); listFriend.Sort(gg); //this.ListExplore.Add(akunTujuan); while (!listFriend.Contains(awal)) { string TambahGraf = listFriend[0]; this.ListExplore.Add(TambahGraf); listFriend.Clear(); listFriend = MyFriend(TambahGraf); listFriend.Sort(gg); } //this.ListExplore.Add(akunAsal); this.ListExplore.Sort(gg); if (string.Compare(akunAsal, akunTujuan) > 0) { this.ListExplore.Reverse(); } this.degree = this.ListExplore.Count; if (this.degree == 0) { result += " Sudah berteman. ( "; } else { result += "Derajat pertemanan " + this.degree + ". ("; } result += akunAsal + " <---> "; foreach (string text in this.ListExplore) { result += text + " <---> "; /*if (text != akunTujuan) * { * Console.Write("{0} --- ", text); * result += text + " <---> "; * } * else { Console.Write("{0}\n", text); result += text + " )"; }*/ } result += akunTujuan + " )"; } else { //MEET ? result += "Tidak ada jalur koneksi yang tersedia\nAnda harus memulai koneksi baru itu sendiri."; Console.WriteLine("Tidak ada jalur koneksi yang tersedia\nAnda harus memulai koneksi baru itu sendiri."); } listFriend.Clear(); return(result); }
// BFS EXPLORE public string ExploreFriendsBFS(string AkunAsal, string AkunTujuan) { List <string> ListFriend = new List <string>(); List <string> ListKujungi = new List <string>(); string result = ""; if (AkunAsal == AkunTujuan) { return("Apakah " + AkunTujuan + " berteman dengan dirinya sendiri?"); } bool Status = false; GFG gg = new GFG(); ListFriend = MyFriend(AkunAsal); ListFriend.Sort(gg); //Console.WriteLine(ListFriend[0]); // Kasus derajat 0 ListKujungi.Add(AkunAsal); if (ListFriend.Contains(AkunTujuan)) { Status = true; ListKujungi.Add(AkunTujuan); } // pencarian derajat lebih while (!ListKujungi.Contains(AkunTujuan) && !Status) { //Console.WriteLine("while"); // penanda dikunjungi foreach (string text in ListFriend) { if (text != AkunTujuan) { ListKujungi.Add(text); } else { ListKujungi.Add(text); break; } //Console.WriteLine(text); } // Pengecekan apakah dah dikunjungi if (ListKujungi.Contains(AkunTujuan)) { Status = true; break; } List <string> ListCopy = ListFriend.GetRange(0, ListFriend.Count); ListFriend.Clear(); //Console.WriteLine(ListCopy[0]); foreach (string text in ListCopy) { List <string> List2 = MyFriend(text); foreach (string text2 in List2) { //Console.WriteLine(text2); if (!ListKujungi.Contains(text2)) { ListFriend.Add(text2); //Console.WriteLine("Masuk"); } } } ListFriend.Sort(gg); //Console.WriteLine(ListFriend[0]); if (!ListFriend.Any()) { Status = true; } } if (ListKujungi.Contains(AkunTujuan)) { //Console.WriteLine("Ada"); string Awal = AkunAsal; string Akhir = AkunTujuan; if (string.Compare(AkunAsal, AkunTujuan) > 0) { Awal = AkunTujuan; Akhir = AkunAsal; } ListFriend = MyFriend(Akhir); ListFriend.Sort(gg); //this.ListExplore.Add(AkunTujuan); while (!ListFriend.Contains(Awal)) { string TambahGraf = ListFriend[0]; this.ListExplore.Add(TambahGraf); ListFriend.Clear(); ListFriend = MyFriend(TambahGraf); ListFriend.Sort(gg); } //this.ListExplore.Add(AkunAsal); this.ListExplore.Sort(gg); if (string.Compare(AkunAsal, AkunTujuan) > 0) { this.ListExplore.Reverse(); } this.degree = this.ListExplore.Count; if (this.degree == 0) { result += " Sudah berteman. ( "; } else { result += "Derajat pertemanan " + this.degree + ". ("; } result += AkunAsal + " <---> "; Console.WriteLine(this.degree); foreach (string text in this.ListExplore) { result += text + " <---> "; /* * if (text != AkunTujuan) { * Console.Write("{0} --- ", text); * * } * else { Console.Write("{0}\n", text); result += text + " )"; } */ } result += AkunTujuan + " )"; } else { result += "Tidak ada jalur koneksi yang tersedia\nAnda harus memulai koneksi baru itu sendiri."; Console.WriteLine("Tidak ada jalur koneksi yang tersedia\nAnda harus memulai koneksi baru itu sendiri."); } ListFriend.Clear(); return(result); }
// BFS EXPLORE public void ExploreFriendsBFS(string AkunAsal, string AkunTujuan) { List <string> ListFriend = new List <string>(); List <string> ListKujungi = new List <string>(); bool Status = false; GFG gg = new GFG(); ListFriend = MyFriend(AkunAsal); ListFriend.Sort(gg); //Console.WriteLine(ListFriend[0]); // Kasus derajat 0 if (ListFriend.Contains(AkunTujuan)) { Status = true; ListKujungi.Add(AkunTujuan); } ListKujungi.Add(AkunAsal); // pencarian derajat lebih while (!ListKujungi.Contains(AkunTujuan) && !Status) { //Console.WriteLine("while"); // penanda dikunjungi foreach (string text in ListFriend) { if (text != AkunTujuan) { ListKujungi.Add(text); } else { ListKujungi.Add(text); break; } //Console.WriteLine(text); } // Pengecekan apahah dah dikunjungi if (ListKujungi.Contains(AkunTujuan)) { Status = true; break; } List <string> ListCopy = ListFriend.GetRange(0, ListFriend.Count); ListFriend.Clear(); //Console.WriteLine(ListCopy[0]); foreach (string text in ListCopy) { List <string> List2 = MyFriend(text); foreach (string text2 in List2) { //Console.WriteLine(text2); if (!ListKujungi.Contains(text2)) { ListFriend.Add(text2); //Console.WriteLine("Masuk"); } } } ListFriend.Sort(gg); //Console.WriteLine(ListFriend[0]); if (!ListFriend.Any()) { Status = true; } } if (ListKujungi.Contains(AkunTujuan)) { //Console.WriteLine("Ada"); string Awal = AkunAsal; string Akhir = AkunTujuan; if (string.Compare(AkunAsal, AkunTujuan) > 0) { Awal = AkunTujuan; Akhir = AkunAsal; } ListFriend = MyFriend(Akhir); ListFriend.Sort(gg); this.ListExplore.Add(AkunTujuan); while (ListFriend[0] != Awal) { string TambahGraf = ListFriend[0]; this.ListExplore.Add(TambahGraf); ListFriend.Clear(); ListFriend = MyFriend(TambahGraf); ListFriend.Sort(gg); } this.ListExplore.Add(AkunAsal); this.ListExplore.Sort(gg); if (string.Compare(AkunAsal, AkunTujuan) > 0) { this.ListExplore.Reverse(); } this.degree = this.ListExplore.Count - 2; Console.WriteLine(this.degree); foreach (string text in this.ListExplore) { if (text != AkunTujuan) { Console.Write("{0} --- ", text); } else { Console.Write("{0}\n", text); } } } else { Console.WriteLine("Tidak ada jalur koneksi yang tersedia\nAnda harus memulai koneksi baru itu sendiri."); } ListFriend.Clear(); }