summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorToby Vincent <tobyv13@gmail.com>2021-05-02 14:58:01 -0500
committerToby Vincent <tobyv13@gmail.com>2021-05-02 15:02:02 -0500
commitd551ec3ad6b2811bb7ba2c339373cfefc8558c53 (patch)
tree780a907927f09f5a12a874b490bcaf60dcd68cb2
removed CS340 namespace
Signed-off-by: Toby Vincent <tobyv13@gmail.com>
-rw-r--r--Plot.Designer.cs667
-rw-r--r--Plot.cs135
-rw-r--r--Plot.resx60
-rw-r--r--Plotter.csproj21
-rw-r--r--Program.cs30
-rw-r--r--TourPlot.cs114
-rw-r--r--graphs/graph1.csv13
-rw-r--r--graphs/graph1.txt13
-rw-r--r--graphs/graph10.csv13
-rw-r--r--graphs/graph10.txt13
-rw-r--r--graphs/graph2.csv13
-rw-r--r--graphs/graph2.txt13
-rw-r--r--graphs/graph3.csv13
-rw-r--r--graphs/graph3.txt13
-rw-r--r--graphs/graph4.csv13
-rw-r--r--graphs/graph4.txt13
-rw-r--r--graphs/graph5.csv13
-rw-r--r--graphs/graph5.txt13
-rw-r--r--graphs/graph6.csv13
-rw-r--r--graphs/graph6.txt13
-rw-r--r--graphs/graph7.csv13
-rw-r--r--graphs/graph7.txt13
-rw-r--r--graphs/graph8.csv13
-rw-r--r--graphs/graph8.txt13
-rw-r--r--graphs/graph9.csv13
-rw-r--r--graphs/graph9.txt13
26 files changed, 1287 insertions, 0 deletions
diff --git a/Plot.Designer.cs b/Plot.Designer.cs
new file mode 100644
index 0000000..7a06f33
--- /dev/null
+++ b/Plot.Designer.cs
@@ -0,0 +1,667 @@
+
+namespace Plotter
+{
+ partial class PlotWindow
+ {
+ /// <summary>
+ /// Required designer variable.
+ /// </summary>
+ private System.ComponentModel.IContainer components = null;
+
+ /// <summary>
+ /// Clean up any resources being used.
+ /// </summary>
+ /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ /// <summary>
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ /// </summary>
+ private void InitializeComponent()
+ {
+ this.BruteForcePlot = new System.Windows.Forms.PictureBox();
+ this.EstimationPlot = new System.Windows.Forms.PictureBox();
+ this.MSTPlot = new System.Windows.Forms.PictureBox();
+ this.LayoutPanel = new System.Windows.Forms.TableLayoutPanel();
+ this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
+ this.BruteForceTime = new System.Windows.Forms.Label();
+ this.BruteForceWeight = new System.Windows.Forms.Label();
+ this.BruteForceWeightLabel = new System.Windows.Forms.Label();
+ this.BruteForceTimeLabel = new System.Windows.Forms.Label();
+ this.tableLayoutPanel5 = new System.Windows.Forms.TableLayoutPanel();
+ this.EstimatedTime = new System.Windows.Forms.Label();
+ this.EstimatedWeight = new System.Windows.Forms.Label();
+ this.EstimatedWeightLabel = new System.Windows.Forms.Label();
+ this.EstimatedTimeLabel = new System.Windows.Forms.Label();
+ this.tableLayoutPanel6 = new System.Windows.Forms.TableLayoutPanel();
+ this.MSTTime = new System.Windows.Forms.Label();
+ this.MSTWeight = new System.Windows.Forms.Label();
+ this.MSTWeightLabel = new System.Windows.Forms.Label();
+ this.MSTTimeLabel = new System.Windows.Forms.Label();
+ this.TrueShortestLabel = new System.Windows.Forms.Label();
+ this.EstimatedLabel = new System.Windows.Forms.Label();
+ this.MSTLabel = new System.Windows.Forms.Label();
+ this.tableLayoutPanel7 = new System.Windows.Forms.TableLayoutPanel();
+ this.NextGraph = new System.Windows.Forms.Button();
+ this.GraphLabel = new System.Windows.Forms.Label();
+ this.PrevGraph = new System.Windows.Forms.Button();
+ this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
+ this.label4 = new System.Windows.Forms.Label();
+ this.label5 = new System.Windows.Forms.Label();
+ this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel();
+ this.label8 = new System.Windows.Forms.Label();
+ this.label9 = new System.Windows.Forms.Label();
+ this.tableLayoutPanel8 = new System.Windows.Forms.TableLayoutPanel();
+ this.SaveGraph = new System.Windows.Forms.Button();
+ this.SaveAll = new System.Windows.Forms.Button();
+ ((System.ComponentModel.ISupportInitialize)(this.BruteForcePlot)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.EstimationPlot)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.MSTPlot)).BeginInit();
+ this.LayoutPanel.SuspendLayout();
+ this.tableLayoutPanel1.SuspendLayout();
+ this.tableLayoutPanel5.SuspendLayout();
+ this.tableLayoutPanel6.SuspendLayout();
+ this.tableLayoutPanel7.SuspendLayout();
+ this.tableLayoutPanel2.SuspendLayout();
+ this.tableLayoutPanel3.SuspendLayout();
+ this.tableLayoutPanel4.SuspendLayout();
+ this.tableLayoutPanel8.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // BruteForcePlot
+ //
+ this.BruteForcePlot.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.BruteForcePlot.Location = new System.Drawing.Point(3, 3);
+ this.BruteForcePlot.Name = "BruteForcePlot";
+ this.BruteForcePlot.Size = new System.Drawing.Size(254, 273);
+ this.BruteForcePlot.TabIndex = 0;
+ this.BruteForcePlot.TabStop = false;
+ //
+ // EstimationPlot
+ //
+ this.EstimationPlot.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.EstimationPlot.Location = new System.Drawing.Point(263, 3);
+ this.EstimationPlot.Name = "EstimationPlot";
+ this.EstimationPlot.Size = new System.Drawing.Size(254, 273);
+ this.EstimationPlot.TabIndex = 1;
+ this.EstimationPlot.TabStop = false;
+ //
+ // MSTPlot
+ //
+ this.MSTPlot.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.MSTPlot.Location = new System.Drawing.Point(523, 3);
+ this.MSTPlot.Name = "MSTPlot";
+ this.MSTPlot.Size = new System.Drawing.Size(255, 273);
+ this.MSTPlot.TabIndex = 2;
+ this.MSTPlot.TabStop = false;
+ //
+ // LayoutPanel
+ //
+ this.LayoutPanel.AutoSize = true;
+ this.LayoutPanel.ColumnCount = 3;
+ this.LayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
+ this.LayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
+ this.LayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
+ this.LayoutPanel.Controls.Add(this.tableLayoutPanel1, 0, 2);
+ this.LayoutPanel.Controls.Add(this.tableLayoutPanel5, 1, 2);
+ this.LayoutPanel.Controls.Add(this.tableLayoutPanel6, 2, 2);
+ this.LayoutPanel.Controls.Add(this.BruteForcePlot, 0, 0);
+ this.LayoutPanel.Controls.Add(this.TrueShortestLabel, 0, 1);
+ this.LayoutPanel.Controls.Add(this.EstimationPlot, 1, 0);
+ this.LayoutPanel.Controls.Add(this.EstimatedLabel, 1, 1);
+ this.LayoutPanel.Controls.Add(this.MSTPlot, 2, 0);
+ this.LayoutPanel.Controls.Add(this.MSTLabel, 2, 1);
+ this.LayoutPanel.Controls.Add(this.tableLayoutPanel7, 1, 4);
+ this.LayoutPanel.Controls.Add(this.tableLayoutPanel8, 2, 4);
+ this.LayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.LayoutPanel.Location = new System.Drawing.Point(0, 0);
+ this.LayoutPanel.Name = "LayoutPanel";
+ this.LayoutPanel.RowCount = 4;
+ this.LayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
+ this.LayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.LayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.LayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.LayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.LayoutPanel.Size = new System.Drawing.Size(781, 381);
+ this.LayoutPanel.TabIndex = 4;
+ //
+ // tableLayoutPanel1
+ //
+ this.tableLayoutPanel1.AutoSize = true;
+ this.tableLayoutPanel1.ColumnCount = 2;
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel1.Controls.Add(this.BruteForceTime, 1, 1);
+ this.tableLayoutPanel1.Controls.Add(this.BruteForceWeight, 1, 0);
+ this.tableLayoutPanel1.Controls.Add(this.BruteForceWeightLabel, 0, 0);
+ this.tableLayoutPanel1.Controls.Add(this.BruteForceTimeLabel, 0, 1);
+ this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 306);
+ this.tableLayoutPanel1.Name = "tableLayoutPanel1";
+ this.tableLayoutPanel1.RowCount = 2;
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel1.Size = new System.Drawing.Size(254, 34);
+ this.tableLayoutPanel1.TabIndex = 12;
+ //
+ // BruteForceTime
+ //
+ this.BruteForceTime.AutoSize = true;
+ this.BruteForceTime.Dock = System.Windows.Forms.DockStyle.Left;
+ this.BruteForceTime.Font = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ this.BruteForceTime.Location = new System.Drawing.Point(130, 17);
+ this.BruteForceTime.Name = "BruteForceTime";
+ this.BruteForceTime.Size = new System.Drawing.Size(76, 17);
+ this.BruteForceTime.TabIndex = 13;
+ this.BruteForceTime.Text = "00:00:0.00";
+ this.BruteForceTime.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // BruteForceWeight
+ //
+ this.BruteForceWeight.AutoSize = true;
+ this.BruteForceWeight.Dock = System.Windows.Forms.DockStyle.Left;
+ this.BruteForceWeight.Font = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ this.BruteForceWeight.Location = new System.Drawing.Point(130, 0);
+ this.BruteForceWeight.Name = "BruteForceWeight";
+ this.BruteForceWeight.Size = new System.Drawing.Size(44, 17);
+ this.BruteForceWeight.TabIndex = 12;
+ this.BruteForceWeight.Text = "0.000";
+ this.BruteForceWeight.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // BruteForceWeightLabel
+ //
+ this.BruteForceWeightLabel.AutoSize = true;
+ this.BruteForceWeightLabel.Dock = System.Windows.Forms.DockStyle.Right;
+ this.BruteForceWeightLabel.Font = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ this.BruteForceWeightLabel.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
+ this.BruteForceWeightLabel.Location = new System.Drawing.Point(66, 0);
+ this.BruteForceWeightLabel.Name = "BruteForceWeightLabel";
+ this.BruteForceWeightLabel.Size = new System.Drawing.Size(58, 17);
+ this.BruteForceWeightLabel.TabIndex = 11;
+ this.BruteForceWeightLabel.Text = "Weight:";
+ this.BruteForceWeightLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ // BruteForceTimeLabel
+ //
+ this.BruteForceTimeLabel.AutoSize = true;
+ this.BruteForceTimeLabel.Dock = System.Windows.Forms.DockStyle.Right;
+ this.BruteForceTimeLabel.Font = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ this.BruteForceTimeLabel.Location = new System.Drawing.Point(57, 17);
+ this.BruteForceTimeLabel.Name = "BruteForceTimeLabel";
+ this.BruteForceTimeLabel.Size = new System.Drawing.Size(67, 17);
+ this.BruteForceTimeLabel.TabIndex = 9;
+ this.BruteForceTimeLabel.Text = "Runtime:";
+ this.BruteForceTimeLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ // tableLayoutPanel5
+ //
+ this.tableLayoutPanel5.AutoSize = true;
+ this.tableLayoutPanel5.ColumnCount = 2;
+ this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel5.Controls.Add(this.EstimatedTime, 1, 1);
+ this.tableLayoutPanel5.Controls.Add(this.EstimatedWeight, 1, 0);
+ this.tableLayoutPanel5.Controls.Add(this.EstimatedWeightLabel, 0, 0);
+ this.tableLayoutPanel5.Controls.Add(this.EstimatedTimeLabel, 0, 1);
+ this.tableLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel5.Location = new System.Drawing.Point(263, 306);
+ this.tableLayoutPanel5.Name = "tableLayoutPanel5";
+ this.tableLayoutPanel5.RowCount = 2;
+ this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel5.Size = new System.Drawing.Size(254, 34);
+ this.tableLayoutPanel5.TabIndex = 13;
+ //
+ // EstimatedTime
+ //
+ this.EstimatedTime.AutoSize = true;
+ this.EstimatedTime.Dock = System.Windows.Forms.DockStyle.Left;
+ this.EstimatedTime.Font = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ this.EstimatedTime.Location = new System.Drawing.Point(130, 17);
+ this.EstimatedTime.Name = "EstimatedTime";
+ this.EstimatedTime.Size = new System.Drawing.Size(76, 17);
+ this.EstimatedTime.TabIndex = 13;
+ this.EstimatedTime.Text = "00:00:0.00";
+ this.EstimatedTime.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // EstimatedWeight
+ //
+ this.EstimatedWeight.AutoSize = true;
+ this.EstimatedWeight.Dock = System.Windows.Forms.DockStyle.Left;
+ this.EstimatedWeight.Font = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ this.EstimatedWeight.Location = new System.Drawing.Point(130, 0);
+ this.EstimatedWeight.Name = "EstimatedWeight";
+ this.EstimatedWeight.Size = new System.Drawing.Size(44, 17);
+ this.EstimatedWeight.TabIndex = 12;
+ this.EstimatedWeight.Text = "0.000";
+ this.EstimatedWeight.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // EstimatedWeightLabel
+ //
+ this.EstimatedWeightLabel.AutoSize = true;
+ this.EstimatedWeightLabel.Dock = System.Windows.Forms.DockStyle.Right;
+ this.EstimatedWeightLabel.Font = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ this.EstimatedWeightLabel.Location = new System.Drawing.Point(66, 0);
+ this.EstimatedWeightLabel.Name = "EstimatedWeightLabel";
+ this.EstimatedWeightLabel.Size = new System.Drawing.Size(58, 17);
+ this.EstimatedWeightLabel.TabIndex = 11;
+ this.EstimatedWeightLabel.Text = "Weight:";
+ this.EstimatedWeightLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ // EstimatedTimeLabel
+ //
+ this.EstimatedTimeLabel.AutoSize = true;
+ this.EstimatedTimeLabel.Dock = System.Windows.Forms.DockStyle.Right;
+ this.EstimatedTimeLabel.Font = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ this.EstimatedTimeLabel.Location = new System.Drawing.Point(57, 17);
+ this.EstimatedTimeLabel.Name = "EstimatedTimeLabel";
+ this.EstimatedTimeLabel.Size = new System.Drawing.Size(67, 17);
+ this.EstimatedTimeLabel.TabIndex = 9;
+ this.EstimatedTimeLabel.Text = "Runtime:";
+ this.EstimatedTimeLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ // tableLayoutPanel6
+ //
+ this.tableLayoutPanel6.AutoSize = true;
+ this.tableLayoutPanel6.ColumnCount = 2;
+ this.tableLayoutPanel6.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel6.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel6.Controls.Add(this.MSTTime, 1, 1);
+ this.tableLayoutPanel6.Controls.Add(this.MSTWeight, 1, 0);
+ this.tableLayoutPanel6.Controls.Add(this.MSTWeightLabel, 0, 0);
+ this.tableLayoutPanel6.Controls.Add(this.MSTTimeLabel, 0, 1);
+ this.tableLayoutPanel6.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel6.Location = new System.Drawing.Point(523, 306);
+ this.tableLayoutPanel6.Name = "tableLayoutPanel6";
+ this.tableLayoutPanel6.RowCount = 2;
+ this.tableLayoutPanel6.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel6.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel6.Size = new System.Drawing.Size(255, 34);
+ this.tableLayoutPanel6.TabIndex = 14;
+ //
+ // MSTTime
+ //
+ this.MSTTime.AutoSize = true;
+ this.MSTTime.Dock = System.Windows.Forms.DockStyle.Left;
+ this.MSTTime.Font = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ this.MSTTime.Location = new System.Drawing.Point(130, 17);
+ this.MSTTime.Name = "MSTTime";
+ this.MSTTime.Size = new System.Drawing.Size(76, 17);
+ this.MSTTime.TabIndex = 13;
+ this.MSTTime.Text = "00:00:0.00";
+ this.MSTTime.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // MSTWeight
+ //
+ this.MSTWeight.AutoSize = true;
+ this.MSTWeight.Dock = System.Windows.Forms.DockStyle.Left;
+ this.MSTWeight.Font = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ this.MSTWeight.Location = new System.Drawing.Point(130, 0);
+ this.MSTWeight.Name = "MSTWeight";
+ this.MSTWeight.Size = new System.Drawing.Size(44, 17);
+ this.MSTWeight.TabIndex = 12;
+ this.MSTWeight.Text = "0.000";
+ this.MSTWeight.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // MSTWeightLabel
+ //
+ this.MSTWeightLabel.AutoSize = true;
+ this.MSTWeightLabel.Dock = System.Windows.Forms.DockStyle.Right;
+ this.MSTWeightLabel.Font = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ this.MSTWeightLabel.Location = new System.Drawing.Point(66, 0);
+ this.MSTWeightLabel.Name = "MSTWeightLabel";
+ this.MSTWeightLabel.Size = new System.Drawing.Size(58, 17);
+ this.MSTWeightLabel.TabIndex = 11;
+ this.MSTWeightLabel.Text = "Weight:";
+ this.MSTWeightLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ // MSTTimeLabel
+ //
+ this.MSTTimeLabel.AutoSize = true;
+ this.MSTTimeLabel.Dock = System.Windows.Forms.DockStyle.Right;
+ this.MSTTimeLabel.Font = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ this.MSTTimeLabel.Location = new System.Drawing.Point(57, 17);
+ this.MSTTimeLabel.Name = "MSTTimeLabel";
+ this.MSTTimeLabel.Size = new System.Drawing.Size(67, 17);
+ this.MSTTimeLabel.TabIndex = 9;
+ this.MSTTimeLabel.Text = "Runtime:";
+ this.MSTTimeLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ // TrueShortestLabel
+ //
+ this.TrueShortestLabel.AutoSize = true;
+ this.TrueShortestLabel.Dock = System.Windows.Forms.DockStyle.Top;
+ this.TrueShortestLabel.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ this.TrueShortestLabel.Location = new System.Drawing.Point(3, 279);
+ this.TrueShortestLabel.Name = "TrueShortestLabel";
+ this.TrueShortestLabel.Size = new System.Drawing.Size(254, 22);
+ this.TrueShortestLabel.TabIndex = 3;
+ this.TrueShortestLabel.Text = "True Shortest Tour";
+ this.TrueShortestLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // EstimatedLabel
+ //
+ this.EstimatedLabel.AutoSize = true;
+ this.EstimatedLabel.Dock = System.Windows.Forms.DockStyle.Top;
+ this.EstimatedLabel.Font = new System.Drawing.Font("Arial", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ this.EstimatedLabel.Location = new System.Drawing.Point(263, 279);
+ this.EstimatedLabel.Name = "EstimatedLabel";
+ this.EstimatedLabel.Size = new System.Drawing.Size(254, 24);
+ this.EstimatedLabel.TabIndex = 4;
+ this.EstimatedLabel.Text = "MST Approximation";
+ this.EstimatedLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // MSTLabel
+ //
+ this.MSTLabel.AutoSize = true;
+ this.MSTLabel.Dock = System.Windows.Forms.DockStyle.Top;
+ this.MSTLabel.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ this.MSTLabel.Location = new System.Drawing.Point(523, 279);
+ this.MSTLabel.Name = "MSTLabel";
+ this.MSTLabel.Size = new System.Drawing.Size(255, 22);
+ this.MSTLabel.TabIndex = 5;
+ this.MSTLabel.Text = "MST";
+ this.MSTLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // tableLayoutPanel7
+ //
+ this.tableLayoutPanel7.AutoSize = true;
+ this.tableLayoutPanel7.ColumnCount = 3;
+ this.tableLayoutPanel7.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel7.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel7.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel7.Controls.Add(this.NextGraph, 2, 0);
+ this.tableLayoutPanel7.Controls.Add(this.GraphLabel, 1, 0);
+ this.tableLayoutPanel7.Controls.Add(this.PrevGraph, 0, 0);
+ this.tableLayoutPanel7.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel7.Location = new System.Drawing.Point(263, 346);
+ this.tableLayoutPanel7.Name = "tableLayoutPanel7";
+ this.tableLayoutPanel7.RowCount = 1;
+ this.tableLayoutPanel7.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel7.Size = new System.Drawing.Size(254, 32);
+ this.tableLayoutPanel7.TabIndex = 18;
+ //
+ // NextGraph
+ //
+ this.NextGraph.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.NextGraph.AutoSize = true;
+ this.NextGraph.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.NextGraph.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ this.NextGraph.Location = new System.Drawing.Point(165, 3);
+ this.NextGraph.Name = "NextGraph";
+ this.NextGraph.Size = new System.Drawing.Size(25, 26);
+ this.NextGraph.TabIndex = 15;
+ this.NextGraph.Text = ">";
+ this.NextGraph.UseVisualStyleBackColor = true;
+ this.NextGraph.Click += new System.EventHandler(this.NextGraph_Click);
+ //
+ // GraphLabel
+ //
+ this.GraphLabel.AutoSize = true;
+ this.GraphLabel.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.GraphLabel.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ this.GraphLabel.Location = new System.Drawing.Point(95, 0);
+ this.GraphLabel.Name = "GraphLabel";
+ this.GraphLabel.Size = new System.Drawing.Size(64, 32);
+ this.GraphLabel.TabIndex = 17;
+ this.GraphLabel.Text = "Graph 1";
+ this.GraphLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // PrevGraph
+ //
+ this.PrevGraph.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.PrevGraph.AutoSize = true;
+ this.PrevGraph.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.PrevGraph.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ this.PrevGraph.Location = new System.Drawing.Point(64, 3);
+ this.PrevGraph.Name = "PrevGraph";
+ this.PrevGraph.Size = new System.Drawing.Size(25, 26);
+ this.PrevGraph.TabIndex = 16;
+ this.PrevGraph.Text = "<";
+ this.PrevGraph.UseVisualStyleBackColor = true;
+ this.PrevGraph.Click += new System.EventHandler(this.PrevGraph_Click);
+ //
+ // tableLayoutPanel2
+ //
+ this.tableLayoutPanel2.AutoSize = true;
+ this.tableLayoutPanel2.ColumnCount = 2;
+ this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel2.Controls.Add(this.label2, 1, 1);
+ this.tableLayoutPanel2.Location = new System.Drawing.Point(0, 0);
+ this.tableLayoutPanel2.Name = "tableLayoutPanel2";
+ this.tableLayoutPanel2.RowCount = 2;
+ this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+ this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+ this.tableLayoutPanel2.Size = new System.Drawing.Size(200, 100);
+ this.tableLayoutPanel2.TabIndex = 0;
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Dock = System.Windows.Forms.DockStyle.Left;
+ this.label2.Font = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ this.label2.Location = new System.Drawing.Point(103, 20);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(84, 80);
+ this.label2.TabIndex = 13;
+ this.label2.Text = "00:00:12.41";
+ this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Dock = System.Windows.Forms.DockStyle.Left;
+ this.label3.Font = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ this.label3.Location = new System.Drawing.Point(166, 0);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(60, 17);
+ this.label3.TabIndex = 12;
+ this.label3.Text = "123.342";
+ this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // tableLayoutPanel3
+ //
+ this.tableLayoutPanel3.AutoSize = true;
+ this.tableLayoutPanel3.ColumnCount = 2;
+ this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel3.Controls.Add(this.label4, 1, 1);
+ this.tableLayoutPanel3.Location = new System.Drawing.Point(0, 0);
+ this.tableLayoutPanel3.Name = "tableLayoutPanel3";
+ this.tableLayoutPanel3.RowCount = 2;
+ this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+ this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+ this.tableLayoutPanel3.Size = new System.Drawing.Size(200, 100);
+ this.tableLayoutPanel3.TabIndex = 0;
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Dock = System.Windows.Forms.DockStyle.Left;
+ this.label4.Font = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ this.label4.Location = new System.Drawing.Point(103, 20);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(84, 80);
+ this.label4.TabIndex = 13;
+ this.label4.Text = "00:00:12.41";
+ this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // label5
+ //
+ this.label5.AutoSize = true;
+ this.label5.Dock = System.Windows.Forms.DockStyle.Left;
+ this.label5.Font = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ this.label5.Location = new System.Drawing.Point(166, 0);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(60, 17);
+ this.label5.TabIndex = 12;
+ this.label5.Text = "123.342";
+ this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // tableLayoutPanel4
+ //
+ this.tableLayoutPanel4.AutoSize = true;
+ this.tableLayoutPanel4.ColumnCount = 2;
+ this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel4.Controls.Add(this.label8, 1, 1);
+ this.tableLayoutPanel4.Location = new System.Drawing.Point(0, 0);
+ this.tableLayoutPanel4.Name = "tableLayoutPanel4";
+ this.tableLayoutPanel4.RowCount = 2;
+ this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+ this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+ this.tableLayoutPanel4.Size = new System.Drawing.Size(200, 100);
+ this.tableLayoutPanel4.TabIndex = 0;
+ //
+ // label8
+ //
+ this.label8.AutoSize = true;
+ this.label8.Dock = System.Windows.Forms.DockStyle.Left;
+ this.label8.Font = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ this.label8.Location = new System.Drawing.Point(103, 20);
+ this.label8.Name = "label8";
+ this.label8.Size = new System.Drawing.Size(84, 80);
+ this.label8.TabIndex = 13;
+ this.label8.Text = "00:00:12.41";
+ this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // label9
+ //
+ this.label9.AutoSize = true;
+ this.label9.Dock = System.Windows.Forms.DockStyle.Left;
+ this.label9.Font = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ this.label9.Location = new System.Drawing.Point(166, 0);
+ this.label9.Name = "label9";
+ this.label9.Size = new System.Drawing.Size(60, 17);
+ this.label9.TabIndex = 12;
+ this.label9.Text = "123.342";
+ this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // tableLayoutPanel8
+ //
+ this.tableLayoutPanel8.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.tableLayoutPanel8.AutoSize = true;
+ this.tableLayoutPanel8.ColumnCount = 2;
+ this.tableLayoutPanel8.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel8.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel8.Controls.Add(this.SaveGraph, 1, 0);
+ this.tableLayoutPanel8.Controls.Add(this.SaveAll, 0, 0);
+ this.tableLayoutPanel8.Location = new System.Drawing.Point(616, 347);
+ this.tableLayoutPanel8.Name = "tableLayoutPanel8";
+ this.tableLayoutPanel8.RowCount = 1;
+ this.tableLayoutPanel8.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel8.Size = new System.Drawing.Size(162, 29);
+ this.tableLayoutPanel8.TabIndex = 19;
+ //
+ // SaveGraph
+ //
+ this.SaveGraph.Location = new System.Drawing.Point(84, 3);
+ this.SaveGraph.Name = "SaveGraph";
+ this.SaveGraph.Size = new System.Drawing.Size(75, 23);
+ this.SaveGraph.TabIndex = 0;
+ this.SaveGraph.Text = "Save Graph";
+ this.SaveGraph.UseVisualStyleBackColor = true;
+ this.SaveGraph.Click += new System.EventHandler(this.SaveGraph_Click);
+ //
+ // SaveAll
+ //
+ this.SaveAll.Location = new System.Drawing.Point(3, 3);
+ this.SaveAll.Name = "SaveAll";
+ this.SaveAll.Size = new System.Drawing.Size(75, 23);
+ this.SaveAll.TabIndex = 1;
+ this.SaveAll.Text = "Save All";
+ this.SaveAll.UseVisualStyleBackColor = true;
+ this.SaveAll.Click += new System.EventHandler(this.SaveAll_Click);
+ //
+ // PlotWindow
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(781, 381);
+ this.Controls.Add(this.LayoutPanel);
+ this.MinimumSize = new System.Drawing.Size(780, 350);
+ this.Name = "PlotWindow";
+ this.Text = "TSP: Graph 1";
+ this.SizeChanged += new System.EventHandler(this.Canvas_SizeChanged);
+ ((System.ComponentModel.ISupportInitialize)(this.BruteForcePlot)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.EstimationPlot)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.MSTPlot)).EndInit();
+ this.LayoutPanel.ResumeLayout(false);
+ this.LayoutPanel.PerformLayout();
+ this.tableLayoutPanel1.ResumeLayout(false);
+ this.tableLayoutPanel1.PerformLayout();
+ this.tableLayoutPanel5.ResumeLayout(false);
+ this.tableLayoutPanel5.PerformLayout();
+ this.tableLayoutPanel6.ResumeLayout(false);
+ this.tableLayoutPanel6.PerformLayout();
+ this.tableLayoutPanel7.ResumeLayout(false);
+ this.tableLayoutPanel7.PerformLayout();
+ this.tableLayoutPanel2.ResumeLayout(false);
+ this.tableLayoutPanel2.PerformLayout();
+ this.tableLayoutPanel3.ResumeLayout(false);
+ this.tableLayoutPanel3.PerformLayout();
+ this.tableLayoutPanel4.ResumeLayout(false);
+ this.tableLayoutPanel4.PerformLayout();
+ this.tableLayoutPanel8.ResumeLayout(false);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.PictureBox BruteForcePlot;
+ private System.Windows.Forms.PictureBox EstimationPlot;
+ private System.Windows.Forms.PictureBox MSTPlot;
+ private System.Windows.Forms.TableLayoutPanel LayoutPanel;
+ private System.Windows.Forms.Label MSTLabel;
+ private System.Windows.Forms.Label TrueShortestLabel;
+ private System.Windows.Forms.Label EstimatedLabel;
+ private System.Windows.Forms.Label BruteForceTimeLabel;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
+ private System.Windows.Forms.Label BruteForceWeightLabel;
+ private System.Windows.Forms.Label BruteForceTime;
+ private System.Windows.Forms.Label BruteForceWeight;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel5;
+ private System.Windows.Forms.Label EstimatedTime;
+ private System.Windows.Forms.Label EstimatedWeight;
+ private System.Windows.Forms.Label EstimatedWeightLabel;
+ private System.Windows.Forms.Label EstimatedTimeLabel;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel6;
+ private System.Windows.Forms.Label MSTTime;
+ private System.Windows.Forms.Label MSTWeight;
+ private System.Windows.Forms.Label MSTWeightLabel;
+ private System.Windows.Forms.Label MSTTimeLabel;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4;
+ private System.Windows.Forms.Label label8;
+ private System.Windows.Forms.Label label9;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel7;
+ private System.Windows.Forms.Label GraphLabel;
+ private System.Windows.Forms.Button NextGraph;
+ private System.Windows.Forms.Button PrevGraph;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel8;
+ private System.Windows.Forms.Button SaveGraph;
+ private System.Windows.Forms.Button SaveAll;
+ }
+}
+
diff --git a/Plot.cs b/Plot.cs
new file mode 100644
index 0000000..6732fe1
--- /dev/null
+++ b/Plot.cs
@@ -0,0 +1,135 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.Linq;
+using System.Windows.Forms;
+using TSP;
+
+namespace Plotter
+{
+ public partial class PlotWindow : Form
+ {
+ // List<TourPlot[]> Plots;
+ List<TourPlot[]> Plots = new();
+ int CurrentGraph { get; set; } = 0;
+ bool AutoSave = false;
+
+ public PlotWindow()
+ {
+ InitializeComponent();
+
+ var folderBrowserDialog = new FolderBrowserDialog();
+
+ // Show the FolderBrowserDialog.
+ DialogResult result = folderBrowserDialog.ShowDialog();
+
+ foreach (string graphFile in Directory.GetFiles("graphs/", "*.txt"))
+ {
+ Plots.Add(GetTourSet(graphFile));
+ if (result == DialogResult.OK)
+ SaveSet(folderBrowserDialog.SelectedPath, Plots.Last());
+ }
+
+ NextGraph.Enabled = (Plots.Count > 1);
+ PrevGraph.Enabled = false;
+
+ RenderWindow();
+ }
+
+ void RenderWindow()
+ {
+ Text = $"TSP: Graph {CurrentGraph + 1}";
+ GraphLabel.Text = $"Graph {CurrentGraph + 1}";
+ foreach (var plot in Plots[CurrentGraph])
+ plot.Render();
+ }
+
+ TourPlot[] GetTourSet(string graphFile)
+ {
+ string graphName = Path.GetFileNameWithoutExtension(graphFile);
+ string coordsFile = $"graphs/{graphName}.csv";
+
+ TourPlot bruteForce = new(graphName, "bruteforce", BruteForcePlot, BruteForceWeight, BruteForceTime);
+ TourPlot approximate = new(graphName, "approximation", EstimationPlot, EstimatedWeight, EstimatedTime);
+ TourPlot mst = new(graphName, "mst", MSTPlot, MSTWeight, MSTTime);
+
+ Stopwatch stopWatch = new Stopwatch();
+ stopWatch.Start();
+ bruteForce.Tour = TSPSolver.Solve(graphFile, coordsFile, 0);
+ stopWatch.Stop();
+ bruteForce.Runtime = stopWatch.Elapsed;
+
+
+ stopWatch.Reset();
+ stopWatch.Start();
+ approximate.Tour = TSPSolver.Approximate(graphFile, coordsFile, 0);
+ stopWatch.Stop();
+ approximate.Runtime = stopWatch.Elapsed;
+
+
+ stopWatch.Reset();
+ stopWatch.Start();
+ mst.Tour = TSPSolver.MST(graphFile, coordsFile, 0);
+ stopWatch.Stop();
+ mst.Runtime = stopWatch.Elapsed;
+
+ return new[] { bruteForce, approximate, mst };
+ }
+
+ private void SaveSet(string folderName, TourPlot[] plots)
+ {
+ string header = $"Graph,Type,Runtime,Weight,"
+ + String.Join(',', Enumerable.Repeat("City", 13).Zip(Enumerable.Range(1, 13), (l, n) => $"{l}{n}"));
+
+ if (!File.Exists(Path.Join(folderName, "data.csv")))
+ File.WriteAllText(Path.Join(folderName, "data.csv"), $"{header}\n");
+
+ plots[0].Save(folderName);
+ plots[1].Save(folderName);
+ plots[2].Save(folderName);
+ }
+
+ private void Canvas_SizeChanged(object sender, EventArgs e)
+ {
+ RenderWindow();
+ }
+
+ private void NextGraph_Click(object sender, EventArgs e)
+ {
+ CurrentGraph++;
+ RenderWindow();
+ PrevGraph.Enabled = true;
+ NextGraph.Enabled = (CurrentGraph < Plots.Count - 1);
+ }
+
+ private void PrevGraph_Click(object sender, EventArgs e)
+ {
+ CurrentGraph--;
+ RenderWindow();
+ NextGraph.Enabled = true;
+ PrevGraph.Enabled = (CurrentGraph > 0);
+ }
+
+ private void SaveGraph_Click(object sender, EventArgs e)
+ {
+ var folderBrowserDialog = new FolderBrowserDialog();
+
+ // Show the FolderBrowserDialog.
+ DialogResult result = folderBrowserDialog.ShowDialog();
+ if (result == DialogResult.OK)
+ SaveSet(folderBrowserDialog.SelectedPath, Plots[CurrentGraph]);
+ }
+
+ private void SaveAll_Click(object sender, EventArgs e)
+ {
+ var folderBrowserDialog = new FolderBrowserDialog();
+
+ // Show the FolderBrowserDialog.
+ DialogResult result = folderBrowserDialog.ShowDialog();
+ if (result == DialogResult.OK)
+ for (int i = 0; i < Plots.Count; i++)
+ SaveSet(folderBrowserDialog.SelectedPath, Plots[i]);
+ }
+ }
+}
diff --git a/Plot.resx b/Plot.resx
new file mode 100644
index 0000000..f298a7b
--- /dev/null
+++ b/Plot.resx
@@ -0,0 +1,60 @@
+<root>
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+</root> \ No newline at end of file
diff --git a/Plotter.csproj b/Plotter.csproj
new file mode 100644
index 0000000..4c973b3
--- /dev/null
+++ b/Plotter.csproj
@@ -0,0 +1,21 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <ItemGroup>
+ <ProjectReference Include="..\Graph\Graph.csproj" />
+ <ProjectReference Include="..\TSP\TSP.csproj" />
+ <Content Include="graphs\*.*">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </Content>
+ </ItemGroup>
+
+ <ItemGroup>
+ <None Remove="graphs\test.txt" />
+ </ItemGroup>
+ <PropertyGroup>
+ <OutputType>WinExe</OutputType>
+ <TargetFramework>net5.0-windows</TargetFramework>
+ <UseWindowsForms>true</UseWindowsForms>
+ <RootNamespace>Plotter</RootNamespace>
+ </PropertyGroup>
+
+</Project> \ No newline at end of file
diff --git a/Program.cs b/Program.cs
new file mode 100644
index 0000000..d9175fe
--- /dev/null
+++ b/Program.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using Graph;
+using Graph.IO;
+using TSP;
+
+namespace Plotter
+{
+ static class Program
+ {
+ /// <summary>
+ /// The main entry point for the application.
+ /// </summary>
+ [STAThread]
+ static void Main()
+ {
+ Application.SetHighDpiMode(HighDpiMode.SystemAware);
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new PlotWindow());
+ }
+ }
+}
diff --git a/TourPlot.cs b/TourPlot.cs
new file mode 100644
index 0000000..751fd2e
--- /dev/null
+++ b/TourPlot.cs
@@ -0,0 +1,114 @@
+using System;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Windows.Forms;
+using TSP;
+
+namespace Plotter
+{
+ public class TourPlot
+ {
+ public string GraphName { get; set; }
+ public string Type { get; set; }
+ public Tour Tour { get; set; }
+ public PictureBox Canvas { get; set; }
+ public Label WeightLabel { get; set; }
+ public Label RuntimeLabel { get; set; }
+ public TimeSpan Runtime { get; set; }
+
+ public TourPlot(string graphName, string type, PictureBox canvas, Label weightLabel, Label runtimeLabel)
+ {
+ GraphName = graphName;
+ Type = type;
+ Canvas = canvas;
+ WeightLabel = weightLabel;
+ RuntimeLabel = runtimeLabel;
+ }
+
+ public void Save(string filename) =>
+ Save(filename, Canvas.Width, Canvas.Height);
+
+ public void Save(string filename, int width, int height)
+ {
+ Draw(300, 300).Save(Path.Join(filename, $"{GraphName}_{Type}.png"));
+ File.AppendAllText(Path.Join(filename, $"data.csv"), $"{this}\n");
+ }
+
+ public void Render()
+ {
+ Draw(Canvas.Width, Canvas.Height);
+
+ // copy the bitmap to the picturebox (double buffered)
+ Canvas.Image?.Dispose();
+ Canvas.Image = Draw(Canvas.Width, Canvas.Height);
+
+ // set runtime and weight labels
+ RuntimeLabel.Text = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
+ Runtime.Hours, Runtime.Minutes, Runtime.Seconds, Runtime.Milliseconds / 10);
+
+ WeightLabel.Text = Tour.Weight.ToString("F3");
+ }
+
+ public Bitmap Draw(int width, int height)
+ {
+ const int Offset = 25;
+ const int PlotSize = 100;
+
+ using Bitmap bmp = new(width, height);
+ using Graphics gfx = Graphics.FromImage(bmp);
+ using Pen pen = new(Color.Black);
+ using Pen gridPen = new(Color.LightGray);
+ using Font font = new("Arial", 12);
+ using Font gridFont = new("Arial", 10);
+ using SolidBrush brush = new(Color.Black);
+ using StringFormat stringFormat = new StringFormat();
+
+ gfx.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
+ gfx.Clear(Color.White);
+
+ for (int i = 0; i <= 100; i += 10)
+ {
+ Point left = ScaleLocation(new Coordinate(0, i));
+ Point right = ScaleLocation(new Coordinate(100, i));
+ gfx.DrawLine(gridPen, left, right);
+ stringFormat.Alignment = StringAlignment.Far;
+ stringFormat.LineAlignment = StringAlignment.Center;
+ gfx.DrawString(i.ToString(), gridFont, brush, left, stringFormat);
+
+ Point bottom = ScaleLocation(new Coordinate(i, 0));
+ Point top = ScaleLocation(new Coordinate(i, 100));
+ gfx.DrawLine(gridPen, bottom, top);
+ stringFormat.Alignment = StringAlignment.Center;
+ stringFormat.LineAlignment = StringAlignment.Near;
+ gfx.DrawString(i.ToString(), gridFont, brush, bottom, stringFormat);
+ }
+
+ // iterate through each city and draw line from Location to parent.Location
+ foreach (City city in Tour.Cities.Where(city => city.Parent != -1))
+ {
+ City parent = Tour[city.Parent];
+
+ Point cityPoint = ScaleLocation(city.Location);
+ Point parentPoint = ScaleLocation(parent.Location);
+
+ gfx.DrawString(city.Id.ToString(), font, brush, cityPoint);
+ gfx.DrawLine(pen, cityPoint, parentPoint);
+ }
+
+ return (Bitmap)bmp.Clone();
+
+ // helper function to unify the scaling of images
+ Point ScaleLocation(Coordinate coordinate)
+ {
+ int x = width * (coordinate.X + Offset / 2) / (Offset + PlotSize);
+ int y = height * ((coordinate.Y - PlotSize) * -1 + Offset / 2) / (Offset + PlotSize);
+
+ return new Point(x, y);
+ }
+
+ }
+
+ public override string ToString() => $"{GraphName},{Type},{Runtime.TotalSeconds},{Tour}";
+ }
+}
diff --git a/graphs/graph1.csv b/graphs/graph1.csv
new file mode 100644
index 0000000..17891b7
--- /dev/null
+++ b/graphs/graph1.csv
@@ -0,0 +1,13 @@
+20,72
+97,89
+44,12
+76,91
+91,61
+23,18
+25,79
+67,53
+72,17
+62,53
+95,98
+8,87
+94,34
diff --git a/graphs/graph1.txt b/graphs/graph1.txt
new file mode 100644
index 0000000..f31c4fd
--- /dev/null
+++ b/graphs/graph1.txt
@@ -0,0 +1,13 @@
+0 1 78.85429601486528 2 64.62197768561404 3 59.135437767890075 4 71.84705978674423 5 54.08326913195984 6 8.602325267042627 7 50.695167422546305 8 75.69015788066504 9 46.09772228646444 10 79.37883848986453 11 19.209372712298546 12 83.18653737234169
+1 0 78.85429601486528 2 93.47726996441435 3 21.095023109728988 4 28.635642126552707 5 102.55242561733974 6 72.69112738154499 7 46.861498055439924 8 76.21679604916491 9 50.20956084253277 10 9.219544457292887 11 89.02246907382428 12 55.08175741568164
+2 0 64.62197768561404 1 93.47726996441435 3 85.23496934944014 4 67.89698078707183 5 21.840329667841555 6 69.6419413859206 7 47.01063709417264 8 28.442925306655784 9 44.77722635447622 10 99.98499887483122 11 83.19254774317228 12 54.62600113499065
+3 0 59.135437767890075 1 21.095023109728988 2 85.23496934944014 4 33.54101966249684 5 90.21086409075129 6 52.392747589718944 7 39.05124837953327 8 74.10802925459562 9 40.496913462633174 10 20.248456731316587 11 68.11754546370561 12 59.77457653551382
+4 0 71.84705978674423 1 28.635642126552707 2 67.89698078707183 3 33.54101966249684 5 80.45495634204272 6 68.41052550594829 7 25.298221281347036 8 47.92702786528704 9 30.083217912982647 10 37.21558813185679 11 86.97700845625813 12 27.16615541441225
+5 0 54.08326913195984 1 102.55242561733974 2 21.840329667841555 3 90.21086409075129 4 80.45495634204272 6 61.032778078668514 7 56.22277118748239 8 49.01020301937138 9 52.40229002629561 10 107.62899237658968 11 70.61161377563892 12 72.78049189171504
+6 0 8.602325267042627 1 72.69112738154499 2 69.6419413859206 3 52.392747589718944 4 68.41052550594829 5 61.032778078668514 7 49.39635614091387 8 77.80102827083971 9 45.221676218380054 10 72.53275122315436 11 18.788294228055936 12 82.37718130647589
+7 0 50.695167422546305 1 46.861498055439924 2 47.01063709417264 3 39.05124837953327 4 25.298221281347036 5 56.22277118748239 6 49.39635614091387 8 36.345563690772494 9 5.0 10 53.0 11 68.09552114493287 12 33.015148038438355
+8 0 75.69015788066504 1 76.21679604916491 2 28.442925306655784 3 74.10802925459562 4 47.92702786528704 5 49.01020301937138 6 77.80102827083971 7 36.345563690772494 9 37.36308338453881 10 84.20213774008353 11 94.847245611035 12 27.80287754891569
+9 0 46.09772228646444 1 50.20956084253277 2 44.77722635447622 3 40.496913462633174 4 30.083217912982647 5 52.40229002629561 6 45.221676218380054 7 5.0 8 37.36308338453881 10 55.80322571321482 11 63.812224534175265 12 37.21558813185679
+10 0 79.37883848986453 1 9.219544457292887 2 99.98499887483122 3 20.248456731316587 4 37.21558813185679 5 107.62899237658968 6 72.53275122315436 7 53.0 8 84.20213774008353 9 55.80322571321482 11 87.69264507357501 12 64.00781202322104
+11 0 19.209372712298546 1 89.02246907382428 2 83.19254774317228 3 68.11754546370561 4 86.97700845625813 5 70.61161377563892 6 18.788294228055936 7 68.09552114493287 8 94.847245611035 9 63.812224534175265 10 87.69264507357501 12 101.01980003939822
+12 0 83.18653737234169 1 55.08175741568164 2 54.62600113499065 3 59.77457653551382 4 27.16615541441225 5 72.78049189171504 6 82.37718130647589 7 33.015148038438355 8 27.80287754891569 9 37.21558813185679 10 64.00781202322104 11 101.01980003939822
diff --git a/graphs/graph10.csv b/graphs/graph10.csv
new file mode 100644
index 0000000..b443717
--- /dev/null
+++ b/graphs/graph10.csv
@@ -0,0 +1,13 @@
+76,4
+91,57
+95,93
+45,72
+33,14
+72,18
+80,42
+40,86
+20,2
+54,20
+51,97
+65,86
+90,19
diff --git a/graphs/graph10.txt b/graphs/graph10.txt
new file mode 100644
index 0000000..4f999c7
--- /dev/null
+++ b/graphs/graph10.txt
@@ -0,0 +1,13 @@
+0 1 55.08175741568164 2 91.00549433962765 3 74.73285756613352 4 44.14748010928823 5 14.560219778561036 6 38.2099463490856 7 89.55445270895244 8 56.0357029044876 9 27.202941017470888 10 96.30160954002794 11 82.73451516749222 12 20.518284528683193
+1 0 55.08175741568164 2 36.22154055254967 3 48.38388161361178 4 72.20110802473879 5 43.382023926967726 6 18.601075237738275 7 58.66856057549052 8 89.81091247727082 9 52.32590180780452 10 56.568542494923804 11 38.948684188300895 12 38.01315561749642
+2 0 91.00549433962765 1 36.22154055254967 3 54.230987451824994 4 100.42410069301094 5 78.44743462982075 6 53.16013544000805 7 55.44366510251645 8 117.92370414806346 9 83.72574275573791 10 44.181444068749045 11 30.805843601498726 12 74.16872656315464
+3 0 74.73285756613352 1 48.38388161361178 2 54.230987451824994 4 59.22837157984339 5 60.37383539249432 6 46.09772228646444 7 14.866068747318506 8 74.33034373659252 9 52.773099207835045 10 25.709920264364882 11 24.413111231467404 12 69.52697318307479
+4 0 44.14748010928823 1 72.20110802473879 2 100.42410069301094 3 59.22837157984339 5 39.20459156782532 6 54.70831746635972 7 72.3394774656273 8 17.69180601295413 9 21.840329667841555 10 84.92938243034621 11 78.79086241436883 12 57.21887800367987
+5 0 14.560219778561036 1 43.382023926967726 2 78.44743462982075 3 60.37383539249432 4 39.20459156782532 6 25.298221281347036 7 75.15317691222374 8 54.405882034941776 9 18.110770276274835 10 81.74350127074322 11 68.3593446428504 12 18.027756377319946
+6 0 38.2099463490856 1 18.601075237738275 2 53.16013544000805 3 46.09772228646444 4 54.70831746635972 5 25.298221281347036 7 59.464274989274024 8 72.11102550927978 9 34.058772731852805 10 62.177166226839255 11 46.486557196677836 12 25.079872407968907
+7 0 89.55445270895244 1 58.66856057549052 2 55.44366510251645 3 14.866068747318506 4 72.3394774656273 5 75.15317691222374 6 59.464274989274024 8 86.34813257969161 9 67.468511173732 10 15.556349186104045 11 25.0 12 83.60023923410746
+8 0 56.0357029044876 1 89.81091247727082 2 117.92370414806346 3 74.33034373659252 4 17.69180601295413 5 54.405882034941776 6 72.11102550927978 7 86.34813257969161 9 38.47076812334269 10 99.92997548283498 11 95.29428104561154 12 72.03471385380801
+9 0 27.202941017470888 1 52.32590180780452 2 83.72574275573791 3 52.773099207835045 4 21.840329667841555 5 18.110770276274835 6 34.058772731852805 7 67.468511173732 8 38.47076812334269 10 77.05841939723393 11 66.91038783328041 12 36.013886210738214
+10 0 96.30160954002794 1 56.568542494923804 2 44.181444068749045 3 25.709920264364882 4 84.92938243034621 5 81.74350127074322 6 62.177166226839255 7 15.556349186104045 8 99.92997548283498 9 77.05841939723393 11 17.804493814764857 12 87.20665112249179
+11 0 82.73451516749222 1 38.948684188300895 2 30.805843601498726 3 24.413111231467404 4 78.79086241436883 5 68.3593446428504 6 46.486557196677836 7 25.0 8 95.29428104561154 9 66.91038783328041 10 17.804493814764857 12 71.5122367151245
+12 0 20.518284528683193 1 38.01315561749642 2 74.16872656315464 3 69.52697318307479 4 57.21887800367987 5 18.027756377319946 6 25.079872407968907 7 83.60023923410746 8 72.03471385380801 9 36.013886210738214 10 87.20665112249179 11 71.5122367151245
diff --git a/graphs/graph2.csv b/graphs/graph2.csv
new file mode 100644
index 0000000..2610f5c
--- /dev/null
+++ b/graphs/graph2.csv
@@ -0,0 +1,13 @@
+92,35
+90,73
+1,42
+31,38
+80,66
+13,2
+82,80
+2,86
+48,25
+17,82
+91,20
+26,48
+87,48
diff --git a/graphs/graph2.txt b/graphs/graph2.txt
new file mode 100644
index 0000000..3537352
--- /dev/null
+++ b/graphs/graph2.txt
@@ -0,0 +1,13 @@
+0 1 38.05259518088089 2 91.26883367283708 3 61.07372593840988 4 33.24154027718932 5 85.61541917201598 6 46.09772228646444 7 103.4456378974 8 45.12205669071391 9 88.50988645343524 10 15.033296378372908 11 67.26812023536856 12 13.92838827718412
+1 0 38.05259518088089 2 94.2443632266673 3 68.60029154456998 4 12.206555615733702 5 104.7377677822093 6 10.63014581273465 7 88.95504482602435 8 63.7808748764079 9 73.55270219373317 10 53.009433122794285 11 68.70953354520753 12 25.179356624028344
+2 0 91.26883367283708 1 94.2443632266673 3 30.265491900843113 4 82.56512580987206 5 41.7612260356422 6 89.47066558375433 7 44.01136216933077 8 49.9799959983992 9 43.08131845707603 10 92.64987857520376 11 25.709920264364882 12 86.20904824900923
+3 0 61.07372593840988 1 68.60029154456998 2 30.265491900843113 4 56.43580423808985 5 40.24922359499622 6 66.06814663663572 7 56.08029957123981 8 21.400934559032695 9 46.17358552246078 10 62.6418390534633 11 11.180339887498949 12 56.88585061331157
+4 0 33.24154027718932 1 12.206555615733702 2 82.56512580987206 3 56.43580423808985 5 92.65527507918802 6 14.142135623730951 7 80.52328855678958 8 52.009614495783374 9 65.0 10 47.29693436154187 11 56.92099788303083 12 19.313207915827967
+5 0 85.61541917201598 1 104.7377677822093 2 41.7612260356422 3 40.24922359499622 4 92.65527507918802 6 104.1393297462587 7 84.71717653463199 8 41.88078318274385 9 80.09993757800315 10 80.049984384758 11 47.80167361086848 12 87.13208364316786
+6 0 46.09772228646444 1 10.63014581273465 2 89.47066558375433 3 66.06814663663572 4 14.142135623730951 5 104.1393297462587 7 80.22468448052632 8 64.66065264130884 9 65.03076195155643 10 60.67124524847005 11 64.4980619863884 12 32.38826948140329
+7 0 103.4456378974 1 88.95504482602435 2 44.01136216933077 3 56.08029957123981 4 80.52328855678958 5 84.71717653463199 6 80.22468448052632 8 76.40026177965623 9 15.524174696260024 10 110.80162453682708 11 44.94441010848846 12 93.1074647920348
+8 0 45.12205669071391 1 63.7808748764079 2 49.9799959983992 3 21.400934559032695 4 52.009614495783374 5 41.88078318274385 6 64.66065264130884 7 76.40026177965623 9 64.88451279003334 10 43.289721643826724 11 31.827660925679098 12 45.27692569068709
+9 0 88.50988645343524 1 73.55270219373317 2 43.08131845707603 3 46.17358552246078 4 65.0 5 80.09993757800315 6 65.03076195155643 7 15.524174696260024 8 64.88451279003334 10 96.54014708917737 11 35.17101079013795 12 77.82030583337487
+10 0 15.033296378372908 1 53.009433122794285 2 92.64987857520376 3 62.6418390534633 4 47.29693436154187 5 80.049984384758 6 60.67124524847005 7 110.80162453682708 8 43.289721643826724 9 96.54014708917737 11 70.77428911688199 12 28.284271247461902
+11 0 67.26812023536856 1 68.70953354520753 2 25.709920264364882 3 11.180339887498949 4 56.92099788303083 5 47.80167361086848 6 64.4980619863884 7 44.94441010848846 8 31.827660925679098 9 35.17101079013795 10 70.77428911688199 12 61.0
+12 0 13.92838827718412 1 25.179356624028344 2 86.20904824900923 3 56.88585061331157 4 19.313207915827967 5 87.13208364316786 6 32.38826948140329 7 93.1074647920348 8 45.27692569068709 9 77.82030583337487 10 28.284271247461902 11 61.0
diff --git a/graphs/graph3.csv b/graphs/graph3.csv
new file mode 100644
index 0000000..be8e3e2
--- /dev/null
+++ b/graphs/graph3.csv
@@ -0,0 +1,13 @@
+45,38
+36,59
+68,7
+82,99
+20,89
+56,90
+46,65
+67,37
+4,28
+66,57
+93,80
+28,29
+72,60 \ No newline at end of file
diff --git a/graphs/graph3.txt b/graphs/graph3.txt
new file mode 100644
index 0000000..aac27df
--- /dev/null
+++ b/graphs/graph3.txt
@@ -0,0 +1,13 @@
+0 1 22.847319317591726 2 38.600518131237564 3 71.34423592694787 4 56.79788728465171 5 53.150729063673246 6 27.018512172212592 7 22.02271554554524 8 42.20189569201838 9 28.319604517012593 10 63.7808748764079 11 19.235384061671343 12 34.828149534535996
+1 0 22.847319317591726 2 61.05735008989499 3 60.959002616512684 4 34.0 5 36.89173349139343 6 11.661903789690601 7 38.01315561749642 8 44.553338819890925 9 30.066592756745816 10 60.74537019394976 11 31.04834939252005 12 36.013886210738214
+2 0 38.600518131237564 1 61.05735008989499 3 93.05912099305473 4 95.01578816175763 5 83.86298349093002 6 62.03224967708329 7 30.01666203960727 8 67.35725647619564 9 50.039984012787215 10 77.1621668954417 11 45.65084884205331 12 53.150729063673246
+3 0 71.34423592694787 1 60.959002616512684 2 93.05912099305473 4 62.80127387243033 5 27.51363298439521 6 49.51767361255979 7 63.788713735268246 8 105.47511554864494 9 44.94441010848846 10 21.95449840010015 11 88.40814442120137 12 40.26164427839479
+4 0 56.79788728465171 1 34.0 2 95.01578816175763 3 62.80127387243033 5 36.013886210738214 6 35.38361202590826 7 70.09279563550022 8 63.06346010171025 9 56.0357029044876 10 73.55270219373317 11 60.530983801686226 12 59.53990258641679
+5 0 53.150729063673246 1 36.89173349139343 2 83.86298349093002 3 27.51363298439521 4 36.013886210738214 6 26.92582403567252 7 54.12947441089743 8 80.91971329657564 9 34.48187929913333 10 38.3275357934736 11 67.11929677819934 12 34.0
+6 0 27.018512172212592 1 11.661903789690601 2 62.03224967708329 3 49.51767361255979 4 35.38361202590826 5 26.92582403567252 7 35.0 8 55.97320787662612 9 21.540659228538015 10 49.33558553417604 11 40.24922359499622 12 26.476404589747453
+7 0 22.02271554554524 1 38.01315561749642 2 30.01666203960727 3 63.788713735268246 4 70.09279563550022 5 54.12947441089743 6 35.0 8 63.63961030678928 9 20.024984394500787 10 50.24937810560445 11 39.81205847478876 12 23.53720459187964
+8 0 42.20189569201838 1 44.553338819890925 2 67.35725647619564 3 105.47511554864494 4 63.06346010171025 5 80.91971329657564 6 55.97320787662612 7 63.63961030678928 9 68.4470598345904 10 103.07764064044152 11 24.020824298928627 12 75.15317691222374
+9 0 28.319604517012593 1 30.066592756745816 2 50.039984012787215 3 44.94441010848846 4 56.0357029044876 5 34.48187929913333 6 21.540659228538015 7 20.024984394500787 8 68.4470598345904 10 35.4682957019364 11 47.20169488482379 12 6.708203932499369
+10 0 63.7808748764079 1 60.74537019394976 2 77.1621668954417 3 21.95449840010015 4 73.55270219373317 5 38.3275357934736 6 49.33558553417604 7 50.24937810560445 8 103.07764064044152 9 35.4682957019364 11 82.61961026293939 12 29.0
+11 0 19.235384061671343 1 31.04834939252005 2 45.65084884205331 3 88.40814442120137 4 60.530983801686226 5 67.11929677819934 6 40.24922359499622 7 39.81205847478876 8 24.020824298928627 9 47.20169488482379 10 82.61961026293939 12 53.823786563191554
+12 0 34.828149534535996 1 36.013886210738214 2 53.150729063673246 3 40.26164427839479 4 59.53990258641679 5 34.0 6 26.476404589747453 7 23.53720459187964 8 75.15317691222374 9 6.708203932499369 10 29.0 11 53.823786563191554
diff --git a/graphs/graph4.csv b/graphs/graph4.csv
new file mode 100644
index 0000000..8d4b0c8
--- /dev/null
+++ b/graphs/graph4.csv
@@ -0,0 +1,13 @@
+68,35
+75,20
+23,3
+70,52
+37,72
+6,89
+19,65
+46,60
+48,83
+35,54
+96,53
+14,7
+13,64
diff --git a/graphs/graph4.txt b/graphs/graph4.txt
new file mode 100644
index 0000000..979af49
--- /dev/null
+++ b/graphs/graph4.txt
@@ -0,0 +1,13 @@
+0 1 16.55294535724685 2 55.21775076911409 3 17.11724276862369 4 48.27007354458868 5 82.21921916437786 6 57.4543296888929 7 33.301651610693426 8 52.0 9 38.07886552931954 10 33.28663395418648 11 60.8276253029822 12 62.177166226839255
+1 0 16.55294535724685 2 54.70831746635972 3 32.38826948140329 4 64.40496875241847 5 97.58073580374356 6 71.84010022264724 7 49.4064773081425 8 68.54195795277518 9 52.49761899362675 10 39.11521443121589 11 62.369864518050704 12 76.02631123499285
+2 0 55.21775076911409 1 54.70831746635972 3 67.89698078707183 4 70.40596565632774 5 87.66413177577246 6 62.12889826803627 7 61.465437442517235 8 83.81527307120105 9 52.392747589718944 10 88.48163651289458 11 9.848857801796104 12 61.814237842102365
+3 0 17.11724276862369 1 32.38826948140329 2 67.89698078707183 4 38.58756276314948 5 73.92563831310488 6 52.630789467763066 7 25.298221281347036 8 38.01315561749642 9 35.05709628591621 10 26.019223662515376 11 71.84010022264724 12 58.249463516842795
+4 0 48.27007354458868 1 64.40496875241847 2 70.40596565632774 3 38.58756276314948 5 35.35533905932738 6 19.313207915827967 7 15.0 8 15.556349186104045 9 18.110770276274835 10 61.98386886924694 11 68.9492567037528 12 25.298221281347036
+5 0 82.21921916437786 1 97.58073580374356 2 87.66413177577246 3 73.92563831310488 4 35.35533905932738 6 27.294688127912362 7 49.4064773081425 8 42.42640687119285 9 45.45327270945405 10 96.93296652842108 11 82.38931969618392 12 25.96150997149434
+6 0 57.4543296888929 1 71.84010022264724 2 62.12889826803627 3 52.630789467763066 4 19.313207915827967 5 27.294688127912362 7 27.459060435491963 8 34.132096331752024 9 19.4164878389476 10 77.92945527847606 11 58.215118311311535 12 6.082762530298219
+7 0 33.301651610693426 1 49.4064773081425 2 61.465437442517235 3 25.298221281347036 4 15.0 5 49.4064773081425 6 27.459060435491963 8 23.08679276123039 9 12.529964086141668 10 50.48762224545735 11 61.91122676865643 12 33.24154027718932
+8 0 52.0 1 68.54195795277518 2 83.81527307120105 3 38.01315561749642 4 15.556349186104045 5 42.42640687119285 6 34.132096331752024 7 23.08679276123039 9 31.78049716414141 10 56.60388679233962 11 83.2586331859946 12 39.824615503479755
+9 0 38.07886552931954 1 52.49761899362675 2 52.392747589718944 3 35.05709628591621 4 18.110770276274835 5 45.45327270945405 6 19.4164878389476 7 12.529964086141668 8 31.78049716414141 10 61.00819617067857 11 51.478150704935004 12 24.166091947189145
+10 0 33.28663395418648 1 39.11521443121589 2 88.48163651289458 3 26.019223662515376 4 61.98386886924694 5 96.93296652842108 6 77.92945527847606 7 50.48762224545735 8 56.60388679233962 9 61.00819617067857 11 94.02127418834527 12 83.72574275573791
+11 0 60.8276253029822 1 62.369864518050704 2 9.848857801796104 3 71.84010022264724 4 68.9492567037528 5 82.38931969618392 6 58.215118311311535 7 61.91122676865643 8 83.2586331859946 9 51.478150704935004 10 94.02127418834527 12 57.0087712549569
+12 0 62.177166226839255 1 76.02631123499285 2 61.814237842102365 3 58.249463516842795 4 25.298221281347036 5 25.96150997149434 6 6.082762530298219 7 33.24154027718932 8 39.824615503479755 9 24.166091947189145 10 83.72574275573791 11 57.0087712549569
diff --git a/graphs/graph5.csv b/graphs/graph5.csv
new file mode 100644
index 0000000..58dd108
--- /dev/null
+++ b/graphs/graph5.csv
@@ -0,0 +1,13 @@
+34,23
+4,0
+2,20
+29,93
+5,13
+72,57
+42,12
+52,39
+92,43
+74,31
+3,82
+3,31
+98,58
diff --git a/graphs/graph5.txt b/graphs/graph5.txt
new file mode 100644
index 0000000..719405b
--- /dev/null
+++ b/graphs/graph5.txt
@@ -0,0 +1,13 @@
+0 1 37.8021163428716 2 32.14031735997639 3 70.178344238091 4 30.675723300355934 5 50.99019513592785 6 13.601470508735444 7 24.08318915758459 8 61.35144660071187 9 40.792156108742276 10 66.64833081180653 11 32.01562118716424 12 72.94518489934754
+1 0 37.8021163428716 2 20.09975124224178 3 96.30160954002794 4 13.038404810405298 5 88.72992730753249 6 39.84971769034255 7 61.84658438426491 8 97.94386147176351 9 76.55716818169282 10 82.00609733428362 11 31.016124838541646 12 110.45361017187261
+2 0 32.14031735997639 1 20.09975124224178 3 77.83315488916018 4 7.615773105863909 5 79.17701686727027 6 40.792156108742276 7 53.48831648126533 8 92.89241088485109 9 72.83543093852057 10 62.00806399170998 11 11.045361017187261 12 103.24727599312246
+3 0 70.178344238091 1 96.30160954002794 2 77.83315488916018 4 83.5224520712844 5 56.08029957123981 6 82.03657720797473 7 58.69412236331676 8 80.43009387039157 9 76.60939890117922 10 28.231188426986208 11 67.23094525588644 12 77.3692445355388
+4 0 30.675723300355934 1 13.038404810405298 2 7.615773105863909 3 83.5224520712844 5 80.15609770940699 6 37.013511046643494 7 53.71219600798314 8 92.02716990106781 9 71.30918594402827 10 69.02897942168927 11 18.110770276274835 12 103.31505214633539
+5 0 50.99019513592785 1 88.72992730753249 2 79.17701686727027 3 56.08029957123981 4 80.15609770940699 6 54.08326913195984 7 26.90724809414742 8 24.413111231467404 9 26.076809620810597 10 73.38937252763509 11 73.7360156233031 12 26.019223662515376
+6 0 13.601470508735444 1 39.84971769034255 2 40.792156108742276 3 82.03657720797473 4 37.013511046643494 5 54.08326913195984 7 28.792360097775937 8 58.83026432033091 9 37.21558813185679 10 80.1311425102625 11 43.382023926967726 12 72.47068372797375
+7 0 24.08318915758459 1 61.84658438426491 2 53.48831648126533 3 58.69412236331676 4 53.71219600798314 5 26.90724809414742 6 28.792360097775937 8 40.19950248448356 9 23.40939982143925 10 65.19202405202648 11 49.64876634922564 12 49.76946855251722
+8 0 61.35144660071187 1 97.94386147176351 2 92.89241088485109 3 80.43009387039157 4 92.02716990106781 5 24.413111231467404 6 58.83026432033091 7 40.19950248448356 9 21.633307652783937 10 97.16995420396162 11 89.80534505250787 12 16.15549442140351
+9 0 40.792156108742276 1 76.55716818169282 2 72.83543093852057 3 76.60939890117922 4 71.30918594402827 5 26.076809620810597 6 37.21558813185679 7 23.40939982143925 8 21.633307652783937 10 87.41853350405736 11 71.0 12 36.124783736376884
+10 0 66.64833081180653 1 82.00609733428362 2 62.00806399170998 3 28.231188426986208 4 69.02897942168927 5 73.38937252763509 6 80.1311425102625 7 65.19202405202648 8 97.16995420396162 9 87.41853350405736 11 51.0 12 97.98469268207153
+11 0 32.01562118716424 1 31.016124838541646 2 11.045361017187261 3 67.23094525588644 4 18.110770276274835 5 73.7360156233031 6 43.382023926967726 7 49.64876634922564 8 89.80534505250787 9 71.0 10 51.0 12 98.76234100101111
+12 0 72.94518489934754 1 110.45361017187261 2 103.24727599312246 3 77.3692445355388 4 103.31505214633539 5 26.019223662515376 6 72.47068372797375 7 49.76946855251722 8 16.15549442140351 9 36.124783736376884 10 97.98469268207153 11 98.76234100101111
diff --git a/graphs/graph6.csv b/graphs/graph6.csv
new file mode 100644
index 0000000..442af1a
--- /dev/null
+++ b/graphs/graph6.csv
@@ -0,0 +1,13 @@
+52,24
+23,81
+54,64
+80,70
+69,58
+71,6
+63,15
+35,85
+36,87
+84,21
+70,8
+30,39
+49,98
diff --git a/graphs/graph6.txt b/graphs/graph6.txt
new file mode 100644
index 0000000..55210c3
--- /dev/null
+++ b/graphs/graph6.txt
@@ -0,0 +1,13 @@
+0 1 63.953107821277925 2 40.049968789001575 3 53.85164807134504 4 38.01315561749642 5 26.1725046566048 6 14.212670403551895 7 63.324560795950255 8 65.0 9 32.14031735997639 10 24.08318915758459 11 26.627053911388696 12 74.06078584514209
+1 0 63.953107821277925 2 35.35533905932738 3 58.05170109479997 4 51.42956348249516 5 89.04493247793498 6 77.17512552629896 7 12.649110640673518 8 14.317821063276353 9 85.56284240252891 10 86.82165628459296 11 42.579337712087536 12 31.064449134018133
+2 0 40.049968789001575 1 35.35533905932738 3 26.68332812825267 4 16.15549442140351 5 60.440052945046304 6 49.8196748283246 7 28.319604517012593 8 29.206163733020468 9 52.43090691567332 10 58.240879114244144 11 34.655446902326915 12 34.36568055487916
+3 0 53.85164807134504 1 58.05170109479997 2 26.68332812825267 4 16.278820596099706 5 64.6297145282261 6 57.56735185849702 7 47.43416490252569 8 47.16990566028302 9 49.16299421312742 10 62.80127387243033 11 58.83026432033091 12 41.773197148410844
+4 0 38.01315561749642 1 51.42956348249516 2 16.15549442140351 3 16.278820596099706 5 52.03844732503075 6 43.41658669218482 7 43.41658669218482 8 43.93176527297759 9 39.92492955535426 10 50.00999900019995 11 43.382023926967726 12 44.721359549995796
+5 0 26.1725046566048 1 89.04493247793498 2 60.440052945046304 3 64.6297145282261 4 52.03844732503075 6 12.041594578792296 7 86.81589716175259 8 88.23831367382311 9 19.849433241279208 10 2.23606797749979 11 52.630789467763066 12 94.59386872308374
+6 0 14.212670403551895 1 77.17512552629896 2 49.8196748283246 3 57.56735185849702 4 43.41658669218482 5 12.041594578792296 7 75.39230729988306 8 76.89603370785778 9 21.840329667841555 10 9.899494936611665 11 40.80441152620633 12 84.17244204607586
+7 0 63.324560795950255 1 12.649110640673518 2 28.319604517012593 3 47.43416490252569 4 43.41658669218482 5 86.81589716175259 6 75.39230729988306 8 2.23606797749979 9 80.60397012554654 10 84.581321815162 11 46.2709412050371 12 19.1049731745428
+8 0 65.0 1 14.317821063276353 2 29.206163733020468 3 47.16990566028302 4 43.93176527297759 5 88.23831367382311 6 76.89603370785778 7 2.23606797749979 9 81.60882305241266 10 86.00581375697809 11 48.373546489791295 12 17.029386365926403
+9 0 32.14031735997639 1 85.56284240252891 2 52.43090691567332 3 49.16299421312742 4 39.92492955535426 5 19.849433241279208 6 21.840329667841555 7 80.60397012554654 8 81.60882305241266 10 19.1049731745428 11 56.92099788303083 12 84.581321815162
+10 0 24.08318915758459 1 86.82165628459296 2 58.240879114244144 3 62.80127387243033 4 50.00999900019995 5 2.23606797749979 6 9.899494936611665 7 84.581321815162 8 86.00581375697809 9 19.1049731745428 11 50.60632371551998 12 92.41753080449618
+11 0 26.627053911388696 1 42.579337712087536 2 34.655446902326915 3 58.83026432033091 4 43.382023926967726 5 52.630789467763066 6 40.80441152620633 7 46.2709412050371 8 48.373546489791295 9 56.92099788303083 10 50.60632371551998 12 61.98386886924694
+12 0 74.06078584514209 1 31.064449134018133 2 34.36568055487916 3 41.773197148410844 4 44.721359549995796 5 94.59386872308374 6 84.17244204607586 7 19.1049731745428 8 17.029386365926403 9 84.581321815162 10 92.41753080449618 11 61.98386886924694
diff --git a/graphs/graph7.csv b/graphs/graph7.csv
new file mode 100644
index 0000000..a633a58
--- /dev/null
+++ b/graphs/graph7.csv
@@ -0,0 +1,13 @@
+80,19
+5,13
+69,0
+87,84
+28,37
+51,11
+49,6
+74,20
+68,59
+3,82
+92,14
+27,24
+81,8 \ No newline at end of file
diff --git a/graphs/graph7.txt b/graphs/graph7.txt
new file mode 100644
index 0000000..92bd948
--- /dev/null
+++ b/graphs/graph7.txt
@@ -0,0 +1,13 @@
+0 1 75.23961722390672 2 21.95449840010015 3 65.37583651472461 4 55.02726596879042 5 30.083217912982647 6 33.61547262794322 7 6.082762530298219 8 41.7612260356422 9 99.48869282486326 10 13.0 11 53.23532661682466 12 11.045361017187261
+1 0 75.23961722390672 2 65.30696746902278 3 108.4665847162157 4 33.24154027718932 5 46.04345773288535 6 44.553338819890925 7 69.35416353759881 8 78.00640999302557 9 69.02897942168927 10 87.00574693662483 11 24.596747752497688 12 76.16429609731846
+2 0 21.95449840010015 1 65.30696746902278 3 85.90692637965812 4 55.226805085936306 5 21.095023109728988 6 20.8806130178211 7 20.615528128088304 8 59.00847396772772 9 105.26157893552613 10 26.92582403567252 11 48.373546489791295 12 14.422205101855956
+3 0 65.37583651472461 1 108.4665847162157 2 85.90692637965812 4 75.43208866258443 5 81.39410298049853 6 86.76404785393545 7 65.30696746902278 8 31.400636936215164 9 84.02380615040002 10 70.178344238091 11 84.8528137423857 12 76.23647421018367
+4 0 55.02726596879042 1 33.24154027718932 2 55.226805085936306 3 75.43208866258443 5 34.713109915419565 6 37.44329045369811 7 49.040799340956916 8 45.65084884205331 9 51.478150704935004 10 68.00735254367721 11 13.038404810405298 12 60.41522986797286
+5 0 30.083217912982647 1 46.04345773288535 2 21.095023109728988 3 81.39410298049853 4 34.713109915419565 6 5.385164807134504 7 24.698178070456937 8 50.92150822589606 9 85.70297544426332 10 41.10960958218893 11 27.294688127912362 12 30.14962686336267
+6 0 33.61547262794322 1 44.553338819890925 2 20.8806130178211 3 86.76404785393545 4 37.44329045369811 5 5.385164807134504 7 28.653097563788805 8 56.302753041036986 9 88.83692925805124 10 43.73785545725808 11 28.42534080710379 12 32.0624390837628
+7 0 6.082762530298219 1 69.35416353759881 2 20.615528128088304 3 65.30696746902278 4 49.040799340956916 5 24.698178070456937 6 28.653097563788805 8 39.45883931389772 9 94.26027795418386 10 18.973665961010276 11 47.16990566028302 12 13.892443989449804
+8 0 41.7612260356422 1 78.00640999302557 2 59.00847396772772 3 31.400636936215164 4 45.65084884205331 5 50.92150822589606 6 56.302753041036986 7 39.45883931389772 9 68.9492567037528 10 51.0 11 53.907327887774215 12 52.630789467763066
+9 0 99.48869282486326 1 69.02897942168927 2 105.26157893552613 3 84.02380615040002 4 51.478150704935004 5 85.70297544426332 6 88.83692925805124 7 94.26027795418386 8 68.9492567037528 10 112.0044641967453 11 62.76941930590086 12 107.5174404457249
+10 0 13.0 1 87.00574693662483 2 26.92582403567252 3 70.178344238091 4 68.00735254367721 5 41.10960958218893 6 43.73785545725808 7 18.973665961010276 8 51.0 9 112.0044641967453 11 65.76473218982953 12 12.529964086141668
+11 0 53.23532661682466 1 24.596747752497688 2 48.373546489791295 3 84.8528137423857 4 13.038404810405298 5 27.294688127912362 6 28.42534080710379 7 47.16990566028302 8 53.907327887774215 9 62.76941930590086 10 65.76473218982953 12 56.32051136131489
+12 0 11.045361017187261 1 76.16429609731846 2 14.422205101855956 3 76.23647421018367 4 60.41522986797286 5 30.14962686336267 6 32.0624390837628 7 13.892443989449804 8 52.630789467763066 9 107.5174404457249 10 12.529964086141668 11 56.32051136131489
diff --git a/graphs/graph8.csv b/graphs/graph8.csv
new file mode 100644
index 0000000..f0b9474
--- /dev/null
+++ b/graphs/graph8.csv
@@ -0,0 +1,13 @@
+86,87
+88,21
+97,72
+82,48
+69,13
+34,4
+54,52
+58,64
+96,51
+7,46
+64,56
+21,29
+21,56
diff --git a/graphs/graph8.txt b/graphs/graph8.txt
new file mode 100644
index 0000000..bb0eb23
--- /dev/null
+++ b/graphs/graph8.txt
@@ -0,0 +1,13 @@
+0 1 66.03029607687671 2 18.601075237738275 3 39.20459156782532 4 75.92759709091287 5 97.94386147176351 6 47.4236228055175 7 36.235341863986875 8 37.36308338453881 9 89.00561780022652 10 38.01315561749642 11 87.11486669908874 12 72.01388754955533
+1 0 66.03029607687671 2 51.78802950489621 3 27.65863337187866 4 20.615528128088304 5 56.61271941887264 6 46.010868281309364 7 52.43090691567332 8 31.04834939252005 9 84.77027781009096 10 42.43819034784589 11 67.47592163134935 12 75.59100475585703
+2 0 18.601075237738275 1 51.78802950489621 3 28.30194339616981 4 65.30696746902278 5 92.69843580125827 6 47.4236228055175 7 39.81205847478876 8 21.02379604162864 9 93.68030742904295 10 36.6742416417845 11 87.32124598286491 12 77.6659513557904
+3 0 39.20459156782532 1 27.65863337187866 2 28.30194339616981 4 37.33630940518894 5 65.11528238439882 6 28.284271247461902 7 28.844410203711913 8 14.317821063276353 9 75.02666192761077 10 19.697715603592208 11 63.89053137985315 12 61.5223536610881
+4 0 75.92759709091287 1 20.615528128088304 2 65.30696746902278 3 37.33630940518894 5 36.138621999185304 6 41.78516483155236 7 52.172789842982326 8 46.61544808322666 9 70.2353187506115 10 43.289721643826724 11 50.59644256269407 12 64.4437739428721
+5 0 97.94386147176351 1 56.61271941887264 2 92.69843580125827 3 65.11528238439882 4 36.138621999185304 6 52.0 7 64.62197768561404 8 77.80102827083971 9 49.92995093127971 10 60.03332407921454 11 28.178005607210743 12 53.600373133029585
+6 0 47.4236228055175 1 46.010868281309364 2 47.4236228055175 3 28.284271247461902 4 41.78516483155236 5 52.0 7 12.649110640673518 8 42.01190307520001 9 47.38143096192854 10 10.770329614269007 11 40.22437072223753 12 33.24154027718932
+7 0 36.235341863986875 1 52.43090691567332 2 39.81205847478876 3 28.844410203711913 4 52.172789842982326 5 64.62197768561404 6 12.649110640673518 8 40.162171256046406 9 54.08326913195984 10 10.0 11 50.93132631298737 12 37.8549864614954
+8 0 37.36308338453881 1 31.04834939252005 2 21.02379604162864 3 14.317821063276353 4 46.61544808322666 5 77.80102827083971 6 42.01190307520001 7 40.162171256046406 9 89.1403387922662 10 32.38826948140329 11 78.16009211867653 12 75.16648189186454
+9 0 89.00561780022652 1 84.77027781009096 2 93.68030742904295 3 75.02666192761077 4 70.2353187506115 5 49.92995093127971 6 47.38143096192854 7 54.08326913195984 8 89.1403387922662 10 57.87054518492115 11 22.02271554554524 12 17.204650534085253
+10 0 38.01315561749642 1 42.43819034784589 2 36.6742416417845 3 19.697715603592208 4 43.289721643826724 5 60.03332407921454 6 10.770329614269007 7 10.0 8 32.38826948140329 9 57.87054518492115 11 50.774009099144415 12 43.0
+11 0 87.11486669908874 1 67.47592163134935 2 87.32124598286491 3 63.89053137985315 4 50.59644256269407 5 28.178005607210743 6 40.22437072223753 7 50.93132631298737 8 78.16009211867653 9 22.02271554554524 10 50.774009099144415 12 27.0
+12 0 72.01388754955533 1 75.59100475585703 2 77.6659513557904 3 61.5223536610881 4 64.4437739428721 5 53.600373133029585 6 33.24154027718932 7 37.8549864614954 8 75.16648189186454 9 17.204650534085253 10 43.0 11 27.0
diff --git a/graphs/graph9.csv b/graphs/graph9.csv
new file mode 100644
index 0000000..46016eb
--- /dev/null
+++ b/graphs/graph9.csv
@@ -0,0 +1,13 @@
+42,18
+67,75
+66,14
+81,1
+21,94
+20,79
+6,20
+93,81
+83,1
+13,6
+21,15
+83,37
+34,79
diff --git a/graphs/graph9.txt b/graphs/graph9.txt
new file mode 100644
index 0000000..528b29a
--- /dev/null
+++ b/graphs/graph9.txt
@@ -0,0 +1,13 @@
+0 1 62.24146527838174 2 24.331050121192877 3 42.5440947723653 4 78.84795495128583 5 64.8459713474939 6 36.05551275463989 7 81.05553651663777 8 44.384682042344295 9 31.38470965295043 10 21.213203435596427 11 45.18849411078001 12 61.5223536610881
+1 0 62.24146527838174 2 61.00819617067857 3 75.31268153505093 4 49.76946855251722 5 47.16990566028302 6 82.13403679352427 7 26.68332812825267 8 75.7099729229908 9 87.6184911990614 10 75.6042326857432 11 41.23105625617661 12 33.24154027718932
+2 0 24.331050121192877 1 61.00819617067857 3 19.849433241279208 4 91.7877987534291 5 79.63039620647382 6 60.29925372672534 7 72.2357252334328 8 21.400934559032695 9 53.600373133029585 10 45.0111097397076 11 28.600699292150182 12 72.44998274671983
+3 0 42.5440947723653 1 75.31268153505093 2 19.849433241279208 4 110.6752004741803 5 99.02019995940222 6 77.3692445355388 7 80.89499366462674 8 2.0 9 68.18357573492314 10 61.61168720299745 11 36.05551275463989 12 91.0659101969557
+4 0 78.84795495128583 1 49.76946855251722 2 91.7877987534291 3 110.6752004741803 5 15.033296378372908 6 75.50496672405067 7 73.16419889536138 8 111.77208953938367 9 88.36288813749809 10 79.0 11 84.21995013059554 12 19.849433241279208
+5 0 64.8459713474939 1 47.16990566028302 2 79.63039620647382 3 99.02019995940222 4 15.033296378372908 6 60.63827174318213 7 73.02739212103907 8 100.26464980241042 9 73.33484846919642 10 64.00781202322104 11 75.71657678474378 12 14.0
+6 0 36.05551275463989 1 82.13403679352427 2 60.29925372672534 3 77.3692445355388 4 75.50496672405067 5 60.63827174318213 7 106.25441167311595 8 79.30952023559341 9 15.652475842498529 10 15.811388300841896 11 78.85429601486528 12 65.30696746902278
+7 0 81.05553651663777 1 26.68332812825267 2 72.2357252334328 3 80.89499366462674 4 73.16419889536138 5 73.02739212103907 6 106.25441167311595 8 80.62257748298549 9 109.65856099730654 10 97.67292357659824 11 45.12205669071391 12 59.033888572581766
+8 0 44.384682042344295 1 75.7099729229908 2 21.400934559032695 3 2.0 4 111.77208953938367 5 100.26464980241042 6 79.30952023559341 7 80.62257748298549 9 70.178344238091 10 63.56099432828282 11 36.0 12 92.11405973031478
+9 0 31.38470965295043 1 87.6184911990614 2 53.600373133029585 3 68.18357573492314 4 88.36288813749809 5 73.33484846919642 6 15.652475842498529 7 109.65856099730654 8 70.178344238091 10 12.041594578792296 11 76.55716818169282 12 75.96051605933177
+10 0 21.213203435596427 1 75.6042326857432 2 45.0111097397076 3 61.61168720299745 4 79.0 5 64.00781202322104 6 15.811388300841896 7 97.67292357659824 8 63.56099432828282 9 12.041594578792296 11 65.7875368135941 12 65.30696746902278
+11 0 45.18849411078001 1 41.23105625617661 2 28.600699292150182 3 36.05551275463989 4 84.21995013059554 5 75.71657678474378 6 78.85429601486528 7 45.12205669071391 8 36.0 9 76.55716818169282 10 65.7875368135941 12 64.53681120105021
+12 0 61.5223536610881 1 33.24154027718932 2 72.44998274671983 3 91.0659101969557 4 19.849433241279208 5 14.0 6 65.30696746902278 7 59.033888572581766 8 92.11405973031478 9 75.96051605933177 10 65.30696746902278 11 64.53681120105021