//Constructor //Constructor sekaligus membentuk isi Semester; public Pengambilan_Matkul(List <int> Solution, DirectedEdgeMatrix M) { //Pembentukan array berdasarkan ukuran graf M Semester = new List <List <int> >(M.getSize()); MatkulPerSemester = new List <int>(M.getSize()); for (int i = 0; i < M.getSize(); i++) { Semester.Add(new List <int>(M.getSize())); } //Pemilihan Matkul pada tiap semester int j = 0; int countMatkul = 0; for (int i = 0; i < M.getSize(); i++) { if (Semester[0].Count == 0) { Semester[j].Add(Solution[i]); countMatkul += 1; } else { //Jika ada prerequisitenya, diambil pada semester berikutnya bool foundPrerequisite = false; for (int k = 0; k < countMatkul; k++) { if (M.isAdjacent(Semester[j][k], Solution[i])) { foundPrerequisite = true; } } if (foundPrerequisite) { MatkulPerSemester.Add(countMatkul); j++; countMatkul = 0; } countMatkul += 1; Semester[j].Add(Solution[i]); } } JumlahSemester = j + 1; MatkulPerSemester.Add(countMatkul); MatkulPerSemester.Add(countMatkul); }
private void button1_Click(object sender, EventArgs e) { //Ini adalah tomboll trigger untuk memanggil animasi dan algoritma dfs //Inisiasi button2.Enabled = true; button3.Enabled = true; DFS_Sort algoritmaDFS = new DFS_Sort(resultGraph.getSize()); //Mulai melakukan dfs int time = 1; for (int i = 0; i < resultGraph.getSize(); i++) { if (!algoritmaDFS.isVerticeVisited(i)) { algoritmaDFS.Search(resultGraph, i, ref time); } } algoritmaDFS.makeSolution(); //Melakukan animasi dfs dengan memanfaatkan track record for (int i = 0; i < algoritmaDFS.getOrderCount(); i++) { bool isEnd = algoritmaDFS.isVerticeOrderEnd(i); int currentNode = algoritmaDFS.getVerticeOrder(i); Node currentNodeObject = graph.FindNode(pemetaanIndex[currentNode]); if (!isEnd) { //Update time stamp selfEdge[currentNode].Attr.Label = (i + 1).ToString() + "/"; currentNodeObject.Attr.Fillcolor = Microsoft.Glee.Drawing.Color.Yellow; } else { selfEdge[currentNode].Attr.Label = selfEdge[currentNode].Attr.Label + (i + 1).ToString(); } if (i != 0) { int previousNode = algoritmaDFS.getVerticeOrder(i - 1); Node previousNodeObject = graph.FindNode(pemetaanIndex[previousNode]); previousNodeObject.Attr.Fillcolor = Microsoft.Glee.Drawing.Color.Red; } //Melakukan update gambar viewer.Graph = graph; viewer.Update(); System.Threading.Thread.Sleep(waktuDelay); } //Menyimpan solusi solution = algoritmaDFS.getAllSolution(); //form.ShowDialog(); }