public List <Kant> Get(DataTable matrixTable, List <Knoop> knopen, List <Kant> kanten) { // 2) selecteer een willekeurige knoop en verwijder de betreffende rij Knoop beginKnoop = knopen[random.Next(0, knopen.Count)]; DeleteRow(beginKnoop, matrixTable); geselecteerdeKnopen.Add(beginKnoop); // 5) zolang niet alle knopen geselecteerd zijn, ga door... while (matrixTable.Rows.Count != 0) { // 3a) selecteer vanuit de geselecteerde knopen (kolommen) de eindknoop met de laagste waarde KantKnoop shortestResult = GetShortestArcUsingMatrixTable(matrixTable); // No new closest found, we done if (shortestResult.HasANull()) { continue; } // 3b) voeg de kant [kolomknoop, rijknoop] toe aan de lijst geselecteerde kanten geselecteerdeKanten.Add(shortestResult.Kant); // 4) voeg de eindknoop toe aan de geselecteerde knopen en verwijder de betreffende rij uit de tabel DeleteRow(shortestResult.Knoop, matrixTable); geselecteerdeKnopen.Add(shortestResult.Knoop); } // 6) de lijst met geselecteerde kanten is de oplossing, toon deze lijst return(geselecteerdeKanten); }
private void DeleteRow(Knoop knoop, DataTable matrixTable) { List <DataRow> toBeDeleted = new List <DataRow>(); // Get the right row and add to the list foreach (DataRow dr in matrixTable.Rows) { if (dr["rowName"].ToString() == knoop.Identifier) { toBeDeleted.Add(dr); } } // Delete foreach (DataRow dr in toBeDeleted) { dr.Delete(); } }
public Kant(Knoop a, Knoop b, int lengte) { this.a = a; this.b = b; this.lengte = lengte; }
public KantKnoop(Knoop knoop, Kant kant) { Kant = kant; Knoop = knoop; }