A Heuristic Algorithm for Solving Triangle Packing Problem

The research on the triangle packing problem has important theoretic significance, which has broad application prospects in material processing, network resource optimization, and so forth. Generally speaking, the orientation of the triangle should be limited in advance, since the triangle packing problem is NP-hard and has continuous properties. For example, the polygon is not allowed to rotate; then, the approximate solution can be obtained by optimization method. This paper studies the triangle packing problem by a new kind of method. Such concepts as angle region, corner-occupying action, corner-occupying strategy, and edgeconjoining strategy are presented in this paper. In addition, an edge-conjoining and corner-occupying algorithm is designed, which is to obtain an approximate solution. It is demonstrated that the proposed algorithm is highly efficient, and by the time complexity analysis and the analogue experiment result is found.


Introduction
Solving NP-hard problems is always the bottleneck task for computer science and techniques.However, in recent years, many research results have indicated that there is no a complete, accurate, and fast solving algorithm for this kind of problem at all.People tend to focus on searching for a quick and practical approximation algorithm; see, for example, [1].
Triangle packing problem is that given a known length and width of rectangle empty container and N triangles of definite size and shape; namely, the three sides of a triangle are known, and the question is whether the N triangles can be placed into the rectangle container.If we can, then give position and orientation of each triangle in the rectangle.If no, give a negative answer to this problem.Since triangle in the plane can be continuously translated and rotated, there are infinite numbers of placements which are detrimental to solve the problem.And so the placement should be limited always.The strategy in [2] is only to allow a polygon to be rotated, but not to be translated, which translates the polygon packing problem to NP-complete problem.
Triangular packing problem is a special case of a polygon packing problem but is still NP-hard.For now, there is no a quick and complete solving algorithm, and the heuristic method is still an ordinary method; see, for example, [3][4][5][6][7] and references therein.In this paper, a edge-conjoining and corner-occupying algorithm that is a quick and approximate method is designed based on the angle region-filling strategy.This paper has special significance for polygon packing problem, network resource optimization, and so forth, since it is a special case of a polygon packing problem; see, for example, [8][9][10][11].
In Section 2, the basic concepts such as angle region are given.The classification of angle region and the corneroccupying action are discussed, and the physical meaning has been analyzed in Section 3. In Section 4, two heuristics strategies and an approximate algorithm for solving triangle packing problem are proposed.Finally, the complexity of algorithm is also discussed and some results of the simulation example are given.

Formation of Angle Region
Definition 1. Triangles in a same plane are said to be intersectant, if the overlapping area of two triangles is larger than zero.
Or else the two triangles are said to be non-intersectant.
Definition 2. For two non-intersectant triangles in the same plane, if there exists one intersection at least between two edges which are from each triangle, then the two triangles are said to be tangent, as shown in Figure 1.
Definition 3.For two edges from two tangent triangles, respectively, if the following conditions are satisfied: (1) There exists only one intersection (O) for the two triangles; (2) An angle formed by the two edges is a positive angle and less than ; (3) In the angle of (2), there are no other edges of the two triangles except (1); then the angle in (2) is said to be the angle region of the two tangent triangles.Its size is called the angle of the angle region.The overlapping part of the initial edge of the angle in (2) and one of the two triangles is said to be the initial edge of the angle region; similarly, the overlapping part of the terminal edge of the angle in (2) and one of the two triangles is said to be the terminal edge of the angle region; the intersection in (1) is said to be a vertex of the angle region.As shown in Figure 2, △ ABC is tangent to △ DEF at O(A), and ∠ BOD is an angle region of the △ ABC and △ DEF; the angle size of the region angle is denoted by ∠ BOD; OB and OD are the initial edge and the terminal edge of the angle region, respectively; O is said to be the vertex of the angle region.
To judge whether there is an angle region formed by two tangent triangles, it is just to take out two edges with common vertex from each of triangles and judge that whether the two triangles form a positive angle less than  and verify that there is no other edges of the two triangles on the angle.The computational procedure can be realized according to vertex coordinate of the triangle.By the definition of angle region, whether the two edges of the tangent triangles can form angle region is unrelated to the size and shape of the triangle that will be put into the angle region.

