Khovanov Homology: Difference between revisions

From Knot Atlas
Jump to navigationJump to search
No edit summary
 
No edit summary
Line 1: Line 1:
{{Manual TOC Sidebar}}
{{Manual TOC Sidebar}}


The Khovanov Homology <math>\operatorname{\it KH}(L)</math> of a knot or a link <math>L</math>, also known as Khovanov's categorification of the Jones polynomial of <math>L</math>, was defined by Khovanov in~\cite{Khovanov:Categorification} (also check my
The Khovanov Homology <math>\operatorname{\it KH}(L)</math> of a knot or a link <math>L</math>, also known as Khovanov's categorification of the Jones polynomial of <math>L</math>, was defined by Khovanov in {{ref|Khovanov1}} (also check {{ref|Bar-Natan1}}), where the notation is closer to the notation used here). It is a graded homology theory; each homology group <math>\operatorname{\it KH}^r(L)</math> is in itself a direct sum <math>\bigoplus_j\operatorname{\it KH}^r_j(L)</math> of homogeneous components. Over a field on can form the two-variable "Poincar\'e polynomial" <math>\operatorname{\it Kh}(L)</math> (which deserves the name "the Khovanov polynomial of $L$"),
paper~\cite{Bar-Natan:Categorification}, where the notation is much
closer to the notation used here). It is a graded homology theory; each
homology group $\KH^r(L)$ is in itself a direct sum $\bigoplus_j\KH^r_j(L)$
of homogeneous components. Over a field on can form the two-variable
``Poincar\'e polynomial'' $\Kh(L)$ (which deserves the name ``the Khovanov
polynomial of $L$''),
\[ \Kh(L)(q,t) := \sum_{r,j}t^rq^j\dim\KH^r_j(L). \]


<center><math>\operatorname{\it Kh}(L)(q,t) := \sum_{r,j}t^rq^j\dim\operatorname{\it KH}^r_j(L)</math>.</center>
\latexhtml{\small (for {\tt In[1]} see
Section~\ref{sec:Setup}.)}{\htmlref{{\tt In[1]}}{sec:Setup}}
%<* InOut[1] *>


{{Statup Note}}
<* HelpBox[Kh] *>


<!--$$?HelpBox[Kh]$$-->
Thus for example, here's the Khovanov polynomial of the knot
<!--END-->
\hlink{../Knots/5.1.html}{$5_1$}:


Thus for example, here's the Khovanov polynomial of the knot [[5_1]]:
<*InOut@"kh = Kh[Knot[5, 1]][q, t]"*>
\vskip 6pt


<!--$$kh = Kh[Knot[5, 1]][q, t]$$-->
\index{Euler characteristic}
<!--END-->
The Euler characteristic of the Khovanov Homology $\KH(L)$
is (up to normalization) the Jones polynomial $J(L)$ of $L$. Precisely,
\[ \Kh(L)(q, -1) = \hatJ(L)(q) := (q+q^{-1})J(L)(q^2). \]
Let us verify this in the case of \hlink{../Knots/5.1.html}{$5_1$}:
<*InOut@"{kh /. t -> -1, Expand[(q+1/q)Jones[Knot[5, 1]][q^2]]}"*>
\vskip 6pt


The Euler characteristic of the Khovanov Homology <math>\operatorname{\it KH}(L)</math> is (up to normalization) the Jones polynomial <math>J(L)</math> of <math>L</math>. Precisely,
Khovanov's homology is a strictly stronger invariant than the Jones
polynomial. Indeed, $J(5_1)=J(10_{132})$ though
$\Kh(5_1)\neq\Kh(10_{132})$:


<center><math>\operatorname{\it Kh}(L)(q, -1) = {\hat J}(L)(q) := (q+q^{-1})J(L)(q^2)</math>. \]
<*InOut@"{\n

Jones[Knot[5, 1]] === Jones[Knot[10, 132]],\n
Let us verify this in the case of [[5_1]]:
Kh[Knot[5, 1]] === Kh[Knot[10, 132]]\n

}"*>
<!--$${kh /. t -> -1, Expand[(q+1/q)Jones[Knot[5, 1]][q^2]]}$$-->
\vskip 6pt
<!--END-->

Khovanov's homology is a strictly stronger invariant than the Jones polynomial. Indeed, <math>J(5_1)=J(10_{132})</math> though <math>\operatorname{\it Kh}(5_1)\neq\operatorname{\it Kh}(10_{132})</math>:


