突然思い立って、色々調べて見たけど日本語の文献がない。仕方なく英語で調べてみるとstack overflowにいい記事があった。
本当はちゃんと教科書的なので調べた方がいいが、情報を見つけるのが大変なので、簡単にまとめた。
この記事のほとんどが元記事に乗っているので、そちらも参考にしてください。