The Classification of an Angle Region and the Corner-Occupying Action
Depending on the two triangles' different positions, the two tangent triangles may form zero, one or two angle region, which is shown in Figures 3 and 4(a)-4(c) and 5(a)-5(d), respectively.These angle regions look like the scraps generated during the material machining processes.If we make use of these scraps, then the ratio of utilization of material can be increased on basis of practical production experiences.It is illustrated through practice to sufficiently increase the ratio of material, and then the position of the filter within the vessel should be stable.Whether a plane figure is precarious depends on shiftable degree of freedom and the rotatable degree  of freedom.For a triangle, the rotatable degree of freedom refers to a clockwise or counterclockwise rotation of one triangle with the origin at one of its vertexes, and here the triangle is still in the rectangle container after be rotated, and the triangle cannot conflict with other triangles around it; namely, there is no overlapping part between the rotated triangle and other triangles, which means you can rotate the triangle freely; similarly, the translatable degree of freedom refers to a translation of one triangle along two opposite directions of one of the straight lines on which one edge of the triangle lies in the barycentric coordinate of the triangle as the initial point, when the triangle is still in the rectangle container after the manipulation of translating, and the triangle cannot conflict with other triangles around it; namely, there is no overlapping part between the translated triangle and other triangles, which means you can translate the triangle freely.
If a triangle with the barycentric coordinate as the initial point can translate freely along any straight line where a edge of the triangle lies, then the triangle is deemed to be impending.Apparently, the position of this kind of triangle is unstable, such as the triangle 1 shown in Figure 6.
If a triangle can translate freely along one straight line only or rotate freely around a certain vertex, this kind of position is pushable and swingable, and also it is unstable, such as the triangles 2 and 3 shown in Figure 6.
Generally speaking, the position where a triangle cannot translate freely along one straight line only or rotate freely around a certain vertex is stable, such as the triangles 4, 5, 6, and 7 shown in Figure 6.
If one edge of the triangle 1 is conjoined with a edge of another triangle 2, namely, the length of the overlapping part is more than zero and the triangle 1 can only translate along the edge of the triangle 2, then the position of the triangle 1 is pushable.Pushing the triangle 1 along the edge of the triangle 2, if the triangle 1 is just tangent to a third triangle and the edge of the triangle 1 is still conjoined with the edge of the triangle 2, then the position of the triangle 1 is stable.
In general, compared with the positions of triangles 4 and 7, the positions of triangles of 5 and 6 can easily divide the space, which is bad for making use of space.It is reasonable to assume that the positions of triangles 4 and 7 are better than those of triangles 5 and 6.For this reason, we have the following definitions.Definition 4. Corner-occupying action: If one edge of a triangle is conjoined with a initial or terminal edge of a angle region, namely, the length of the overlapping part is more than zero and another edge of the triangle is conjoined with a terminal or initial edge of the region, then the process of putting the triangle into the angle region is called a corner-occupying action.In the case, the angle opposite to the third edge is called the cut-in angle.
It can find a corner-occupying action in this way: pushing a edge which is conjoined with a initial or terminal edge of the triangle region of a triangle outside a rectangle container into the rectangle container, if when the triangle cannot be put away any more (when the triangle is tangent to the terminal or initial edge), the edge of the triangle is still conjoined with the initial or terminal edge of the angle region, then the process of putting the triangle into the position is called corner-occupying action.Therefore, the problem of putting a triangle into an angle region formed by two tangent triangles can be transformed to a issue of position relation between the edge of triangle and the line segment.Thereby, the search space can be confined in a limited number of points from a continuous Euclidean space.Definition 5.The conjoint degree of a corner-occupying action: If one edge (the length is  1 ) of a triangle and one edge (the length is  1 ) of an angle region are conjoint and let the length of the overlapping part be  1 , then the conjoint degree of corner-occupying action is  1 /max( 1 ,  1 ).Specially, if another edge (the length is  2 ) of the triangle and another edge (the length is  2 ) of the angel region are conjoint and the length of the overlapping part is  2 , then the conjoint degree of corner-occupying action is  1 /max( 1 ,  1 ) +  2 /max( 2 ,  2 ).Definition 6.For two edges of an angle region, if the angle between a edge which is conjoined with a triangle and another edge which is tangent to the triangle is  and the size of the cutin angle is , then the conformity degree of the corneroccupying action is min(, )/ max(, ).
The conjoint degree and the conformity degree are used to measure the adjacent degree between the filling triangle and the position where the filling triangle will be placed.The bigger the conjoint degree and the conformity degree of a corneroccupying action are, the higher the adjacent degree is.

An Algorithm of Edge-Conjoining and Corner-Occupying
As shown in Figure 7, a rectangle container can be deemed as a plane figure encircled by four triangles.

