From: David W. Cantrell on
ThomasCR <protokol2020(a)gmail.com> wrote:
> Some new results with a new packing program at
> <http://critticall.com/SQU_cir.html>

Many thanks, Thomas, for that link!

(I don't know if you are associated with that web page or not. But in any
event, I am also sending a copy of this to Nevenka Kristan.)

There is a particular reason that I'm delighted with some of the new
results on that web page:

On Mar. 7, 2009, in this newsgroup, I conjectured an upper bound for the
inradius r of the smallest square into which N unit circles could be
packed. Recast in terms of the side length s, my conjectured upper bound is

(#) s <= (c1 + sqrt(4 sqrt(3) N (9 + 4 sqrt(2)) + c2))/(4 + sqrt(2))

where constants c1 = 5 + 3 sqrt(2) - 2 sqrt(3) and
c2 = 55 + 30 sqrt(2) - 52 sqrt(3) - 20 sqrt(6).

At that time, Packomania gave packings continuously up to N = 300. Of those
packings, only N = 251, 253, 257 and 258 violated (#).

In the meantime, although I did look for packings for those four N values
which would satisfy (#), I didn't consider finding such packings to be a
high priority because I felt confident that such packings would eventually
be found. However, I did happen to find packings for N = 253 and 258 which
satisfied (#) but hadn't gotten around to posting them here yet. But
anyway, the above link now shows that Critticall has found packings for
N = 257 and 258 which satisfy (#), and its packing for N = 258 is better
than mine. Below, I now give my packing for N = 253, and so that leaves
N = 251 as the only case for N <= 300 for which a packing satisfying (#)
has yet to be found.

------------------------------------

N = 253
s = 30.59239739099812868316...
669 contacts
<http://i403.photobucket.com/albums/pp113/DWCantrell_photos/Sq/circs253sq.gif>

According to (#), we needed to have
s <= 30.6476... But the best packing previously known had side length
s = 30.6534... and 637 contacts.

------------------------------------

Packomania has also been extended in the meantime, now giving packings
continuously up to N = 420. The only packings there for 300 < N <= 420
which do not satisfy (#) are N = 354, 355, 390, 391, 392 and 420.

Of course I would be particularly interested to see if Critticall (or some
other program or person) could find packings for N = 251, 354, 355, 390,
391, 392 and 420 which satisfy (#).

[In the interest of "full disclosure", perhaps I should note that I
actually already have packings which satisfy (#) for a few of those N. But
none of those packings are optimized yet. As an example, for N = 390,
according to (#), we should have s <= 37.803... The packing currently shown
at Packomania has s = 37.818... My figure
<http://i403.photobucket.com/albums/pp113/DWCantrell_photos/Sq/circs390sq.gif>
has s = 37.738, using three large hexagonal lattice groupings.]

Recently, responding here to Christian Bau, I said that
> Only a few days ago did I finally get a copy of _New Approaches to Circle
> Packing in a Square_, P.G. Szabo et al. (Springer, 2007). Once I've had a
> chance to digest certain parts of it, I'll be making comments about it in
> this thread.

Well, it happens that they give some proven bounds. I will be quite
interested to see how those relate to my conjectured bounds. I hope to post
a comparison here soon!

Best regards,
David W. Cantrell
From: ThomasCR on
Hi David!

Yes I am associateed with that site, as Nevenka Kristan is also. Check
www.algit.eu also. In 24 hours you will see the new (better) result
for the 251 circles in a square. We will let it calculate some more,
despite the fact, that we already have a new result.

Best regards, Tomaž Kristan

(hum ... I have ThomasCR Google account but also much better Thomas
Google account but I have to retrieve the password somehow ... never
mind ...)
From: ThomasCR on
The result of 251 circles is up.

http://critticall.com/SQU_cir.html

at the bottom.

Check it out.

Besides, you can download, install and run the software Packntile.exe.

Every (new best) result is scrambled, but we can unscramble it, if you
send it to my mail. We will publish it along with your name.

Another option is, if you register the version. This way you can
IMPROVE any old result further.

In any case, the tool is powerful.

Best regards,

Thomas
From: David W. Cantrell on
ThomasCR <protokol2020(a)gmail.com> wrote:
> The result of 251 circles is up.
>
> <http://critticall.com/SQU_cir.html>
>
> at the bottom.
>
> Check it out.

Congratulations! And many thanks!
Now, for all N < 354, we know packings which obey my conjectured upper
bound

(#) s <= (c1 + sqrt(4 sqrt(3) N (9 + 4 sqrt(2)) + c2))/(4 + sqrt(2))

where constants c1 = 5 + 3 sqrt(2) - 2 sqrt(3) and
c2 = 55 + 30 sqrt(2) - 52 sqrt(3) - 20 sqrt(6).

In a previous response to you, I said
> Recently, responding here to Christian Bau, I said that
>> Only a few days ago did I finally get a copy of _New Approaches
>> to Circle Packing in a Square_, P.G. Szabo et al. (Springer, 2007).
>> Once I've had a chance to digest certain parts of it, I'll be
>> making comments about it in this thread.
>
> Well, it happens that they give some proven bounds. I will be quite
> interested to see how those relate to my conjectured bounds. I hope
> to post a comparison here soon!

That comparison of bounds will be posted in a few days. However, since one
of their bounds is based on certain families of packings, it makes sense to
mention those families first, relating them to the two packing families,
compression and shift, which I had discussed previously in this thread.
This will probably appear here later today or tomorrow.

Best regards,
David W. Cantrell
From: David W. Cantrell on
We discuss how the two families of packings, mentioned here earlier,
are related to patterns discussed in _New Approaches to Circle Packing
in a Square_. An existing conjecture concerning an infinite subfamily
of optimal packings in the compression family is broadened, and
another conjecture, perhaps new, concerning an infinite subfamily of
optimal packings in the shift family is presented. (For readers'
convenience, previous comments about the compression and shift families
are copied below my signature.)

-------------------------------------------------

In _New Approaches to Circle Packing in a Square_ (NACPS), P.G. Szabo et
al. (Springer, 2007), several more packing families are discussed than the
two I had mentioned here. Those two families interested me because they
seemed to have the potential to contain infinitely many optimal packings. I
had not considered other families because I assumed that each of them would
contain only finitely many optimal packings. Although that assumption
appears to be correct, I had not noticed that considering such families
could still be useful in obtaining a bound for the packings. (Readers
interested in specifics of those other families may refer to section 10.1,
Finite pattern classes, pp. 113-130 in NACPS.)

-------------------------------------------------

The Compression Family and a Broadened Conjecture

The family of packings obtained by compressing a hexagonal lattice
packing, as discussed here previously, includes some members of
two pattern classes, PAT_1(k(k + 1)) and PAT(k^2 + floor(k/2)),
discussed in section 10.1 of NACPS. But more significantly, the
compression family is closely related to the discussion in their
section 10.2, A conjectured infinite pattern class. Due to my lack of
familiarity with the literature, it is hardly surprising that what I had
presented here about the compression family is very similar to previously
published work; see the 1999 paper <http://cms.math.ca/cmb/a149060> by
Nurmela et al. They relate the packings in this family, much as I had
done, to rational approximations of sqrt(3). And they conjecture that,
by using every second convergent obtained from the continued fraction,
we always obtain optimal packings. Significantly, they say that "From
elementary Diophantine approximation theory it is known that a 'good
approximation' to an irrational number is necessarily a partial
fraction in the continued fraction expansion of this number..." Using
denominators q through 100, for example, their procedure would yield
four packings -- for N = 2, 12, 120 and 1512.

But the compression family, as noted here previously, contains many
more packings in that range which are optimal or presumably so. Since
it seems a pity to exclude more packings than necessary from the
conjectured subfamily of optimal packings, I propose that the
"usefulness" of a fractional approximation be defined differently here,
thereby allowing the conjecture to be broadened:

For a given power r, if p'/q' is a previous used fractional approximation
to sqrt(3), then p/q (not necessarily in lowest terms) will also be used if

q^r |p/q - sqrt(3)| < q'^r |p'/q' - sqrt(3)|

We now examine how this definition of usefulness of an approximation
works, using various values of r, in relation to the compression
family. A short program in Mathematica will be used for illustration.
Since we are dealing with the compression family, only fractions which
_under_estimate sqrt(3) are considered. [Notes: s denotes, as before in
this thread, the side length of the smallest square into which N unit
circles can be packed, while m denotes the maximal pairwise distance
between N points in the unit square. And in Mathematica,
the function N[.], which gives a numerical approximation, is not to be
confused with N denoting the number of circles or points.]

r = 2; Print[{"N", {p, q}, delta, m, s}]; delta = 1;
Do[p = Floor[q Sqrt[3]]; d = q^r (Sqrt[3] - p/q);
If[d < delta, delta = d; m = Sqrt[p^-2 + q^-2];
Print[{Ceiling[(p + 1)(q + 1)/2], {p, q}, N[delta], m, N[2(1 + 1/m)]}]],
{q, 1, 100}]

{N, {p, q}, delta, m, s }
{2, {1, 1}, 0.732051, Sqrt[2], 3.41421}
{12, {5, 3}, 0.588457, Sqrt[34]/15, 7.14496}
{120, {19, 11}, 0.578148, Sqrt[482]/209, 21.0394}
{1512, {71, 41}, 0.577408, Sqrt[6722]/2911, 73.0106}

Notice above that, with power r = 2, our definition of usefulness gives
exactly the fractional approximations to sqrt(3) and the associated
packings given by the conjecture of Nurmela et al. If we decrease the
power, now using r = 1, we get four more packings in the same range,
all of which are again at least presumably optimal: N = 6, 52, 621 and
8281.

Of course the power r may not be decreased with impunity. If we
decrease it too much, we eventually get packings which are known to be
suboptimal. The first case of this occurs when r is about -3.9 with
the introduction of the compression packing for N = 407. [Although
that packing is known to be suboptimal, it is interesting that its
side length is only a mere 0.00047% larger than
s = 2 (487 + 504 Sqrt[3] + 42 Sqrt[2797 + 168 Sqrt[3]])/193
for the presumably optimal packing for N = 407.]

Conjecture 1:
Using some power r <= 1, the packings generated by the above procedure will
always be optimal.

I do not feel comfortable guessing specifically the smallest possible
power r which would generate only optimal packings. But it would be
nice if we could use r = -5/3. This would give, using denominators q
through 100 again, for example, fifteen compression packings, all at least
conjecturally optimal:

r = -5/3; Print[{"N", {p, q}, delta, m, s}]; delta = 1;
Do[p = Floor[q Sqrt[3]]; d = q^r (Sqrt[3] - p/q);
If[d < delta, delta = d; m = Sqrt[p^-2 + q^-2];
Print[{Ceiling[(p + 1)(q + 1)/2], {p, q}, N[delta], m, N[2(1 + 1/m)]}]],
{q, 1, 100}]

{N, {p, q}, delta, m, s }
{2, {1, 1}, 0.732051, Sqrt[2], 3.41421}
{6, {3, 2}, 0.0730914, Sqrt[13]/6, 5.32820}
{12, {5, 3}, 0.0104778, Sqrt[34]/15, 7.14496}
{27, {8, 5}, 0.00903215, Sqrt[89]/40, 10.48}
{39, {10, 6}, 0.0033003, Sqrt[17/2]/15, 12.2899}
{52, {12, 7}, 0.000693539, Sqrt[193]/84, 14.0929}
{99, {17, 10}, 0.000690514, Sqrt[389]/170, 19.2387}
{120, {19, 11}, 0.0000878211, Sqrt[482]/209, 21.0394}
{304, {31, 18}, 0.0000795006, Sqrt[1285]/558, 33.1324}
{449, {38, 22}, 0.0000276619, Sqrt[241/2]/209, 40.0788}
{621, {45, 26}, 5.61637*10^-6, Sqrt[2701]/1170, 47.025}
{1512, {71, 41}, 7.04598*10^-7, Sqrt[6722]/2911, 73.0106}
{3978, {116, 67}, 6.40152*10^-7, Sqrt[17945]/7772, 118.035}
{5935, {142, 82}, 2.21935*10^-7, Sqrt[3361/2]/2911, 144.021}
{8281, {168, 97}, 4.49482*10^-8, Sqrt[37633]/16296, 170.007}

Regrettably, the list above still omits the compression packings for
N = 18, 161 and 188, all thought to be optimal, but r cannot be reduced
enough to include those packings without also including other packings
known to be suboptimal.

In conclusion of this section, if our new Conjecture 1 is true,
the infinite class of optimal packings conjectured by Nurmela et al.
can be significantly broadened, including many more packings from the
compression family.

--------------------------------------------------------------

The Shift Family and an Infinite Conjecturally Optimal Subfamily

The family of packings obtained by shifting rows in a hexagonal
lattice packing, as discussed here previously, includes the four presumably
optimal packings in the PAT_2(k(k + 1)) pattern class discussed in section
10.1 of NACPS. But the shift family and that pattern class are different;
most members of the shift family do not have N = k(k + 1), as required for
that pattern class.

As noted here previously, just as for the compression family, not all
members of the shift family are optimal packings. But we conjecture
that it has an infinite subfamily in which all members are optimal.

It will again be convenient to illustrate how members of such a
subfamily can be generated using a short Mathematica program. Please
recall that, for the shift family, we will always use fractions which
_over_estimate sqrt(3) and which have _odd_ numerators. To obtain such
fractions, we could simply use every fourth convergent from the continued
fraction; doing so would give us a fairly "safe" conjecture. But then our
procedure would fail to include many optimal or conjecturally optimal shift
packings. Therefore, we shall define the usefulness of a fractional
approximation just as we did when dealing with the compression family,
providing flexibility by allowing us to choose the power r.

If we choose r = 1, then the fractions used are just every fourth
convergent. Using denominators q through 100, for example, the procedure
generates just two packings:

r = 1; Print[{"N", {p, q}, delta, m, s}]; delta = 1;
Do[p = Ceiling[q Sqrt[3]]; d = q^r (p/q - Sqrt[3]);
If[OddQ[p] && d < delta, delta = d;
m = Simplify[(2(q(p - 1) - Sqrt[4(q^2 + 1)-(p - 1)^2]))/(q(p + 1)(p - 3))];
Print[{((p + 1)(q + 1))/2, {p, q}, N[delta], m, N[2(1 + 1/m)]}]],
{q, 1, 100}]

{N, {p, q}, delta, m, s }
{20, {7, 4}, 0.0717968, (6 - Sqrt[2])/16, 8.97808}
{2793, {97, 56}, 0.00515478, (384 - Sqrt[17])/18424, 98.9998}

Continuing to use just denominators q through 100 in all of our examples:
If we choose r = 0, the procedure generates five packings.
If we choose r = -4, it generates ten packings.

Conjecture 2:
Using some power r < 0, packings generated by the above procedure will
always be optimal.

Just as for the compression packings, I do not feel comfortable guessing
specifically the smallest possible power r which would generate only
optimal packings. But it would be particularly nice if we could use a power
at least as small as r = -5.966 approximately. This would give thirteen
shift packings, all at least conjecturally optimal:

r = -5.966; Print[{"N", {p, q}, delta, m, s}]; delta = 1;
Do[p = Ceiling[q Sqrt[3]]; d = q^r (p/q - Sqrt[3]);
If[OddQ[p] && d < delta, delta = d;
m = Simplify[(2(q(p - 1) - Sqrt[4(q^2 + 1)-(p - 1)^2]))/(q(p + 1)(p - 3))];
Print[{((p + 1)(q + 1))/2, {p, q}, N[delta], m, N[2(1 + 1/m)]}]],
{q, 1, 100}]

{N, {p, q}, delta, m, s }
{20, {7, 4}, 4.594*10^-6, (6 - Sqrt[2])/16, 8.97808}
{30, {9, 5}, 4.593*10^-6, (20 - Sqrt[10])/75, 10.9086}
{42, {11, 6}, 2.307*10^-6, (15 - Sqrt[3])/72, 12.8532}
{56, {13, 7}, 1.136*10^-6, (42 - Sqrt[14])/245, 14.8077}
{143, {21, 12}, 6.541*10^-9, (40 - Sqrt[5])/396, 22.9724}
{340, {33, 19}, 1.126*10^-10, (304 - Sqrt[106])/4845, 34.99236}
{672, {47, 27}, 2.509*10^-11, (621 - Sqrt[201])/14256, 48.9857}
{1050, {59, 34}, 2.367*10^-12, (493 - Sqrt[79])/14280, 60.9946}
{1591, {73, 42}, 1.25*10^-12, (1512 - Sqrt[469])/54390, 74.98988}
{2150, {85, 49}, 2.18*10^-13, (2058 - Sqrt[638])/86387, 86.9956}
{2793, {97, 56}, 3.422*10^-15, (384 - Sqrt[17])/18424, 98.9998}
{4464, {123, 71}, 3.100*10^-15, (4331 - Sqrt[1321])/264120, 124.9994}
{6525, {149, 86}, 1.459*10^-15, (6364 - Sqrt[1921])/470850, 150.9991}

Remarkably, using r = -5.966 generates _all_ shift packings which are
optimal or currently thought to be so.

But of course r can not be decreased with impunity. If we tried to use,
say, r = -7.2, the procedure would generate its first packing known to be
suboptimal, the shift packing for N = 195.

--------------------------------------------------

In a day or two, I expect to post a comparison between my previously
conjectured bounds and the proven bounds given in NACPS.

David W. Cantrell


///////////////////////////////////////////////////////////////////

My previous comments about the compression and shift families of packings:

--------------------------------------------------

> Several of the density records are given by packings which, in a sense,
> are "regular". And in these cases, we can give precise expressions for
> the side length s of the square. In "The packing of equal circles in a
> square", Math. Mag. 43:1 (1970) pp. 24-30, Michael Goldberg mentions the
> two most prominent families of regular packings.

> One family is obtained from a hexagonal lattice by the "shift method",
> exemplified by packings for N = 30 and 340. A glance at
> <http://hydra.nat.uni-magdeburg.de/packing/csq/csq340.html> will make the
> structure evident. There are also best known, but not density record,
> packings in this family for N = 20, 42 and 143.

And also N = 56.

> Members of this family
> are engendered by integer ratios which slightly overestimate sqrt(3) and
> have odd numerators. Suppose that p/q is such an approximation. Then the
> side length s of the square in which N = (p + 1)(q + 1)/2 unit circles
> may be packed by the "shift method" is

> s = (2 + q (q + p q + sqrt(4 q^2 + (3 - p)(1 + p))))/(1 + q^2)

> Example: Since 9/5 is a bit larger than sqrt(3) and has an odd
> numerator, by the "shift method", we can get a packing of
> N = (9 + 1)(5 + 1)/2 = 30 unit circles in a square of side length
> s = (126 + 5 sqrt(10))/13.

> The other members of this family, N = 20, 42, 143 and 340, have the
> associated fractions 7/4, 11/6, 21/12 and 33/19, resp. Note that the
> fractions are not necessarily convergents of the continued fraction for
> sqrt(3) and are not necessarily in lowest terms.

> Another family is obtained from a hexagonal lattice by "compression",
> exemplified by packings for N = 39, 52, 99, 120, 188 and 304. A glance at
> <http://hydra.nat.uni-magdeburg.de/packing/csq/csq188.html> will make the
> structure evident. Members of this family are engendered by integer
> ratios which slightly underestimate sqrt(3). Suppose that p/q is such an
> approximation. Then the side length s of the square in which N unit
> circles may be packed by "compression" is

> s = 2 ( 1 + p / sqrt(1 + (p/q)^2) )

> where,

> if p or q is odd, N = (p + 1)(q + 1)/2
> if p and q are both even, N = ((p + 1)(q + 1) + 1)/2.

> Example: Since 24/14 is a bit smaller than sqrt(3), by "compression", we
> can get a packing of N = ((24 + 1)(14 + 1) + 1)/2 = 188 unit circles in
> a square of side length s = 2 + 336/sqrt(193).

> The other members of this family, N = 39, 52, 99, 120 and 304, have the
> associated fractions 10/6, 12/7, 17/10, 19/11 and 31/18, resp.

And there are other members for smaller N; see program output below.

> [I do not know if the general formulae above have appeared in the
> literature, but they are not given by Goldberg.]

Each line of output has the form {N, s}, where N is the number of unit
circles packed in a square of side length s. If a packing for N is known
which is better than the packing obtained by the shift or compression
method, I have added # at the beginning of the appropriate line.
(For N > 420, I have no information about better packings.)

--------------------------------------

Shift method:

Do[p = Ceiling[q*Sqrt[3]]; If[OddQ[p], Print[{((p + 1)*(q + 1))/2,
(2 + q*(q + p*q + Sqrt[4*q^2 + (3 - p)*(1 + p)]))/(1 + q^2)}]], {q, 1, 33}]

{20, (1/17)*(2 + 4*(32 + 4*Sqrt[2]))}
{30, (1/26)*(2 + 5*(50 + 2*Sqrt[10]))}
{42, (1/37)*(2 + 6*(72 + 4*Sqrt[3]))}
{56, (1/50)*(2 + 7*(98 + 2*Sqrt[14]))}
{143, (1/145)*(2 + 12*(264 + 6*Sqrt[5]))}
# {168, 424/17}
# {195, (1/197)*(2 + 14*(364 + 2*Sqrt[53]))}
{340, (1/362)*(2 + 19*(646 + 2*Sqrt[106]))}
# {378, (1/401)*(2 + 20*(720 + 8*Sqrt[7]))}
# {418, (1/442)*(2 + 21*(798 + 2*Sqrt[118]))}
{460, (1/485)*(2 + 22*(880 + 4*Sqrt[31]))}
{672, (1/730)*(2 + 27*(1296 + 2*Sqrt[201]))}
{725, (1/785)*(2 + 28*(1400 + 2*Sqrt[209]))}
{780, (1/842)*(2 + 29*(1508 + 2*Sqrt[217]))}

--------------------------------------

Compression method:

Do[p = Floor[q*Sqrt[3]]; Print[{Ceiling[((p + 1)*(q + 1))/2],
2 + (2*p*q)/Sqrt[p^2 + q^2]}], {q, 1, 33}]

{2, 2 + Sqrt[2]}
{6, 2 + 12/Sqrt[13]}
{12, 2 + 15*Sqrt[2/17]}
{18, 2 + 24/Sqrt[13]}
{27, 2 + 80/Sqrt[89]}
{39, 2 + 30*Sqrt[2/17]}
{52, 2 + 168/Sqrt[193]}
# {63, 2 + 208/Sqrt[233]}
# {80, 2 + 45*Sqrt[2/17]}
{99, 2 + 340/Sqrt[389]}
{120, 2 + 209*Sqrt[2/241]}
# {137, 2 + 60*Sqrt[2/17]}
{161, 2 + 572/Sqrt[653]}
{188, 2 + 336/Sqrt[193]}
# {208, 2 + 75*Sqrt[2/17]}
# {238, 2 + 864/Sqrt[985]}
# {270, 2 + 493*Sqrt[2/565]}
{304, 2 + 1116/Sqrt[1285]}
# {330, 2 + 1216/Sqrt[1385]}
# {368, 2 + 680/Sqrt[389]}
# {407, 2 + 504/Sqrt[193]}
{449, 2 + 418*Sqrt[2/241]}
{480, 2 + (897*Sqrt[2/41])/5}
{525, 2 + 1968/Sqrt[2257]}
{572, 2 + 1075*Sqrt[2/1237]}
{621, 2 + 2340/Sqrt[2701]}
{658, 2 + 2484/Sqrt[2845]}
{711, 2 + 672/Sqrt[193]}
{765, 2 + 2900/Sqrt[3341]}
{806, 2 + 1020/Sqrt[389]}
{864, 2 + 1643*Sqrt[2/1885]}
{924, 2 + 3520/Sqrt[4049]}
{986, 2 + 627*Sqrt[2/241]}

--------------------------------------