📜  函授问题

📅  最后修改于: 2021-08-25 18:27:45             🧑  作者: Mango

邮政对应问题是由Emil Leon Post在1946年引入的一个流行的不确定性问题。它比停止问题更简单。

在此问题中,我们有N个多米诺骨牌(平铺)。其目的是在这样的以便安排瓦片由Numerators制成字符串是与由分母制成字符串。
简而言之,假设我们有两个都包含N个单词的列表,目的是找出这些单词按某种顺序的串联,以使两个列表产生相同的结果。

让我们尝试通过列出两个列表AB来理解这一点

A=[aa, bb, abb] and B=[aab, ba, b] 

现在对于序列1、2、1、3,第一个列表将产生aabbaaabb,第二个列表将产生相同的字符串aabbaaabb。
因此,此PCP的解决方案变为1、2、1、3。

函授后问题可以用两种方式表示:

1. Domino的形式:

2.表格:

让我们考虑以下示例。

示例1:

解释 –

  • 步骤1:
    我们将从分子和分母以相同数字开头的图块开始,因此我们可以以1或2开头。
    让我们从第二瓷砖,通过numerator- 10111取得字符串,字符串由分母做走的是10。
  • 第2步:
    我们需要分母为1才能匹配分子为1,因此我们将使用第一个图块,分子生成的字符串为10111 1,分母生成的字符串为10 111。
  • 步骤3:
    分子中有额外的1来匹配该1,我们将按顺序添加第一个图块,分子生成的字符串现在为10111 1 1,分母生成的字符串为10 111 111。
  • 第四步:
    现在分母中有额外的1匹配它,我们将添加第三个图块,分子生成的字符串为10111 1 1 10,分母生成的字符串为10 111 111 0。
    Final Solution - 2 1 1 3
    String made by numerators: 101111110
    String made by denominators: 101111110 

    如您所见,字符串是相同的。

示例2:

解释 –

  • 步骤1:
    我们会从瓦1日开始,因为它是我们唯一的选择,通过分子制成的字符串是100,由分母做字符串1。
  • 第2步:
    分子中有额外的00,要平衡,唯一的方法是在序列中添加图块3 ,分子生成的字符串为100 1,分母生成的字符串为1 00。
  • 步骤3:
    分子中有额外的1来平衡,我们可以添加图块1或图块2 。让我们先尝试添加图块1,分子生成的字符串为100 1 100,分母生成的字符串为1 00 1。
  • 第四步:
    分子中有额外的100,为达到平衡,我们可以再次添加第1个图块,分子生成的字符串为100 1 100 100,分母生成的字符串为1 00 1 11。分子字符串的第6位数字为0,这与分母组成的字符串的第6位数字为1。

我们可以尝试无限的组合,例如上面的一种,但是没有一种组合会导致我们找到解决方案,因此此问题没有解决方案。

邮政函授问题的不确定性:
如定理所述,PCP是不确定的。即,没有确定任何邮政函授系统是否具有解决方案的特定算法。

证明 –
我们已经知道图灵机的不确定性。如果我们能够将Turing Machine简化为PCP,那么我们将证明PCP也是不确定的。

考虑图灵机M模拟PCP的输入字符串w可以表示为。

如果输入字符串w中存在匹配项,则图灵机M暂停接受状态。图灵机的停止状态是验收问题A TM
我们知道验收问题A TM是不确定的。因此,PCP问题也是无法确定的。

为了强制模拟M,我们对Turing Machine M进行了2处修改,并对PCP问题进行了1次更改。

  1. 输入w上的M绝对不能尝试将磁头移到输入磁带的左端之外。
  2. 如果输入为空字符串€,则使用_。
  3. PCP问题开始与第一个多米诺骨牌[u1 / v1]匹配。这称为“修改的PCP问题”。
    MPCP = {[D] | D is instance of PCP starts with first domino} 

施工步骤–

  1. 将[#/(#q0w1w2..wn#)]放入D作为第一个多米诺骨牌,其中D的实例是MPCP。在第一个多米诺骨牌中获得部分匹配是在一个面孔上的#在另一面孔上是相同的#符号。
  2. 图灵机M的转换函数可以向左L,向右R移动。对于带字母中的每个x,yz和对于Q中的q,r,其中q不等于q拒绝。如果transition(q,x)=(r,y,R)将多米诺[qx / by]放入D中,而transition(q,x)=(r,y,L)将多米诺[zqx / rzy]放入D中。
  3. 对于每个磁带字母x,将[x / x]放入D。要标记每种配置的分离,请将[#/#]和[#/ _#]放入D。
  4. 为了即使在Turing Machine处于接受状态之后也要读取输入的字母x,将[xqa / qa]和[qax / qa]和[qa#/#]放入D。这些步骤结束了D的构造。

由于此MPCP实例,我们需要将其转换为PCP。因此,要转换为D,我们在下面考虑多米诺骨牌和字符串匹配。

将MPCP转换为PCP:
令u = u1,u2,…,un为输入长度为n的任何字符串,并将这些字符串修改为

$u = *u1*u2*u3* …*un
u$ = u1* u2* u3* … un*
$u$ = * u1* u2* u3* ... un* 

设D为两个面对面的多米诺骨牌,

D = {[u1 / v1], [u2 / v2], [u3 / v3], ..., [un / vn]} and {[$u1 / $v1$], [$u2 / v2$], ..., [*_ / _]} 

从上面的多米诺骨牌集合中,我们可以看到只有多米诺骨牌的部分匹配以[$ u1 / $ v1 $]开头,并放置输入标记的末尾[* _ / _]。
到此,我们可以避免说明对多米诺骨牌的明确要求应从第一个多米诺骨牌开始。
如果图灵机的配置数量不在qng n的值之内,则图灵机处于循环状态。它不会停止。