コード例 #1
0
 public void BuildMesh(PartType partType, AdjacencyMatrix adjMatrix, MeshBuilder meshBuilder, BlockBounds clipBounds)
 {
     var slopeBuilder = new SlopedMeshBuilder(meshBuilder);
     if (partType == PartType.OuterCorner) {
         BuildMeshCorner(slopeBuilder);
     }
 }
コード例 #2
0
        public bool Search(AdjacencyMatrix matrix)
        {
            Bfs(matrix);

            bool allNodesVisited = this.visitedNodes.Count == matrix.NodesCount();

            return(allNodesVisited);
        }
コード例 #3
0
ファイル: BFSTraversal.cs プロジェクト: NitbDheeraj/DSAndAlgo
 public BFSTraversal(AdjacencyMatrix adjacencyMatrix, Vertex[] vertexList, int vertexCount) :
     base(adjacencyMatrix, vertexList, vertexCount)
 {
     _vertexList      = vertexList;
     _theQueue        = new Queue <int>();;
     _vertexCount     = vertexCount;
     _adjacencyMatrix = adjacencyMatrix;
 }
コード例 #4
0
ファイル: CommonGraph.cs プロジェクト: NitbDheeraj/DSAndAlgo
 public CommonGraph(AdjacencyMatrix adjMat, Vertex[] vertex, int vertexCount)
 {
     _vertexList  = vertex;
     _adjMatrix   = adjMat;
     _vertexCount = vertexCount;
     _theStack    = new Stack <int>();
     _theQueue    = new Queue <int>();
 }
コード例 #5
0
ファイル: Objects.cs プロジェクト: dr3amy/Affine3D
 public Polyhedron(List <Point3D> points)
 {
     Vertices = points;
     foreach (var point in points)
     {
         AdjacencyMatrix.Add(point, new List <Point3D>());
     }
 }
コード例 #6
0
        //  [TestMethod]
        public void Test5()
        {
            AdjacencyMatrix testMatrix = new AdjacencyMatrix("test5.txt");
            BranchAndBound  solver     = new BranchAndBound(); solver.SetVariables(testMatrix);

            solver.Solve();
            Assert.AreEqual(solver.max, 269);
        }
コード例 #7
0
        public void GraphTests_ShouldReturnException_ForInvalidVertix_Z()
        {
            var vertices = new int[] { 'A', 'B', 'C', 'D', 'E' };
            var graph    = new AdjacencyMatrix <int>(vertices);

            graph.AddEdge('A', 'B');
            graph.AddEdge('B', 'Z');
        }
コード例 #8
0
        public void Test5()
        {
            AdjacencyMatrix testMatrix = new AdjacencyMatrix("test5.txt");
            DynamicTSP      solver     = new DynamicTSP(testMatrix, 0);

            solver.Solve();
            Assert.AreEqual(solver.minTourCost, 269);
        }
コード例 #9
0
ファイル: DFSTraversal.cs プロジェクト: NitbDheeraj/DSAndAlgo
 public DFSTraversal(AdjacencyMatrix adjacencyMatrix, Vertex[] vertexList, int vertexCount) :
     base(adjacencyMatrix, vertexList, vertexCount)
 {
     _vertexList      = vertexList;
     _theStack        = new Stack <int>();
     _vertexCount     = vertexCount;
     _adjacencyMatrix = adjacencyMatrix;
 }
コード例 #10
0
ファイル: Graph.cs プロジェクト: tuluqov/xGraph
        //methods
        public void Add(Vertex element)
        {
            Vertices?.Add(element);

            element.Id = IdVertexesCounter;
            IdVertexesCounter++;

            AdjacencyMatrix.AddVertex();
        }
コード例 #11
0
        public void GraphTests_ShowGive2Record()
        {
            var vertices = new int[] { 'A', 'B', 'C', 'D', 'E' };
            var graph    = new AdjacencyMatrix <int>(vertices);

            graph.AddEdge('A', 'B');

            Assert.AreEqual(2, graph.GetEdges().Count);
        }
