aboutsummaryrefslogtreecommitdiffstats
path: root/src/Program/Program.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Program/Program.cs')
-rw-r--r--src/Program/Program.cs47
1 files changed, 40 insertions, 7 deletions
diff --git a/src/Program/Program.cs b/src/Program/Program.cs
index c27369a..05a91dc 100644
--- a/src/Program/Program.cs
+++ b/src/Program/Program.cs
@@ -13,9 +13,8 @@ namespace Program
{
List<Analysis> Analysii = new();
DirectoryInfo graphDir = new DirectoryInfo((args.Length > 0) ? args[0] : "graphs");
-
- FileInfo outfile = new("../../output.csv");
- File.WriteAllText(outfile.FullName, $"Filename,ResultType,Iterations,MinCut,Runtime\n");
+ DirectoryInfo outDir = new("../../output");
+ outDir.Create();
if (!graphDir.Exists)
{
@@ -23,14 +22,48 @@ namespace Program
System.Environment.Exit(1);
}
+ string cuts_header = $"Graph,Exact Cuts,Contract1 Cuts,Contract2 Cuts,Contract3 Cuts,Contract4 Cuts,Contract5 Cuts";
+ string times_header = $"Graph,Exact (ms),Contract1 (ms),Contract2 (ms),Contract3 (ms),Contract4 (ms),Contract5 (ms)";
+ List<string> constant_cuts = new() { cuts_header };
+ List<string> constant_times = new() { times_header };
+ List<string> linear_cuts = new() { cuts_header };
+ List<string> linear_times = new() { times_header };
+ List<string> polynomial_cuts = new() { cuts_header };
+ List<string> polynomial_times = new() { times_header };
+
foreach (var file in graphDir.EnumerateFiles())
{
Graph graph = ReadFile(file);
- Analysis analysis = new(graph, file.Name);
- analysis.Analize();
- Analysii.Add(analysis);
- File.AppendAllLines(outfile.FullName, analysis.ToCSV());
+ Analysis analysis = new(graph, 5);
+ List<Result> results;
+ int iter;
+ Console.WriteLine(file.Name);
+
+ iter = 10;
+ Console.WriteLine($"\nconstant ({iter}):");
+ results = analysis.Analize(iter);
+ constant_cuts.Add($"{file.Name},{String.Join(",", results.Select(r => r.MinCut))}");
+ constant_times.Add($"{file.Name},{String.Join(",", results.Select(r => r.Runtime.TotalMilliseconds))}");
+
+ iter = graph.Nodes.Count;
+ Console.WriteLine($"\nlinier ({iter}):");
+ results = analysis.Analize(iter);
+ linear_cuts.Add($"{file.Name},{String.Join(",", results.Select(r => r.MinCut))}");
+ linear_times.Add($"{file.Name},{String.Join(",", results.Select(r => r.Runtime.TotalMilliseconds))}");
+
+ iter = (int)(Math.Pow(graph.Nodes.Count, 2) * Math.Log(graph.Nodes.Count, Math.E));
+ Console.WriteLine($"\npolynomial ({iter}):");
+ results = analysis.Analize(iter);
+ polynomial_cuts.Add($"{file.Name},{String.Join(",", results.Select(r => r.MinCut))}");
+ polynomial_times.Add($"{file.Name},{String.Join(",", results.Select(r => r.Runtime.TotalMilliseconds))}");
}
+
+ File.WriteAllLines($"{outDir.FullName}/constant_cuts.csv", constant_cuts);
+ File.WriteAllLines($"{outDir.FullName}/constant_times.csv", constant_times);
+ File.WriteAllLines($"{outDir.FullName}/linear_cuts.csv", linear_cuts);
+ File.WriteAllLines($"{outDir.FullName}/linear_times.csv", linear_times);
+ File.WriteAllLines($"{outDir.FullName}/polynomial_cuts.csv", polynomial_cuts);
+ File.WriteAllLines($"{outDir.FullName}/polynomial_times.csv", polynomial_times);
}
public static Graph ReadFile(FileInfo file)