summaryrefslogtreecommitdiffstats
path: root/src/CS340.TSP/TSP.cs
diff options
context:
space:
mode:
authorToby Vincent <tobyv13@gmail.com>2021-04-22 01:43:55 -0500
committerToby Vincent <tobyv13@gmail.com>2021-04-22 01:54:54 -0500
commit7db1fdcfadad94aa7aea2acf36ec5fb84b27331f (patch)
treeba1014941f6a33bf96ee36ff19c1c8247ff809a5 /src/CS340.TSP/TSP.cs
parent292555a07b72ae1470c49ee2cee82db16d1c9cbd (diff)
cleaned up weight and key system
Diffstat (limited to 'src/CS340.TSP/TSP.cs')
-rw-r--r--src/CS340.TSP/TSP.cs74
1 files changed, 0 insertions, 74 deletions
diff --git a/src/CS340.TSP/TSP.cs b/src/CS340.TSP/TSP.cs
deleted file mode 100644
index a26fe6c..0000000
--- a/src/CS340.TSP/TSP.cs
+++ /dev/null
@@ -1,74 +0,0 @@
-using System.Diagnostics;
-using System.Linq;
-using System.Text.RegularExpressions;
-using Graph;
-using Graph.IO;
-
-namespace TSP
-{
-
- using Map = Graph<Vertex<Edge<double>, double>, Edge<double>, double>;
-
- public static class TSP
- {
- static Tour BestTour = null;
- static Map Map;
-
- public static Tour BruteForce(Map map, int init)
- {
- Map = map;
- Tour intialTour = new Tour(map.Vertices);
- GenerateTour(intialTour[init], new Tour(map.Vertices), new Tour());
-
- return BestTour;
- }
-
- static void GenerateTour(City city, Tour tour, Tour visited)
- {
- // create local copy of Tour variables
- Tour currTour = new Tour(tour.Cities);
- Tour currVisited = new Tour(visited.Cities);
- City currCity = new City(city);
-
- // remove current City from tour
- currTour.Cities.RemoveAt(currTour.Cities.FindIndex(city => city.Id == currCity.Id));
-
- //? verify that city was removed
- Debug.Assert(currVisited.Cities.Find(city => city.Id == currCity.Id) == null,
- $"Failed to remove a city from the tour. \nTour: {tour}\nCity: {currCity.Id}");
-
- // add current City to visited
- if (currVisited.Cities.Count > 0)
- {
- currCity.Parent = currVisited.Cities.Last().Id;
- currCity.Key = Map.Vertices[currCity.Id].Edges
- .Where(edge => edge.V == currCity.Parent)
- .Last().Weight;
- }
-
- currVisited.Cities.Add(currCity);
-
- //? verify that city was added
- Debug.Assert(currVisited.Cities.Find(city => city.Id == currCity.Id) != null,
- $"Failed to add a city to the tour. \nTour: {tour}\nCity: {currCity.Id}");
-
- // loop through each city. Each level of recursion has a one less city in currTour.Cities
- // leaving the base case
- foreach (City neighbor in currTour.Cities)
- GenerateTour(neighbor, currTour, currVisited);
-
-
- if (currTour.Cities.Count == 0)
- {
- currVisited.Cities.First().Parent = currVisited.Cities.Last().Id;
-
- if (BestTour == null || currVisited.Weight < BestTour.Weight)
- BestTour = new Tour(currVisited.Cities);
- // Debug.Print($"{currTour}");
- }
-
-
- return;
- }
- }
-}