コード例 #12
0
    private static void test09()

    //****************************************************************************80
    //
    //  Purpose:
    //
    //    TEST09 tests TRIANGULATION_ORDER3_ADJ_SET
    //
    //  Licensing:
    //
    //    This code is distributed under the GNU LGPL license.
    //
    //  Modified:
    //
    //    04 January 2007
    //
    //  Author:
    //
    //    John Burkardt
    //
    {
        int hole_num     = 0;
        int node_num     = 0;
        int triangle_num = 0;

        Console.WriteLine("");
        Console.WriteLine("TEST09");
        Console.WriteLine("  TRIANGULATION_ORDER3_ADJ_SET sets the (lower)");
        Console.WriteLine("  adjacencies defined by a triangulation.");

        Order3_Example.triangulation_order3_example2_size(ref node_num, ref triangle_num, ref hole_num);

        double[] node_xy           = new double[2 * node_num];
        int[]    triangle_node     = new int[3 * triangle_num];
        int[]    triangle_neighbor = new int[3 * triangle_num];

        Order3_Example.triangulation_order3_example2(node_num, triangle_num, ref node_xy,
                                                     ref triangle_node, ref triangle_neighbor);

        typeMethods.i4mat_transpose_print(3, triangle_num, triangle_node,
                                          "  TRIANGLE_NODE");

        int[] adj_row = new int[node_num + 1];

        int adj_num = Adjacency.triangulation_order3_adj_count(node_num, triangle_num,
                                                               triangle_node, triangle_neighbor, adj_row);

        int[] adj = Adjacency.triangulation_order3_adj_set(node_num, triangle_num, triangle_node,
                                                           triangle_neighbor, adj_num, adj_row);

        AdjacencyMatrix.adj_print(node_num, adj_num, adj_row, adj, "  ADJ array:");

        int bandwidth = AdjacencyMatrix.adj_bandwidth(node_num, adj_num, adj_row, adj);

        Console.WriteLine("");
        Console.WriteLine("  ADJ bandwidth = " + bandwidth + "");
    }
コード例 #13
0
 public Graph(List <Vertex <T> > vertices)
 {
     _vertices = vertices;
     for (int i = 0; i < _vertices.Count; i++)
     {
         _vertices[i].Index = i;
     }
     _adjacencyMatrix = new AdjacencyMatrix(_vertices.Count);
 }
コード例 #14
0
        public void SingleVertexIsTheCenterOfTheGraph()
        {
            var m       = new AdjacencyMatrix(new[] { 11 }, new[] { new Edge(11, 11), });
            var service = new LogisticCenterService(m);

            var center = service.CalculateLogisticCenter();

            Assert.AreEqual(11, center);
        }
コード例 #15
0
 public InvariantMap(AdjacencyMatrix matrix)
 {
     this.matrix = matrix;
     container   = new Container[matrix.Vertices - 2];
     for (int i = 0; i < container.Length; i++)
     {
         container[i] = new Container();
     }
 }
コード例 #16
0
ファイル: GraphTest.cs プロジェクト: bigdra50/Gimmick
        public void EqualsTest2()
        {
            var adjMat1 = new AdjacencyMatrix(new[, ]
            {
                { false, true, false, false },
                { true, false, true, true },
                { false, true, false, false },
                { false, true, false, false }
            });
            var graph1 = new UndirectedGraph(adjMat1);

            var adjMat2 = new AdjacencyMatrix(new[, ]
            {
                { false, true, false, true },
                { true, false, true, true },
                { false, true, false, false },
                { true, true, false, false }
            });
            var graph2 = new UndirectedGraph(adjMat2);

            Assert.AreEqual(false, graph1.Equals(graph2));

            var adjMat3 = new AdjacencyMatrix(new[, ]
            {
                { false, false, false, true },
                { false, false, true, true },
                { false, true, false, false },
                { true, true, false, false }
            });
            var graph3 = new UndirectedGraph(adjMat3);

            Assert.AreEqual(false, graph1.Equals(graph3));
            var graph4 = new UndirectedGraph();
            var graph5 = new UndirectedGraph();
            var n0     = new Node(0, 0.ToString());
            var n1     = new Node(1, 1.ToString());
            var n2     = new Node(2, 2.ToString());
            var n3     = new Node(3, 3.ToString());

            graph4.TryAddNode(n2);
            graph4.TryAddNode(n1);
            graph4.TryAddNode(n0);
            graph4.TryAddNode(n3);
            graph5.TryAddNode(n0);
            graph5.TryAddNode(n1);
            graph5.TryAddNode(n2);
            graph5.TryAddNode(n3);
            Assert.AreEqual(true, graph4.Equals(graph5));
            graph4.TryAddEdge(n1, n2);
            graph4.TryAddEdge(n3, n1);
            graph4.TryAddEdge(n1, n0);
            Assert.AreEqual(true, graph1.Equals(graph4));
            graph5.TryAddEdge(n0, n1);
            graph5.TryAddEdge(n2, n1);
            graph5.TryAddEdge(n1, n3);
            Assert.AreEqual(true, graph4.Equals(graph5));
        }
