Operational Transformation算法图解

本文详细介绍了Operational Transformation(OT)算法,用于解决协同编辑中的操作合并问题。通过图解和递归算法阐述了如何处理不同数量的操作序列合并,并探讨了在存在互斥操作时如何利用Reverse()操作保证一致性。最后讨论了OT算法在性能优化、面向OT设计操作以及在移动设备上的挑战。
摘要由CSDN通过智能技术生成

Operational Transformation算法解决的问题是如何merge基于相同的状态产生的不同的操作序列。如下图所示,从上往下看,基于相同的起点,左右有两个操作OP1和OP2.为了merge两个操作为一体,我们可以从两个方向入手,一个方向是从OP1入手,在执行完OP1后,执行OP2;另一个方向是从OP2入手,在执行完OP2后,执行OP1.但是,简单的将操作执行,并不正确,以OP1为例,在执行完OP1后,数据的状态发生了变化,而OP2是基于初始的状态,所以不能直接执行OP2,而需要将操作做一个变换,以OT(OPA,OPB)作为记号。使用OT算法后,必须保证,左边的执行序列OP1,OT(OP2,OP1)执行后的结果,与右边的执行序列OP2,OT(OP1,OP2)执行后的结果相同。

上图是对一个【元操作】的定义。真是的场景中,左边和右边不可能仅仅有一个操作,而是有多个操作。我们先考虑左边有两个操作,右边只有一个操作。如下图所示。


OP1和OP3最先merge。图中到达中轴线的节点。之后,需要将OP2merge进去,必须执行OT(OP2,OP3‘)== OT(OP2, OT(OP3, OP1))

再考虑左边有三个操作,右边只有一个操作。如下图所示。


按照左上-右下的辅助线,把merge过程切割成若干步骤。第一步是在右操作为OP4时mergeOP1,第二步是在

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值