我有一个标记过渡系统(下图中左边的那个)
从图中可以看出,这两个过渡系统是等同的。#/ p>
所以我想把左边的那个变成右边的那个。我知道这被称为互模拟收缩(分区细化),我发现一些lecture slides解释算法是什么样的(其中还包括一些Haskell代码),但我真的不明白怎么做
我正在尝试在JavaScript中使用该算法。
我有一个节点数组S和一个边数R
N = [
{ id: 'n1', propositions: 'p' },
{ id: 'n2', propositions: 'p' },
{ id: 'n3', propositions: 'q' },
{ id: 'n4', propositions: 'q' },
]
R = [
{ source: 'n1', target: 'n2', label: 'pi_1' },
{ source: 'n2', target: 'n3', label: 'pi_2' },
{ source: 'n1', target: 'n4', label: 'pi_2' },
}
在算法中,它说我最初应该创建一个具有相同估值的分区,因此初始分区有两个子块:
initial_partition = {
'p': ['n1', 'n2'],
'q': ['n3', 'n4']
}
现在我需要根据它们的关系将每个块分成子块。
但是我该如何做到这一点以及如何最终得到左边的那个(即什么时候删除一些节点)?
我找到了这个StackExchange question和Wikipedia page,但它并没有帮助我完全理解它。