<!--$${
The algorithm presently used by {\tt KnotTheory`} is an efficient
Jones[Knot[5, 1]] === Jones[Knot[10, 132]],
algorithm modeled on the Kauffman bracket algorithm of
Kh[Knot[5, 1]] === Kh[Knot[10, 132]]
Section~\ref{subsubsec:HowJones}, as explained in~\cite{Bar-Natan:ImHappy}
}$$-->
(which follows~\cite{Bar-Natan:Cobordism}). Currently, two implementations
<!--END-->
of this algorithm are available:


The algorithm presently used by <code>KnotTheory`</code> is an efficient algorithm modeled on the Kauffman bracket algorithm of [[The_Jones_Polynomial#How_is_the_Jones_polynomial_computed.3F]], as explained in {{ref|Bar-Natan3}} (which follows {{ref|Bar-Natan2}}). Currently, two implementations of this algorithm are available:
\begin{itemize}


* <tt>FastKh</tt>: My original implementation, written in Mathematica in the winter of 2005. This implementation can be explicitly invoked using the syntax <code>Kh[L, Program -> "FastKh"][q, t]</code> or by changing the default behaviour of <code>Kh</code> by evaluating <code>SetOptions[Kh, Program -> "FastKh"]</code>.
\index{FastKh@{\tt FastKh}} \item {\tt FastKh}: My original
* <tt>JavaKh</tt>: In the summer of 2005 Jeremy Green re-implemented the algorithm in java '''(java 1.5 required!)''' with much further care to the details, leading to an improvemnet factor of several thousands for large knots/links. This implementation is the default. It can also be explicitly invoked from within Mathematica using the syntax <code>Kh[L, Program -> "JavaKh"][q, t]</code>.
implementation, written in Mathematica in the winter of 2005. This
implementation can be explicitly invoked using the syntax {\tt Kh[L,
Program -> "FastKh"][q, t]} or by changing the default behaviour of
{\tt Kh} by evaluating {\tt SetOptions[Kh, Program -> "FastKh"]}.


<!--$$Options[Kh]$$-->
\index{JavaKh@{\tt JavaKh}}
<!--END-->
\index{Green, Jeremy}
\item {\tt JavaKh}: In the summer of 2005 Jeremy Green re-implemented
the algorithm in java {\bf (java 1.5 required!)} with much further care
to the details, leading to an improvemnet factor of several thousands
for large knots/links. This implementation is the default. It can also
be explicitly invoked from within Mathematica using the syntax {\tt
Kh[L, Program -> "JavaKh"][q, t]}.


<tt>JavaKh</tt> takes an additional option, <code>Modulus</code>, which sets the characteristic of the ground field for the homology computations to <math>0</math> or to a prime <math>p</math>. Thus for example, the following four <tt>In</tt> lines imply that the Khovanov homology of the torus knot [[T(6,5)]] has both 3 torsion and 5 torsion, but no 7 torsion:
{\tt JavaKh} takes an additional option, {\tt Modulus}, which sets the
characteristic of the ground field for the homology computations to $0$
or to a prime $p$. Thus for example, the following four {\tt In} lines
imply that the Khovanov homology of the torus knot
\hlink{../TorusKnots/6.5.html}{T(6,5)} has both 3 torsion and 5
torsion, but no 7 torsion:


<*InOut@"T65 = TorusKnot[6, 5]; kh = Kh[T65][q, t];" *>
<*InOut@"T65 = TorusKnot[6, 5]; kh = Kh[T65][q, t];" *>
Line 176: Line 148:
} \label{fig:MikhailKhovanov}
} \label{fig:MikhailKhovanov}
\end{figure}
\end{figure}

{{note|Bar-Natan1}} D. Bar-Natan, [http://www.math.toronto.edu/~drorbn/papers/Categorification/ ''On Khovanov's categorification of the Jones polynomial''], Algebraic and Geometric Topology '''2-16''' (2002) 337-370, {{arXiv|math.GT/0201043}}.

{{note|Bar-Natan2}} D. Bar-Natan, [http://www.math.toronto.edu/~drorbn/papers/Cobordism/ ''Khovanov's Homology for Tangles and Cobordisms''], Geometry and Topology '''9-33''' (2005) 1443-1499, {{arXiv|math.GT/0410495}}.

{{note|Bar-Natan3}} D. Bar-Natan, [http://www.math.toronto.edu/~drorbn/Talks/GWU-050213/index.html ''I've Computed Kh(T(9,5)) and I'm Happy''], talk given at Knots in Washington XX, George Washington University, February 2005.

{{note|Khovanov1}} M. Khovanov, ''A categorification of the Jones polynomial'', {{arXiv|math.QA/9908171}}.

Revision as of 20:18, 29 August 2005


The Khovanov Homology of a knot or a link , also known as Khovanov's categorification of the Jones polynomial of , was defined by Khovanov in [Khovanov1] (also check [Bar-Natan1]), where the notation is closer to the notation used here). It is a graded homology theory; each homology group is in itself a direct sum of homogeneous components. Over a field on can form the two-variable "Poincar\'e polynomial" (which deserves the name "the Khovanov polynomial of $L$"),

.

Template:Statup Note


Thus for example, here's the Khovanov polynomial of the knot 5_1:


The Euler characteristic of the Khovanov Homology is (up to normalization) the Jones polynomial of . Precisely,

. \]

Let us verify this in the case of 5_1:


Khovanov's homology is a strictly stronger invariant than the Jones polynomial. Indeed, though :


The algorithm presently used by KnotTheory` is an efficient algorithm modeled on the Kauffman bracket algorithm of The_Jones_Polynomial#How_is_the_Jones_polynomial_computed.3F, as explained in [Bar-Natan3] (which follows [Bar-Natan2]). Currently, two implementations of this algorithm are available:

  • FastKh: My original implementation, written in Mathematica in the winter of 2005. This implementation can be explicitly invoked using the syntax Kh[L, Program -> "FastKh"][q, t] or by changing the default behaviour of Kh by evaluating SetOptions[Kh, Program -> "FastKh"].
  • JavaKh: In the summer of 2005 Jeremy Green re-implemented the algorithm in java (java 1.5 required!) with much further care to the details, leading to an improvemnet factor of several thousands for large knots/links. This implementation is the default. It can also be explicitly invoked from within Mathematica using the syntax Kh[L, Program -> "JavaKh"][q, t].


JavaKh takes an additional option, Modulus, which sets the characteristic of the ground field for the homology computations to or to a prime . Thus for example, the following four In lines imply that the Khovanov homology of the torus knot T(6,5) has both 3 torsion and 5 torsion, but no 7 torsion:

<*InOut@"T65 = TorusKnot[6, 5]; kh = Kh[T65][q, t];" *> % <* (* Cheat: *)

 Kh[TorusKnot[6, 5], Modulus->3] = Function @@ {
   kh + q^43*t^13 + q^43*t^14 /. {q->#1, t->#2}
 };
 Kh[TorusKnot[6, 5], Modulus->5] = Function @@ {
   kh + q^35*t^10 + q^35*t^11 + q^39*t^11 + q^39*t^12 /. {q->#1, t->#2}
 };
 Kh[TorusKnot[6, 5], Modulus->7] = Function @@ {kh /. {q->#1, t->#2}};
  • >

<*InOut@"Kh[T65, Modulus -> 3][q, t] - kh"*> <*InOut@"Kh[T65, Modulus -> 5][q, t] - kh"*> <*InOut@"Kh[T65, Modulus -> 7][q, t] - kh"*> \vskip 6pt

The following further example is a bit tougher. It takes my computer nearly an hour and some 256Mb of memory to find that the Khovanov homology of the 48-crossing torus knot T(8,7) has 3, 5 and 7 torsion but no 11 torsion:

<* HelpBox[JavaOptions] *>

<*InOut@"SetOptions[Kh, JavaOptions -> \"-Xmx256m\"];" *> % <* (* Cheat: *)

 Kh[TorusKnot[8, 7]] = Function @@ {
   (
     q^41 + q^43 + q^45*t^2 + q^49*t^3 + q^47*t^4 + q^49*t^4 + q^51*t^5 +
     q^53*t^5 + q^49*t^6 + q^51*t^6 + q^53*t^7 + q^55*t^7 + q^51*t^8 +
     2*q^53*t^8 + q^55*t^9 + 2*q^57*t^9 + q^53*t^10 + 2*q^55*t^10 +
     q^57*t^11 + 3*q^59*t^11 + q^55*t^12 + 3*q^57*t^12 + q^59*t^12 +
     q^63*t^12 + q^59*t^13 + 4*q^61*t^13 + q^63*t^13 + 2*q^59*t^14 +
     q^61*t^14 + q^65*t^14 + 4*q^63*t^15 + 2*q^65*t^15 + 2*q^61*t^16 +
     2*q^63*t^16 + 2*q^67*t^16 + q^69*t^16 + 3*q^65*t^17 + 3*q^67*t^17 +
     q^63*t^18 + 2*q^65*t^18 + q^69*t^18 + q^71*t^18 + 2*q^67*t^19 +
     3*q^69*t^19 + q^65*t^20 + 2*q^67*t^20 + q^71*t^20 + q^73*t^20 +
     q^69*t^21 + 3*q^71*t^21 + q^69*t^22 + q^75*t^22 + 2*q^73*t^23 +
     q^71*t^24 + q^73*t^24 + q^77*t^24 + q^75*t^25 + q^77*t^25
   ) /. {q->#1, t->#2}
 };
  • >

<*InOut@"T87 = TorusKnot[8, 7]; kh = Kh[T87][q, t];" *> % <* (* Cheat: *)

 Kh[TorusKnot[8, 7], Modulus->3] = Function @@ {
   kh + q^79*t^25 + q^79*t^26 /. {q->#1, t->#2}
 };
 Kh[TorusKnot[8, 7], Modulus->5] = Function @@ {
   kh + (
     q^61*t^11 + q^61*t^12 + q^73*t^21 + q^73*t^22 + q^75*t^23 +
     q^75*t^24 + q^79*t^24 + q^79*t^25
   ) /. {q->#1, t->#2}
 };
 Kh[TorusKnot[8, 7], Modulus->7] = Function @@ {
   kh + (
     q^61*t^14 + q^61*t^15 + q^69*t^20 + q^69*t^21 + q^73*t^21 +
     q^71*t^22 + q^73*t^22 + q^71*t^23 + q^75*t^23 + q^75*t^24
   ) /. {q->#1, t->#2}
 };
 Kh[TorusKnot[8, 7], Modulus->11] = Function @@ {kh /. {q->#1, t->#2}};
  • >

<*InOut@"Factor[Kh[T87, Modulus -> 3][q, t] - kh]"*> <*InOut@"Factor[Kh[T87, Modulus -> 5][q, t] - kh]"*> <*InOut@"Factor[Kh[T87, Modulus -> 7][q, t] - kh]"*> <*InOut@"Factor[Kh[T87, Modulus -> 11][q, t] - kh]"*>

{\tt JavaKh} also works over the integers:

<* HelpBox[ZMod] *>

For example, the 22nd homology group over $\bbZ$ of the torus knot T(8,7) at degree 73 is the 280 element torsion group $\bbZ_2\oplus\bbZ_4\oplus\bbZ_5\oplus\bbZ_7$: % <* (* Cheat: *)

 Kh[TorusKnot[8, 7], Modulus->Null] = Function @@ {
   q^73*t^22*ZMod[2, 4, 5, 7] /. {q->#1, t->#2}
 };
  • >

<*InOut@"Coefficient[Kh[T87, Modulus -> Null][q, t], t^22 * q^73]"*> \vskip 6pt

Finally, {\tt JavaKh} may also be run outside of Mathematica, as the following example demonstrates: \begin{verbatim} drorbn@coxeter:.../KnotTheory: cd JavaKh drorbn@coxeter:.../KnotTheory/JavaKh: java JavaKh PD[X[3, 1, 4, 6], X[1, 5, 2, 4], X[5, 3, 6, 2]] "+ q^1t^0 + q^3t^0 + q^5t^2 + q^9t^3 " \end{verbatim}

\noindent (Type {\tt java JavaKh -help} for some further help).

\end{itemize}

\begin{figure} \begin{center} \latex{

 \includegraphics[width=3in]{figs/MikhailKhovanov.ps}

} \begin{rawhtml}

 <img src=MikhailKhovanov.jpg alt="Mikhail Khovanov">

\end{rawhtml} \end{center} \caption{

 August 2002, Toronto: Mikhail Khovanov explaining his more recent
 paper~\cite{Khovanov:Cobordisms}.

} \label{fig:MikhailKhovanov} \end{figure}

[Bar-Natan1] ^  D. Bar-Natan, On Khovanov's categorification of the Jones polynomial, Algebraic and Geometric Topology 2-16 (2002) 337-370, arXiv:math.GT/0201043.

[Bar-Natan2] ^  D. Bar-Natan, Khovanov's Homology for Tangles and Cobordisms, Geometry and Topology 9-33 (2005) 1443-1499, arXiv:math.GT/0410495.

[Bar-Natan3] ^  D. Bar-Natan, I've Computed Kh(T(9,5)) and I'm Happy, talk given at Knots in Washington XX, George Washington University, February 2005.

[Khovanov1] ^  M. Khovanov, A categorification of the Jones polynomial, arXiv:math.QA/9908171.