コード例 #17
0
 public PatternMap(AdjacencyMatrix matrix)
 {
     this.matrix = matrix;
     patterns    = new List <Pattern> [matrix.Vertices - 2];
     for (int i = 0; i < patterns.Length; i++)
     {
         patterns[i] = new List <Pattern>();
     }
 }
コード例 #18
0
        public void Test04()
        {
            var m = new AdjacencyMatrix(new int[] { 1, 2 }, new Edge[]
            {
                new Edge(1, 2),
            });

            Assert.AreEqual("0110", m.Identity());
        }
コード例 #19
0
        private List <int> HKC(int[] C, int[] newIndex)
        {
            int n = AdjacencyMatrix.GetLength(0);

            int[] height   = new int[n];
            int   diameter = 0;

            for (int i = (n - 1); i > 0; i--)
            {
                var remote    = C[i];
                int newHeight = height[i] + 1;
                int newDiam   = height[remote] + newHeight;

                if (newHeight > height[remote])
                {
                    height[remote] = newHeight;
                }

                if (newDiam > diameter)
                {
                    diameter = newDiam;
                }
            }

            int radiusFloor = diameter / 2;

            List <int> center = new List <int>();

            for (int i = 0; i < n; i++)
            {
                if (height[i] == radiusFloor)
                {
                    if (diameter % 2 == 1)
                    {
                        center.Add(i);
                        center.Add(C[i]);
                    }
                    else
                    {
                        center.Add(i);
                    }
                    break;
                }
            }

            var result = new List <int>();

            for (int i = 0; i < n; i++)
            {
                if (center.Contains(newIndex[i]))
                {
                    result.Add(i);
                }
            }
            return(result);
        }
コード例 #20
0
 public void BuildMesh(PartType partType, AdjacencyMatrix adjMatrix,  MeshBuilder meshBuilder, BlockBounds clipBounds)
 {
     if (PartType.BlockFront == partType) {
         meshBuilder.AddTriangleStrip(
             false,
             meshBuilder.VertAutoNormal(new Vector3(1, 1, 0), new Vector2(1, 1), true),
             meshBuilder.VertAutoNormal(new Vector3(1, 0, 0), new Vector2(1, 0), true),
             meshBuilder.VertAutoNormal(new Vector3(0, 1, 0), new Vector2(0, 1), true),
             meshBuilder.VertAutoNormal(new Vector3(0, 0, 0), new Vector2(0, 0), true));;
     }
     else if (PartType.BlockBack == partType)
     {
         meshBuilder.AddTriangleStrip(
             false,
             meshBuilder.VertAutoNormal(new Vector3(0, 1, 1), new Vector2(1, 1), true),
             meshBuilder.VertAutoNormal(new Vector3(0, 0, 1), new Vector2(1, 0), true),
             meshBuilder.VertAutoNormal(new Vector3(1, 1, 1), new Vector2(0, 1), true),
             meshBuilder.VertAutoNormal(new Vector3(1, 0, 1), new Vector2(0, 0), true));
     }
     else if (PartType.BlockRight == partType)
     {
         meshBuilder.AddTriangleStrip(
             false,
             meshBuilder.VertAutoNormal(new Vector3(1, 1, 1), new Vector2(1, 1), true),
             meshBuilder.VertAutoNormal(new Vector3(1, 0, 1), new Vector2(1, 0), true),
             meshBuilder.VertAutoNormal(new Vector3(1, 1, 0), new Vector2(0, 1), true),
             meshBuilder.VertAutoNormal(new Vector3(1, 0, 0), new Vector2(0, 0), true));
     }
     else if (PartType.BlockLeft == partType)
     {
         meshBuilder.AddTriangleStrip(
             false,
             meshBuilder.VertAutoNormal(new Vector3(0, 1, 0), new Vector2(1, 1), true),
             meshBuilder.VertAutoNormal(new Vector3(0, 0, 0), new Vector2(1, 0), true),
             meshBuilder.VertAutoNormal(new Vector3(0, 1, 1), new Vector2(0, 1), true),
             meshBuilder.VertAutoNormal(new Vector3(0, 0, 1), new Vector2(0, 0), true));
     }
     else if (PartType.BlockTop == partType)
     {
         meshBuilder.AddTriangleStrip(
             false,
             meshBuilder.VertAutoNormal(new Vector3(1, 1, 1), new Vector2(1, 1), true),
             meshBuilder.VertAutoNormal(new Vector3(1, 1, 0), new Vector2(1, 0), true),
             meshBuilder.VertAutoNormal(new Vector3(0, 1, 1), new Vector2(0, 1), true),
             meshBuilder.VertAutoNormal(new Vector3(0, 1, 0), new Vector2(0, 0), true));
     }
     else if (PartType.BlockBottom == partType)
     {
         meshBuilder.AddTriangleStrip(
             false,
             meshBuilder.VertAutoNormal(new Vector3(1, 0, 0), new Vector2(1, 1), true),
             meshBuilder.VertAutoNormal(new Vector3(1, 0, 1), new Vector2(1, 0), true),
             meshBuilder.VertAutoNormal(new Vector3(0, 0, 0), new Vector2(0, 1), true),
             meshBuilder.VertAutoNormal(new Vector3(0, 0, 1), new Vector2(0, 0), true));
     }
 }