Definition 7.
Pattern: A pattern refers to a kind of ordered pair ⟨, , ⟩, where  is the set of four triangles forming the rectangle container which some triangles have been put in (each element in the set is denoted by three vertices coordinates of the triangle),  is the set of triangles out of the rectangle container (each element in the set is denoted by three edges of the triangle), and  is a set of angle region formed by triangles in .
At the first moment,  contains only four triangles forming the rectangle container, and  is the set of all triangles to be put in the rectangle container, and  is a set of four angle regions formed by four triangles in , and then the pattern at this moment is called the initial pattern, which is denoted by ⟨ 0 ,  0 ,  0 ⟩.Starting with the initial pattern, the pattern formed by putting the th triangle taken out from  into the rectangle container is called th pattern, which is denoted by ⟨  ,   ,   ⟩.In the th pattern, if   = 0, then it is called the terminal pattern.
In the th pattern before the terminal pattern, let a triangle perform corner-occupying action, if the triangle is still in the rectangle container and do not intersect with other triangle in   , then the corner-occupying action is called a reasonable corner-occupying action.
Corner-Occupying Strategy.For two reasonable corner-occupying actions  1 and  2 , let the conformity degree of both be  1 and  2 , respectively.If  1 >  2 , then  1 is said to have a higher priority than  2 .
Edge-Conjoining Strategy.For two reasonable corner-occupying actions  1 and  2 , let the conjoint degree of both be  1 and  2 , respectively.If  1 >  2 , then  1 is said to have a higher priority than  2 .
Based on the edge-conjoining strategy and the corneroccupying strategy, a heuristic algorithm for solving triangle packing problem is provided below.
Given the initial pattern ⟨ 0 ,  0 ,  0 ⟩, where  0 is the set of four triangles forming the rectangle container,  0 is the set of all triangles to be put in the rectangle container, and  0 is a set of four angle regions formed by four triangles in  0 .Arrange the angle region and the reasonable corner-occupying action in time order.
Step 1. Set  = 0, and the current pattern  is   .
Step 2. If  0 = 0, then it is reported that all triangles have been put into the rectangle container, and stop; if  0 ̸ = 0 and there is no reasonable corner-occupying action to perform in   , then the failure of algorithm is reported, and go to Step 3; if  0 ̸ = 0 and in   , there exists a reasonable corner-occupying action to perform, and then go to Step 3.
Step 3. Choose a reasonable corner-occupying action with the highest priority to perform according to corner-occupying strategy.If there exists only one reasonable corner-occupying action according to corner-occupying strategy, then fill the triangle according to this corner-occupying action, and go to Step 5; if not, choose a reasonable corner-occupying action with the highest priority to perform according to conjoiningoccupying strategy, and go to Step 4.
Step 4. Choose a reasonable corner-occupying action with the highest priority to perform according to conjoining-occupying strategy.If there exists only one reasonable corneroccupying action according to conjoining-occupying strategy, then fill the triangle according to this corner-occupying action; if not, fill the triangle according to the first corneroccupying action.
Step 5. Add three vertical coordinates of the triangle performing the corner-occupying action to the   , and remove three edges of the triangle performing the corner-occupying action from the   .Change   to  +1 ,   to  +1 , and  +1 to  +1 which is the set of angle regions formed by triangles in  +1 .Switch to a new pattern ⟨ +1 ,  +1 ,  +1 ⟩, and go to Step 2.

Time Complexity Analysis of the Algorithm of Edge-Conjoining and Corner-Occupying
For the initial pattern ⟨, , ⟩ if there are m triangles in  and  triangles in  without generality, find out the reasonable corner-occupying action with the highest priority and calculate out the (, ) time units (step number of calculating) spent on performing the action.Firstly, calculate the time complexity of all the angle regions formed by m triangles in .
Given two triangles, take out one edge from each of them, if it will take  time units to judge whether the two edges can form an angle region.Then, it will take (3, 1) * (3, 1) *  = 9 time units at most to find out all the angle regions formed by two given triangles.
It will take (, 2) * 9 *  time units to find out all the angle regions formed by m triangles in .By the definition of angle region, two triangles can form two angle regions at most.Therefore, there are 2 * (, 2) angle regions in  at most.In fact, there is little chance that a triangle is tangent to every triangle, where all the triangles are in the same rectangle container.Generally speaking, the total angle regions formed by m triangles are far less than 2 * (, 2).This is the root cause of the high speed of the proposed algorithm.
Secondly, calculate the time complexity of all the corneroccupying actions of putting  triangles which are in the  into the angle regions in .
If it will take  time units to put one triangle into the angle region along one of the edges of the triangle which is conjoined with a edge of the angle region, and 22 *  time units at most to put one triangle into a given angle region with 22 different corner-occupying actions at most, then it will take 2 * (, 2) * 22 *  time units at most to put one triangle in  into all the angle regions in , and 2 * (, 2) * 22 *  *  time units at most to complete the corner-occupying actions of putting  triangles in  into all the angle regions in .
Thirdly, calculate the time complexity of judging whether each corner-occupying action is a reasonable corner-occupying action.
If it will take  1 time units to judge whether two triangles are intersecting and  2 time units to judge whether a triangle is in the rectangle container, then it will take 2 * (, 2) * 22 * ( *  1 +  2 ) time units to find out all reasonable corner-occupying actions.
Finally, calculate the time complexity of finding out the corner-occupying action with the highest priority from all the reasonable corner-occupying actions.
If it will take  time units to compare the priorities of two corner-occupying action, then it will take 2 * (, 2) * 22 *  *  time units at most to find out a reasonable corner-occupying action with the highest priority.From the analysis above, the time spent on taking out the triangle corresponding to the corner-occupying action with the highest priority from  is at most