状态转换系统中的模拟仿真

时间:2016-12-19 07:43:36

标签: algorithm graph partitioning state-machine automata

我有一个标记过渡系统(下图中左边的那个)

enter image description here

从图中可以看出,这两个过渡系统是等同的。#/ 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 questionWikipedia page,但它并没有帮助我完全理解它。

0 个答案:

没有答案