コード例 #21
0
        /// <summary>
        /// Creates new instance of <see cref="FWAlgorithm"/>
        /// </summary>
        /// <param name="initialAdjacencyMatrix">adjacency matrix for graph</param>
        public FWAlgorithm(AdjacencyMatrix initialAdjacencyMatrix)
        {
            // setting fields
            this.initialAdjacencyMatrix = initialAdjacencyMatrix;
            this.count   = initialAdjacencyMatrix.Size;
            this.current = -1;

            // initializing steps
            this.steps = new List <Step>(initialAdjacencyMatrix.Size);
        }
コード例 #22
0
        public void Test07()
        {
            var m = new AdjacencyMatrix(new int[] { 1, 2, 3 }, new Edge[]
            {
                new Edge(2, 1),
                new Edge(1, 2),
            });

            Assert.AreEqual("010100000", m.Identity());
        }
コード例 #23
0
ファイル: UndirectedGraph.cs プロジェクト: kosmag/InterCol
        public int VerticeDegree(int v)
        {
            int degree = 0;

            for (int i = 0; i < AdjacencyMatrix.GetLength(0); i++)
            {
                degree += AdjacencyMatrix[v, i];
            }
            return(degree);
        }
コード例 #24
0
        public void GraphWithDisconnectedVerticesDoesNotHaveCenter()
        {
            var m = new AdjacencyMatrix(new[] { 11, 12 },
                                        new[] { new Edge(11, 11), new Edge(12, 12) });

            var service = new LogisticCenterService(m);

            var center = service.CalculateLogisticCenter();

            Assert.AreEqual(-1, center);
        }
コード例 #25
0
        public void Test9()
        {
            AdjacencyMatrix testMatrix = new AdjacencyMatrix("test9.txt");
            BranchAndBound  solver     = new BranchAndBound(); solver.SetVariables(testMatrix);

            solver.Solve();
            DynamicTSP dynamicSolver = new DynamicTSP(testMatrix, 0);

            dynamicSolver.Solve();
            Assert.AreEqual(dynamicSolver.minTourCost, solver.max);
        }
コード例 #26
0
    /// <summary>
    /// Starts the game. Creates the random state of the polygons, deletes the container, then enabled the polygons.
    /// </summary>
    void startGame(Object obj)
    {
        winState = false;

        Debug.Log("startGame called by " + obj.name);
        enablePolygons(true);

        AdjacencyMatrix adj = new AdjacencyMatrix(polygons);

        Debug.Log(adj.ToString());
    }
コード例 #27
0
        public void TwoConnectedVerticesShouldReturnSecondVertexAsCenter()
        {
            var m = new AdjacencyMatrix(new int[] { 11, 12 },
                                        new[] { new Edge(11, 12), new Edge(12, 11) });

            var service = new LogisticCenterService(m);

            var center = service.CalculateLogisticCenter();

            Assert.AreEqual(12, center);
        }
