In algebraic topology, one of the most basic ideas is *the fundamental group* of a point in the space. The fundamental group tells you a lot about the basic structure or shape of the group in a reasonably simple way. The easiest way to understand the fundamental group is to think of it as the answer to the question: "What kinds of different ways can I circle around part of the space?"
To really understand what the fundamental group is, we need to think back to what I said about group
theory. Group theory is most basically about defining *symmetry*; and symmetry in turn means a kind of *immunity to transformation.* So given a point in a topological space, what does that mean? What is a transformation, and what would immunity mean?
In topology, almost everything comes back to continuous functions. To transform a space we use homeomorphisms. To transform a *point* within the space, we still want to use a continuous
function, but we don't want one that maps to a different space. What kind of continuous function would make sense for a point?
The answer to that is to think about what a homeomorphism *means*, and informally try to
think of what the same kind of thing would mean for a point. Homeomorphism, informally, means that you can take a space, squish it, stretch it, pull it, twist it, and otherwise deform it *without* breaking it. The way that I've always thought of it, while not really entirely correct, gives a nice sense: you have a clay model of the space floating in a space with one more dimension. You can do anything you want with that ball of clay - as long as you don't ever break any of its edges. As long as you do that, when you're done, topologically speaking, you've got the same thing you started out with.
So think about that idea - of being able to squish and push things about within an embedding space, as long as we don't break anything, and ending up with what we started. What would that mean in terms of a *point*? Starting from a point, I can *walk around* the space it's part of in any way I want - so long as I don't *jump* in any way that breaks my path - and if I wind up back where I started, then I haven't really changed anything. That's basically what the objects in the fundamental group of a point are: the *continuous loops* that follow some path through the space, both starting and ending at the point. Of course, in typical topological fashion, we don't *care* if there are two paths that are basically the same, except that one is sort of an irregular oval, and the other is a circle. So the fundamental group isn't really *all* of the loops; it's a set of continuous loops such that *every continuous loop is a continuous deformation* of some object in the group. Groups also need some operation; the operation for loops in a topological space is basically concatenation: connect the end point of each loop to the start point of the other - which is itself another loop.
So that's a pretty good *informal* version. Now let's try to get down to the actual formal topological definition. We're going to use a pretty standard topological trick: if we want to show that there's a smooth path or a smooth transformation, we do it using a continuous function from the interval [0,1] to the path. So for a loop for point *p* (also called a loop *with base point p*), what we'll do is create a continuous function *f* from [0,1] to the path of the loop. We can make it be a loop by saying that *f*(0)=*f*(1)=p. Putting that together: Given a topological space **T**, and a point *p* ∈ **T**, a *loop* is given by a continuous function *f : [0,1] → **T***, where *f(0)=p* and *f(1)=p*.
So now we have a loop. But up above we said that if you had two loops both with the same base point *p*, and you could transform one into the other *without* breaking, then you treated them as the same. How do we say that? Easy - we pull out exactly the same trick of using the interval. So the loops *f* : [0,1] → **T** and *g* : [0,1] → **T** with base point *p* are *equivalent* loops if and only if there's a third continuous function *h* : [0,1] × [0,1] → **T**, such that:
1. ∀ x ∈ [0,1] : h(x,0) = f(x)
2. ∀ x ∈ [0,1] : h(x,1) = g(x)
3. ∀ x ∈ [0,1] : h(0,x)=h(1,x)=p
That's all a rather fancy way of saying that that *f* and *g* can be continuously transformed
into each other: that there's an infinite series of loops between *f* and *g*, each of which is minutely, infinitessimally different from the one before it, which show the smooth, continuous deformation from *f* to *g*. An easy way to think of it is that that series of loops is an *animation* of the deformation; each loop in the series is one frame; put them all together, and you'll have a perfectly smooth animation of the deformation of *f* into *g*; run it backwards and you've got the deformation of *g* to *f*.
The function *h* that describes the mutual-transformability property of *f* and *g* is called a *homotopy* from *f* to *g*. Homotopies define a set of equivalence classes over loops with a common base point called *homotopy classes*.
Here's where we come across a really neat trick. Suppose we've got a really pretty topological space. It's connected - and in fact, not just connected, but [*path-connected*.][path-connect]. Then using the same kind of trick for defining equivalences, we can show that in fact, *all* points in the space have *the same* fundamental group. In that case, we call it the fundamental group not just of the point, but of the entire topological space.
To give you one neat example of a fundamental group. Suppose you're looking at the topological space consisting of a circle. The loops inside of a circle are circles - one full pass around the circle, two passes, three passes, etc. If you think about that, and the idea of the group operation being concatenation of loops, you can hopefully see that the the fundamental group of the circle is equivalent to the group consisting of *(**Z**,+)*, that is, the group of integers with the addition operation. Each *clockwise* loop around the circle is (+1); each *counter-clockwise* loop is (-1). Concatenating the loops ends up accomplishing the same thing as adding the corresponding integers.