似乎没有一本书能够回答这个问题。
假设我有两个事务:
T1:锁定A、锁定B、解锁A
T2:锁定B、解锁B、锁定A、解锁A
Q1。有多少种方法可以计划这些事务?(这只是一个简单的图形,结果是3!* 4!?)
Q2。这些方法中有多少是可序列化的?
我真的很想知道思考的过程是什么,你是如何得到答案的?
发布于 2015-01-23 14:52:20
Q1是7。证明:首先,我们必须将集合'Lock A','Lock B','Unlock A‘(我表示为A1,A2,A3)合并到集合'Lock B',..,'Unlock A’(我表示它们为B1..B4),也就是将3个项目放入允许重复的5个位置(B‘s之间),这就是二项式系数。从(5-1+3)中选择3。等于7!/(3!*4!) = 35。
接下来,我们必须删除“坏”的解决方案(通过锁定条件阻止的解决方案)。这就是A1位于B3和B4 (3个解决方案)和A2介于B1和B2 (2*4 = 8)之间的地方。此外,我们还必须排除在A1和A3之间使用B3的解决方案。在A1和A2之间有3*3=9和B3,在A2和A3之间有6*2=12和B3。因此,我们有35-3-8-9-12=3。但我们也应该满足包含-排除原则:同时添加违反两个规则的解。它们只能是这样的: B1 A2 B2 B3 B4,A1位于两个左侧位置中的任意一个,A3位于两个右侧位置中的任意一个。总共4个。因此,我们得到了最终答案35 -3-8-9- 12 +4= 7。
https://stackoverflow.com/questions/28102584
复制相似问题