コード例 #28
0
 public void Initialize()
 {
     this.Matrix = new AdjacencyMatrix(MATRIXLENGTH);
     for (int i = 0; i < MATRIXLENGTH; i++)
     {
         for (int j = 0; j < MATRIXLENGTH; j++)
         {
             this.Matrix[i, j] = i * j;
         }
     }
 }
コード例 #29
0
        public void PMXmultiThread()
        {
            String          FileName                = "C:\\Studia\\Genetic-multi-tasks\\GeneticMultiTask\\TSP instances\\br17.xml";
            XDocument       tspXmlFile              = XDocument.Load(FileName);
            AdjacencyMatrix matrix                  = new AdjacencyMatrix(tspXmlFile);
            MultiThreadInversionMutation pmx        = new MultiThreadInversionMutation(1);
            MultiTaskGeneticSolver       solver     = new MultiTaskGeneticSolver(matrix, pmx, null, null, 100, 0);
            List <Candidate>             population = randomPopulation(50);

            pmx.MutateList(population);
        }
コード例 #30
0
ファイル: GraphController.cs プロジェクト: wilgnne/GraphAPI
        public Graph BellmanFord(FromVertex from)
        {
            Graph graph = from.graph;
            AdjacencyList <string> adjacencyList = graph;

            TreeAlgorithms <string> .BellmanFord(adjacencyList, from.orig, out GraphLib.Model.Graph <string> q);

            AdjacencyMatrix <string> output = (AdjacencyMatrix <string>)q;

            return(output);
        }
コード例 #31
0
        public int FindC3ByMatrixMul3()
        {
            int n = AdjacencyMatrix.GetLength(0);
            var AdjacencyMatrixCubed = ArrayHelper.Multiply(AdjacencyMatrix, ArrayHelper.Multiply(AdjacencyMatrix, AdjacencyMatrix));
            int sum = 0;

            for (int i = 0; i < n; i++)
            {
                sum += AdjacencyMatrixCubed[i, i];
            }
            return(sum / 6);
        }
コード例 #32
0
ファイル: Problem.cs プロジェクト: dompazdzierz/TSPSolution
 public void WriteAdjacencyMatrix()
 {
     for (int i = 0; i < AdjacencyMatrix.GetLength(0); i++)
     {
         for (int j = 0; j < AdjacencyMatrix.GetLength(1); j++)
         {
             Console.Write(AdjacencyMatrix[i, j] + "; ");
         }
         Console.WriteLine();
         Console.WriteLine();
     }
 }
コード例 #33
0
        public void BuildMesh(PartType partType, AdjacencyMatrix adjMatrix, MeshBuilder meshBuilder, BlockBounds clipBounds)
        {
            SlopedMeshBuilder slopeBuilder = new SlopedMeshBuilder(meshBuilder);
	
			if (PartType.OuterEdgeFront == partType) {

                slopeBuilder.ConstructSlopedFront(slopeBuilder.GetOuterSlopePoints());
			}else if (PartType.OuterEdgeLeft == partType) 
            {
                Matrix4x4 mat = Matrix4x4.TRS(new Vector3(0, 0, 0), Quaternion.identity, new Vector3(-1, 1, 1));
                slopeBuilder.ConstructSlopedSide(false, mat, slopeBuilder.GetOuterSlopePoints());
			}else if (PartType.OuterEdgeRight == partType) 
            {
                Matrix4x4 mat = Matrix4x4.TRS(new Vector3(1, 0, 0), Quaternion.identity, new Vector3(1, 1, 1));
                slopeBuilder.ConstructSlopedSide(true, mat, slopeBuilder.GetOuterSlopePoints());
			}
        }
コード例 #34
0
        private AdjacencyMatrix<LayerTile> GetAdjacencyMatrixFromTiledMapLayer(TiledMapLayer tiledMapLayer, IDictionary<int, int> weights)
        {
            var result = new AdjacencyMatrix<LayerTile>();

            foreach (var tile in tiledMapLayer.Tiles)
            {
                if (weights.ContainsKey(tile.Id))
                {
                    foreach (var neighbour in tiledMapLayer.GetNeighboursFromTile(tile))
                    {
                        if (neighbour != null && weights.ContainsKey(neighbour.Id))
                        {
                            result.AddAdjacent(tile, neighbour, weights[neighbour.Id]);
                        }
                    }
                }
            }

            return result;
        }