Archive for the ‘math’ Category

Review: Symmetry: A Journey into the Patterns of Nature”

Wednesday, August 5th, 2009

Symmetry: A Journey into the Patterns of Nature Symmetry: A Journey into the Patterns of Nature by Marcus du Sautoy

This book is really awesome and goes into a mathemetician’s private obsession and delight in symmetry and the drama of the pursuit of a complete catalog of all symmetry types. The Moorish tiles in the Alhambra, the packing of spheres in the 24th dimension, error detection and correction codes, all are connected.

This has about the best explanation for the math loving quasi-layman of the Monster symmetry which emerges from the depths of the 196833rd dimension.

An object with rotations for this symmetry group needs 196833 dimensions to construct….

Yes, 196,833…. (The sphere packing solution, the so called Leech lattice, and the EDECs are all there for the taking in the 24th dimension, just to give you a sense of proportion.)

Um oddly if you add one to the dimensionality IT JUST SO HAPPENS to appear as a coefficient associated with the modular function, and the NEXT ONE is can be formed with this and other dimensionalities in which it occurs by a trivial bit of arithmetic and so on. Now this function connects to Wiles proof of Fermat’s last theorem, and this symmetry is starting to show up in string theory–and essentially IT IS IN THE MIDDLE OF EVERYTHING.

(The monster group is the highest order sporadic group . It has group order, well, too long to type out.)

Well, this book was so fascinating I couldn’t put it down (and I am rereading parts of it.) Of course your mileage my differ, but I enjoyed it a lot.

View all my reviews >>

More on Google Wave

Monday, July 20th, 2009

operational transform
Using that (un/semi)reliable source, Wikipedia,

Operational transformation (OT) is a technology for supporting a range of collaboration functionalities in advanced groupware systems.

Now if you were at Google I/O, or, you’ve seen the Google Wave video from Google I/O 2009 (and who hasn’t) you get a bit of an idea of what that can mean in practice.
Wave uses OT to replicate the shared document at all sites for all users.

OT was originally invented for consistency maintenance and concurrency control in collaborative editing of plain text documents. Two decades of research has extended its capabilities …to include group undo, locking, conflict resolution, operation notification and compression, group-awareness, HTML/XML…, collaborative office productivity tools, application-sharing, and collaborative computer-aided media design tools. Recently, OT has been adopted as a core technique behind its collaboration features in Google Wave, which took OT to a new range of web-based applications.

(The general approach of Wave in using OT was heavily influenced by the client server system as developed in Jupiter.)

All users can edit any part of the document at any time, lock free and optimistically.

When you have multiple clients connected to the server, every client and server pair have their own state space.

Now what Google did was add the following tweak–require the client to wait for acknowledgement from the server before sending more operations. When a server acknowledges a client’s operation, it means the server has transformed the client’s operation.

Another nice touch, creating compositions of transformations so that fewer transformations need to be applied. This has O(n log n + m log m) time complexity where n and m are the respective number of client and server operations in the composition of the required operations.

This keeps the implementation simple and scalable.

Here’s the Google OT whitepaper.
How Google is Using Operational Transform theory.

More on adjacency matrices

Tuesday, May 5th, 2009

oddball
So, one of the oddball things about this way of thinking is that essentially you are multiplying two graphs together!.

zero fill
If you have two graphs, one with N points and one with M points (N>M) you can express each graph as a matrix, but zero fill the MXM matrix with extra columns and rows of zeros. This also presupposes that you have chosen a particular one to one correspondence between M of your points.

trivial example
Let there be three points p0, p1, p2 as vertices where the graph looks like this:
p0—p1—p2

OK I said this was a pretty trivial graph. (you didn’t believe me?)

Now we can express this as:

| 0 1 0 |
| 1 0 1 |
| 0 1 0 |

Squaring this gives
| 1 0 1 |
| 0 2 0 |
| 1 0 1 |

mutant graph
Which would be interpreted as a new topology and weighting: putting a self-loop on each point, but with a weight of 2 on p1, and connecting p0 to p2 and bypassing p1!
(Sorry there is no way to draw this easily to with ASCII art, and I am too lazy to do more.)

Now this appears to be more complicated, so we would expect that if we obtained the cube of this simple matrix, it would get even weirder.

surprise
Instead, cubing the original matrix reverts to the original but with weights of 2 on the edges!
| 0 2 0 |
| 2 0 2 |
| 0 2 0 |

            2     2
         p0---p1---p2


And a little computation reveals that alternate odd and even powers alternate, but keep doubling their magnitude. Now this is pretty trivial as far as matrix math is concerned, but it is a really interesting way to interpret the results graphically.

exercise!
The lazy textbook writer commonly ends at this point by copping out with the rest is left as an exercise for the student.

Of course I am extremely lazy but I will note the interesting generalization that many graphs follow this pattern when raised to powers, alternately breaking edges between vertices
and attaching vertices that were not connected on one power, reverting to a multiple of the original matrix on the other, alternate, power.

So for example, a simple tree with root at p0,
p0
/ \
p1 p2

where p0 is connected to p1 and p2 will create the loops and detach p0 but attach p1 to p2.

And a four point generalization for like the above case
p0—p1—p2–p3
will attach the unattached pairs (p0,p2) and (p1,p3) put self-loops on each of then with different weights, and on alternate powers revert to the original matrix (except for scale)!

OK, confirmation is left as an exercise for the student. Heh.

Musings on Matrices and Graphs

Saturday, May 2nd, 2009

I have been playing around with the concept of an adjacency matrix and its corresponding graph.

For those who don’t know, a graph is a set of connected, points, sort of a diagram.

An adjacency matrix is a set of boolean (1 or 0) values where the ith column, jth row is the true value of “point i is connected to point j”. So, if you have two points, if the first point is connected to the second, and there is no loop from the first point to itself and no loop from the second point to itself the matrix will look like this:


| 0 1 |
| 1 0 |

Anyway, I started think about what graph you get when you multiply the adjacency matrix by itself. Turns out you can interpret it as a “weighted graph” (with any non-zero value interpreted as true, and the number assigned, the “weight” given the edge. Turns out I am seeing interesting cycles. More on this later.