操作変換
操作変換の基本的なアイデアを、単純なテキスト編集のシナリオを用いて以下で説明する。
"abc"という文字列を含む文書があり、これは二つのコラボレーティング・サイト上に複製されている。ここで、二つの並列操作
O1 = Insert[0, "x"](0の位置に文字"x"を挿入する)
O2 = Delete[2, "c"](2の位置にある文字"c"を削除する)
が、コラボレーティング・サイト1および2の二人のユーザによって、それぞれ生成される。ここで、サイト1において、二つの操作がO1, O2の順番で実行されると仮定する。
操作O1を実行すると、文書は"xabc"となる。次に、操作O2を操作O1の後で実行するには、操作O2を O2' = Delete[3, "c"] と変換しなければならない。すなわち、操作O1によって文字"x"が挿入されたことにより、操作O2の位置パラメータを1文字分インクリメントする必要がある。"xabc"に対して操作O2'を実行すると、正しい文字"c"が削除され、文書は"xab"となるだろう。しかし、もし操作O2を変換せずに実行すると、誤って文字"c"ではなく"b"を削除してしまう。
操作変換の基本的なアイデアは、ある編集操作のパラメータを、過去に実行された並列操作の結果に従って変換(あるいは調整)することにある。これにより、変換された操作は正しい結果を実現し、文書の整合性を維持できる。