A method for cutting squares into distinct squares Ian Gambini Laboratoire d’Informatique de Marseille - Universit´e de la M´editerran´ee - Facult´e des Sciences de Luminy - 163, avenue de Luminy, Case 901 - 13288 Marseille Cedex 9 - FRANCE
Abstract We are interested in dissecting squares into distinct squares. We impose the condition that the squares have integer sizes. This restriction does not reduce the number of solutions since it is always possible to scale a non-integer solution to obtain an integer one. This leads, when the square size n is fixed, to a finite enumeration. We propose an algorithm which enumerates a subset of solutions when n is fixed. In spite of the incompleteness of this algorithm, we find many solutions and, in particular, for each integer p between 21 and 63, we have a solution using p squares. A second algorithm, this time complete, but computationally prohibitive, allows us to find an unexpected result: the smallest decomposition using integer squares has a size of 110. This paper is devoted to the description of the algorithms and to the presentation of an interesting subset of solutions. Key words: squaring squares; perfect squares; squaring
1
Introduction
A dissection is called perfect when all the squares have distinct sizes and the order is the number of elements (squares) used in the dissection. Historically, the first perfect dissection was described by R. Sprague in 1939 [?]. Since then, many solutions have been found, the problem being to find the one with the smallest order. C.J. Bouwkamp, A.J.W. Duijvestijn and P. Medema [?] demonstrate that there is no possible dissection if the order is less than 21. In 1948, a perfect square of order 24 was found by T.H. Willcocks [?] (figure ??), followed in 1964 by J.S. Wilson [?] with a perfect square of order 25. In 1967, five perfect squares of order 25 were published by J.S. Wilson in his thesis [?].
Preprint submitted to Elsevier Preprint
28 June 2008
Then, three other perfect squares of order 25 were obtained by P.J. Federico in 1978 [?]. Finally, A.J.W. Duijvestijn [?] found a solution of order 21 (figure ??) the March 22, 1978 with the aid of a DEC-10 computer. This solution is the single one of minimal order (except for symmetries).
27
35 50 8 15
17 2
11 6
9 7
24
18
25
29
19
16
4
33
37
42
Fig. 1. The perfect square of order 21 (112 × 112)
The same kind of result has been proved for perfect compound squares [?], in which a strict subset of elements is arranged in the form of a rectangle. Figure ?? shows the only perfect compound solution of minimal order (order 24), except for symmetries. The method we describe is an heuristic algorithm which proceeds by enumeration of integer values. Those values are the sizes of the squares in the dissection, so that we only obtain solutions with integer square sizes. This is not really problematic because it is possible to show that we can always scale a solution to obtain integer sizes as follows: C. Berge [?] shows that each solution of this problem can be expressed as the only solution in the reals of a system of linear equations with integer coefficients, so that the solutions are all rationals. Therefore, by multiplying those sizes by a coefficient, we obtain integer solutions.
2
Our enumerative algorithm
The main idea of the method is motivated by another question: how can we find the perfect solution of order 21? Reconsider the figure ?? and suppose that we know the bottom of the solution. 2
39 55 81
16 495 14 3
1
20
18 56 38
30 51 29
31
8
2
64
43
35
33
Fig. 2. Perfect compound square of order 24 (175 × 175)
33
37
42
Fig. 3. Initial Configuration.
Starting with this configuration (figure ??), it is possible to find the square of size 4 extending the top of the square of size 37 and 33, and then the one of size 29 by extending the left side of the square of size 4 and 33. This way, we finally find the solution of the 21 squares. The question is then to define the rules which allow us to know the size of each new square. The idea consists of constructing the big square from the bottom to the top, piling up squares. From an algorithmic point of view, we only need to know the top line of the construction; this means that at each stage we only need to keep in memory a list of horizontal lines which we call plates. Let hi and li be the height and the width of the plate i, taking the lower left corner as origin. In such a case, we can define two simple rules for building squares: • The horizontal extension (figure ??), which consists in adding a square of size hi+1 − hi if hi+1 > hi and of size hi − hi+1 if hi > hi+1 . 3
hi+1 , li+1
hi , li Fig. 4. Horizontal extension
• The vertical extension (figure ??), which consists in placing a new square on the full length of the plate. This way, we add a square of size li .
hi+1 , li+1
hi−1 , li−1 hi , li
Fig. 5. Vertical extension
This way, applying these two rules to the initial configuration of the figure ??, we rapidly obtain the solution of order 21. The advantage of this method lies in its simplicity. The number of choices at each stage is small, and starting with an initial configuration the solution is completed rapidly. The main disadvantage is the initialization with its prohibitive enumeration. Effectively, we have to fix the number of squares at the bottom and we also have to fix their sizes, which is very expensive in terms of enumeration. This method is also limited because we can find many solutions but not all of them. For example, we cannot find the solution of order 24 (figure ??).
3
Details of the algorithm
The implementation of this method is, however, delicate because we have to take care not to process the same configuration more than once. A stage of the construction is made of two pieces of information: (1) The knowledge of the square sizes already used, to avoid using the same size again, since we are looking for perfect dissections. (2) The knowledge of the top of the construction is sufficient for using our construction rules. A possible codification could be to store a list of a couple (height, width) corresponding to each plate. We have to deal with fixing an order for the placement of the squares because doing the search by placing first a square a and then a square b gives the same results as placing the square b and then the square a. To avoid finding 4
the same solutions by processing the same configuration more than once, we have to choose a method for placing the squares which avoids constructing the same configuration more than once. This rule was not easy to find because we have to take care not to forget some complicated particular cases. What are the main stages of the algorithm? First, we have to enumerate the sizes for the square to be dissected. Next, to obtain an initial configuration, we have to enumerate the squares sizes at the bottom. The number of squares being enumerated at the bottom is a parameter of our algorithm. There are some modifications to improve this method. First, to avoid vertical symmetry, we impose the condition that the bottom left square be smaller than the bottom right one. This way we obtain an initial configuration like the one in figure ??. We can also notice in this figure the adjunction of two plates corresponding to the top of the square to be dissected. Taking this configuration rather than the first one allows to find more solutions by extending those plates. h0 , l0
h1 , l1
33
h4 , l4
h2 , l2
37
h3 , l3
42
Fig. 6. Initial configuration of the algorithm.
With regard to the method for placing new squares, we proceed from left to right. Each time we place a new square on a plate i, we have to look to the modifications of this placement on adjoining plates; the next square will be placed first on the modified plate at the extreme left. This way, we avoid constructing the same configuration, so that time is saved and each solution is obtained only once. An important property of this algorithm is that it cannot increase the number of plates during construction. This is true because our two construction rules (the horizontal extension and the vertical extension) do not create new plates, 5
they just modify the height (vertical extension) or the width (horizontal extension) of existing ones. This number of plates can only decrease and result in one plate when a solution of perfect square is found. However, this algorithm can also find decompositions of perfect rectangles. To find them, we have just to look at the plates. When all the initial plates have the same height, making a single plate, we know that we have found a dissection of a perfect rectangle. As a matter of fact, the two rules for the construction allow us to create new squares whose sizes are either sums or differences of sizes already used. So, if the squares used at the initialization stage have a greatest common divisor different from 1, each new square created by our rules will be also divisible by it. This will lead to a solution already found but with sizes multiplied by a constant. To avoid this, if the sizes of the initial squares have a greatest common divisor different from 1 we will not continue further. This test does not allow us to eliminate enough configurations and does not save much time, but this technique allows us to find only minimal integer solutions. Another remark can be made about this initial configuration. There are configurations which cannot give any solution. For example, the one in figure ?? cannot lead to a solution because our algorithm will never succeed in filling the space on the top of the square of size 15.
42
33 15
Fig. 7. Example of initial configuration without solution.
To generalize, for each plate i, if we take (hi−1 , li−1 ), (hi , li ), (hi+1 , li+1 ) as three consecutive plates resulted from initialization, then the configuration will have no solution if we have li < hi−1 − hi and li < hi+1 − hi . This remark allows for an acceleration of our algorithm.
4
Pseudo-code
We give a pseudo-code of the algorithm described before. There are two main parts. The first one (procedure solve) is very simple and its aim is to generate 6
all the possible initial configurations described in figure ?? and for each configuration, we launch the resolution. This step requires two parameters which are the size of the square to be dissected (square size) and the number of squares used at the bottom to create the initial configuration (nb base squares). Procedure solve(nb base squares, square size) h0 = hnb base squares+1 = square size l0 = lnb base squares+1 = 1 hinitialize enumerationi for each henumerationi do call horizontal extension(p0 , p1 )
This first step generates the starting top line of the construction stored in two vectors called hi and li representing the height and the width of the plate pi (i ∈ {0 . . . nb base squares + 1}). Now, following the previous explanation of the algorithm and paying attention to some particular cases, we can construct the following procedures (horizontal extension and vertical extension) : Procedure horizontal extension(pi , pi+1 ) if hi+1 > hi then if hi+1 − hi < li ∧ size not used(hi+1 − hi ) then hplace the square of size hi+1 − hi i if hi−1 − hi = li then if ¬last plate(pi+1 ) then CALL vertical extension(pi+1 ) else CALL vertical extension(pi ) hremove the squarei else if hi − hi+1 < li+1 ∧ size not used(hi − hi+1 ) then hplace the square of size hi − hi+1 i if ¬f irst plate(pi ) then if hi−1 ≥ li + hi+1 then CALL horizontal extension(pi−1 , pi ) else CALL vertical extension(pi ) else CALL vertical extension(pi+1 ) hremove the squarei if ¬last plate(pi+1 ) then CALL vertical extension(pi+1 )
These two procedures are the core of the algorithm and all the processing time is spent here. They correspond to the two main rules described before: the horizontal extension and the vertical extension. In this pseudo-code, we have used an array to represent the plates configuration but in a real implementation, it will be more efficient to use a linked list stored in an array. 7
Procedure vertical extension(pi ) if size not used(li ) ∧ hi + li ≤ square size then hsave configurationi h0 = hi−1 l0 = li−1 hplace the square of size li i if hi = hi+1 then hmerge plate pi+1 to pi i if hi−1 = hi then hmerge plate pi−1 to pi i htest if solution foundi if f irst plate(pi ) then if ¬last plate(pi ) then CALL horizontal extension(pi , pi+1 ) else if hi − li − hi−1 = li−1 then CALL vertical extension(pi−1 ) else if h0 = hi ∧ hi−1 − hi ≤ l0 then if ¬last plate(pi ) then CALL vertical extension(pi ) else CALL horizontal extension(pi−1 , pi ) hrestore configurationi if hi−1 − hi ≤ li ∨ hi+1 − hi ≤ li then CALL horizontal extension(pi , pi+1 ) 5
General results
An important parameter of our algorithm is the number of squares at the bottom of the construction. This number is also the number of plates at the beginning. Our choice was first to use three plates to find the solution of order 21. We can also start the algorithm with a different number of plates, but using three plates we rapidly obtained many solutions. The results obtained using three plates and enumerating the size of the square to be dissected from 6 to 1200 are as follows: • 2,718 perfect squared squares (not taking symmetries into account); • 5,961 perfect squared rectangles (not taking symmetries into account); • the only compound perfect square found is the one of size 196 of order 52 (cf. set of solutions); • the first perfect square found is the solution of order 21 of the figure ?? after 2.5 seconds; • 115,070,342 initial configuration processed out of 138,143,297 enumerated, on which 544,802,604,910 squares have been placed; • the calculation took 143 hours of processing time using a Pentium Pro 200 under Linux. Fig. 8. Order distribution of squares found (using 3 plates).
Figure ?? shows us the distribution of the orders in the solutions found. We 8
can observe a curve looking like a “bell” which extends to a higher order when we continue searching. This allows us to think that the bigger the size of the square to dissect, the better the chances of finding higher order solutions. A strange result was that our algorithm did not find any solution of order 22. This is true only if we start using 3 plates; but using 4 or 5 plates we find fewer solutions but we find two squares of order 22 (figure ??).
24 60
50
26 50
60
22 28 14 8 6 13 7 17 23 16 4 21 12 3 27 15 18
24 26
22
14
23
27 4
8 6 3 12 9 16 19 28 21 17 18
Fig. 9. Two perfect squares 110 × 110 of order 22
Having found squares of order 22, we have therefore found solutions from order 21 to 63. If we take the square of order 21 and if we dissect this smallest square into 21 distinct squares, we obtain a new dissection of order 41 but this time the solution is compound. So, using dissections from order 21 to 40, we can construct a new solution of any order greater or equal to 21. If we examine the existence of minimal integer solutions, the squares of figure ?? are interesting: they are the smallest ones (110 × 110) found by our algorithm. The question is then to know if 110 is the smallest size for integer solutions, and if the two squares found are the only ones. To test that, we have first shown the following property, by an enumeration of all possible cases, which allows us to have a reasonable processing time: Property 1 Squares of sizes 1, 2, 3 or 4 cannot appear on the sides of a dissection using integer sizes. The proof of this property is pretty simple to do manually but it takes a little bit long to explain it here. The idea of the method is the following: if the square of size 1 is placed at the bottom of a construction, since the square at the left side and the square at the right side are bigger, the only way to continue the construction is to place a square at the top of the square of size 1. The only way to do it is to place a new square of size 1 which is forbidden because all squares must have different sizes. So you cannot have a square of size 1 on the sides of an integer dissection. Similarly using squares of sizes 2, 3 and 4 one can complete the proof of property ??. 9
6
The second algorithm
To find the smallest square which can be dissected using squares of integer sizes, we have modified our first algorithm to make a new one. This new algorithm is simpler but the space search is prohibitive. Instead of using our two preceding rules, we now have a unique rule to apply at each stage of the algorithm: we consider all the possible configurations on the top of the smallest delimited plate. hi+1 , li+1
hi−1 , li−1 hi , li
Fig. 10. Delimited plate
We take the smallest plate to reduce the search space and we take only delimited plates to enumerate all possible configurations leading to a possible solution. If the plate is not delimited, we don’t know the definitive width of this plate because a horizontal extension is possible. This way, we are sure to find all possible solutions because at each stage we enumerate all the possible following configurations leading to a solution. The initialization of this algorithm is simpler than the previous one. Here, we start with a single plate at the bottom having the width of the square we want do dissect. In fact, instead of dissecting a plate, the basic rule can be simpler. At each stage, we place a new square at the left of the smallest plate delimited. This method is quite the same than before but is simpler to implement.
6.1
Pseudo-code
As said before, the starting procedure (solve2) is really simple. For technical reasons, we have to place two virtual plates to delimit the construction, otherwise the first plate will not be delimited as required for its decomposition. This way we are sure to always find a smallest delimited plate. The next step is to find the smallest plate delimited and start its decomposition (procedure next plate). If the plate width is equal to the square size then we know that we have found a solution. Finally, the most complex procedure is the decomposition of a plate (procedure decompose). In fact, the following procedure does not really decompose a plate. 10
Procedure solve2(square size) h0 = h2 = square size + 1 h1 = 0 l0 = l2 = 1 l1 = square size CALL decompose(p1 ) Procedure next plate() lmin = square size + 1 i=1 while ¬last plate(pi ) do if hi−1 > hi ∧ hi < hi+1 ∧ li < lmin then pmin = pi lmin = li i=i+1 if lmin = square size then if hmin = square size then hsquare foundi else hrectangle foundi CALL decompose(pmin ) else CALL decompose(pmin ) Its aim is just to place the first square of the plate decomposition. There are different cases: first we use the whole plate width, then we try to extend the previous plate (i.e. horizontal extension) and finally we enumerate all possible square sizes. In the first case, we have finish decomposing the plate so we have to find a new plate to decompose. In the last two cases, the plate decomposition is not finished so we continue the algorithm decomposing the remaining plate width. The procedure decompose can be optimized because the second test is useful only for the first square of the plate decomposition.
6.2
Results
We know that we can find all the dissections having a given size. The only problem is the extreme complexity of this new algorithm. We have tested this program to find all squares (and rectangles) of size less or equal to 112 × 112. 11
Procedure decompose(pi ) if size not used(li ) ∧ hi + li ≤ square size then hsave configurationi hplace the square of size li i if hi = hi+1 then hmerge plate pi+1 to pi i if hi = hi−1 then hmerge plate pi to pi−1 i CALL next plate() hrestore configurationi if size not used(hi−1 − hi ) ∧ hi−1 − hi < li then hplace the square of size hi−1 − hi i CALL decompose(pi ) hremove the squarei for size = 2 to M IN (li − 1, square size − hi ) do if size not used(size) ∧ size 6= hi−1 − hi then hplace the square of size size on pi i CALL decompose(pi+1 ) hremove the squarei
Here are the results: • 4 perfect squared squares (not taking symmetries into account), 3 of size 110 × 110 and 1 of size 112 × 112; • 118 perfect squared rectangles (not taking symmetries into account); • 1,633,183,723,812 squares have been placed; • the calculation took 360 hours of processing time using a Pentium Pro 200 under Linux. This new algorithm gave us not only the two solutions of figure ?? but also a new square of size 110 using 23 squares (figure ??). This square gives us the third and last square of size 110 (not found by our first algorithm). We have thus shown three properties: Property 2 The smallest perfect square using integer sizes has a size of 110. Property 3 The set of perfect squares of size 110 using integer sizes include only two solutions of order 22 (figure ??) and one of order 23 (figure ??). Property 4 The square of order 21 (figure ??) is the only one of size 112 × 112. 12
29
37
44 8 21
13 32
15
19
16 4 23
5 10 14 7 41
31
28 12
38
Fig. 11. Perfect square of size 110, using 23 squares
7
Interesting subset of solutions
For every order from 21 to 63, we give the first solution found by the algorithm, which corresponds to squares with minimal sizes. Among them, three are interesting: • the square 112 × 112 of order 21 is the one with the minimal order; • the one 110 × 110 of order 22 is the first one of minimal size found; • the one of size 976 of order 52, because at the present time, the algorithm has not found other compound perfect squares.
13
33
37
42
4 16 24 18 7 9 25 29 6 17 15 19 11 8 50 27 35
112 × 112, 21 Squares 80
142
56
104
24 32 43
83 65 71 101
44 29
119
53 63
106
326 × 326, 24 Squares 122
135
285
5347 126 90 74 98 94
235
164
210 251
102
291
229
752 × 752, 27 Squares 309 322
17 21 18
8159 96 124 88 120 152 64 144 84
276
49
23 50
27
15
110 × 110, 22 Squares 64 57
163 116 83 80 127 86 89 115 175
107
43 50
217 34
183
149
507 × 507, 25 Squares 189
251 235
62 127 78 91 114 66 99 72
529
66
57
63
60
257 × 257, 23 Squares 31 60 32 63 82 95 219 66 50 61 40 33 76 36 37 70 177 112 107
396 × 396, 26 Squares
130
68 55 52 48 71
124 84
162
164
440 186
969 × 969, 28 Squares 97 85 186 73
296
109
105
177
244
86
145
786 × 786, 29 Squares 68 52 88
135
123
147
84 82 53 60 124 77 5144 139 69 95
53 158
455
63 104
155
86
325
306
945 × 945, 30 Squares
301
499 × 499, 33 Squares
312 263 247
220
55
239
330
870 × 870, 31 Squares
43
96 41 51 133 178 82 57 32 39 64 150 76 37 66 170 113 216 151 132
212
81
136
62
314
331
163
167
135 164
363
134
98 66
253 276
206
123
22 33 209 32 24 17 29 28
208
60 110
344
279
60
8 14 6 13 7 4 16 12
55
79
28 22
230
62
232
26 24
241
191
678 × 678, 32 Squares 72
185 77108 124 70100 10474
611
205 165
192 172
286 325
497
1108 × 1108, 34 Squares
14
246
183
132 144
39 45 44 49 35 79
87 56 89 156 78 57 36 66 51
253
117
553 × 553, 35 Squares
147 11073 81 196 115 153 11484
290
173 178
486
188 163 135 228
258
238
248
641
116 94 166 72 138 88 150 141 85 122 77 188 111 168
330
152 101 117 72 62 138 95 144 82
290
409 316
118126
481
244
370
345
123101143 102 198 93 87 157 221 10976 242 166 159 238 79
396
48 91
128 122
166
333
60 68 77 45 52 65 109
408
317
211
104 70
281
247
221
749 × 749, 38 Squares
120117130
316
93 61 90
195 169
829 × 829, 37 Squares
142 134
362
459
233 226
1127 × 1127, 36 Squares 395
61 132 90 87 5153 97 99 174 93 103
206
95 132
181 113 78109107 140 83 91 99
346
224
92
465
363
241
311 276
535
1087 × 1087, 39 Squares 1121 × 1121, 40 Squares 1122 × 1122, 41 Squares 188
144 159
10061 98 176 120 72 73 111 71
233 143 90 196
445
63 148 114 96 95 11765 69 91 141 68
314 344
491
936 × 936, 42 Squares
374
178
149 116
443
905 × 905, 45 Squares
220
78
60 121 61 171 100 90 92 193
102 73 74 71 101 111 66 10067
469
237
168
527
372
191
331
375
1084 × 1084, 46 Squares 77
90118 153 79111 188 182 151 78112
458
76137 164
332
202 141 160 130
453
980 × 980, 48 Squares
580
10077 71 5965 75 83 90 79 199 92 85 69 7078 134
233 58
334
213
83
379 296
482
157 112 213
378
200
166
240 287
337
160 109
161
80 153
351
611
1032 × 1032, 43 Squares 1191 × 1191, 44 Squares
284 462
167 108113 192 79 83 158 90 228 132118 72 121 154 191 114 86 149 98 94 229 78135 169 91 260
7283 88 98 93
207 236
156
419
239
10859 91 98 106 72 75 104 97 114 6966 188 139 135 74 65 136 137 87 83
313
154 112109 73 135 104
212 249
204
171
300
494
214
481
268
963 × 963, 47 Squares 82110116 138 80106100 160 101128 74 132 10786 63103124 94 64 85 77 130 175 120 163
305 283
588
446
1169 × 1169, 49 Squares 1034 × 1034, 50 Squares
15
110 95 198 97 98 1318078138 220 89122 96 92 216 180 8475 121 167 264 152 136 207
120
328
216
552
647
11260 72 85 70
69 150 208 6362 6465 146 81 172 84 186 89 83 135
493
95 101
483
196
224
1199 × 1199, 51 Squares
297
76 141 8677 172 8281 187 95 99
255 73164 103 223
191 79
591
177
335 256
522
251 269
95 197 111 184 73 98102 106 173
389
279
566
1086 × 1086, 53 Squares 92 105
335
124 118
394
333
272
294
82 76 110 81104
104 152
295
88 89
80
257 263
75 162 79 71108 170
436
520
126
213
227
976 × 976, 52 Squares
128 84
104 110 76 229 8866 123 72 114 112 119 81 90
137 152 128 135
316
79 203
68
452
339
271
395
1113 × 1113, 54 Squares 1120 × 1120, 55 Squares 1005 × 1005, 56 Squares 75 71 188 134 8770 186 85 79 129 158
83
92 145
588
214
119 99102 215
138 235 74
289 299
75 150 10586 99 8473 112 204 141 79 85 70 83 11992
325
534
621
136 143 96
382
93 172 79 153 96 90 210 157 133 87123 13811984 111 132 257 127 188 75
107
246
536
239
361 312
673
500
1122 × 1122, 57 Squares 1157 × 1157, 58 Squares 1173 × 1173, 59 Squares 159
74 180 110
174 149 72 98
285 271
136 76 85 94 75125 77 148 219
303 335
76109 189 80
638
126115
214
90 99 160 135 73 77 127 115 141 205 78
571
141 111
176 111
284 108 554
71
321
179
165
588
250
68
75120128 69 107 208 7071101 87 78
450 215
198
114129 207 99 84 183
235
665
267
1192 × 1192, 60 Squares 1159 × 1159, 61 Squares 1115 × 1115, 62 Squares 76 155 98 71 9689 212 142 181 86 88 79130 180 92 160 116 151 108 81 137 199 127 173
300 336
636
535
1171 × 1171, 63 Squares
16
8
Conclusion
Until now, the vast majority of the results in this domain have been found using computer techniques, and mainly graph enumeration [?,?]. This approach was used to find the well known 21 squares solution [?] and also to find similar problems like Simple Perfect Square-Cylinders [?] and Simple Perfect 2 × 1 Squared Rectangles [?,?]. Another interesting method is to use constraint techniques to solve this problem [?]. This approach was also used to solve perfect square puzzles (where each square size is fixed) [?]. The benefit of the algorithm described here is that we can find squares and rectangles dissection rather rapidly and numerously. It seems that this method places squares astutely since we find optimal solutions for the order 21 and for the size 110 × 110. In addition, the solutions found are extremely rarely compound squares but it is easy to create compound dissections using noncompound ones.
References
[1] A. Augusteijn and A.J.W. Duijvestijn, Simple Perfect Square-Cylinders of Low Order, Journal of Combinatorial Theory, Series B 35, pages 333-337, 1983. [2] C. Berge, Notice sur l’utilisation de la notion de potentiel pour les r´eseaux de transport. Th´eorie des graphes et ses applications, pages 240-249, Dunod, 1958. [3] R.L. Brooks, A Procedure for Dissecting a Rectangle into Squares, and an Example for the Rectangle Whose Sides Are in the Ratio 2:1, Journal of Combinatorial Theory 8, pages 232-243, 1970. [4] A. Colmerauer, An Introduction to Prolog III, CACM, pages 25-30, 28(4):412418, 1990. [5] Y. Colombani, Carr´es Parfaits & Contraintes sur Intervalles d’Entiers, M´emoire de D.E.A., Facult´e des Sciences de Luminy, Universit´e de la M´editerran´ee, 1993. [6] A.J.W. Duijvestijn, Electronic Computation of Squared Rectangles, Thesis, Technological University, Eindhoven, The Netherlands, 1962 ; Philips Research Reports 17, pages 523-612, 1962. [7] A.J.W. Duijvestijn, Simple Perfect Squared Square of Lowest Order, Journal of Combinatorial Theory, Series B 25, pages 240-243, 1978. [8] A.J.W. Duijvestijn, A Lowest Order Simple Perfect 2 × 1 Squared Rectangle, Journal of Combinatorial Theory, Series B 26, pages 372-374, 1979.
17
[9] A.J.W. Duijvestijn, P.J. Federico and P. Leeuw, Compound Perfect Squares, American Math. Monthly, vol 89, pages 15-32, 1982. [10] P.J. Federico, Squaring rectangles and squares: A historical review with annotated bibliography, in Graph Theory and Related Topics, Academic Press, pages 173-196, 1979. [11] R. Sprague, Beispiel einer Zerlegung des Quadrats in lauter verschiedene Quadrate, Math. Z. 45, pages 607-608, 1939. [12] W.T. Tutte, A Census of Planar Maps, Canad. J. Math. 15, pages 249-271, 1963. [13] W.T. Tutte, Squared rectangles, Proceedings of the IBM Scientific Symposium on Combinatorial Problems, pages 3-9, 16-18 March 1964. [14] T.R.S. Walsh, Counting Non-isomorphic Three-Connected Planar Maps, Journal of Combinatorial Theory, Series B 32, pages 32-44, 1982. [15] T.H. Willcocks, Problem 7795 and solution, Fairy Chess Rev. 7, 1948. [16] J.C. Wilson, A Method for Finding Simple Perfect Squared Squarings, Thesis, University of Waterloo, 1967.
18