试探性方式

    试探性方式的策略是:选择一条当前可应用的操作,作用于当前状态,如果结果不佳,则回到应用该操作之前的状态,再换用另一个操作。

    试探性方式可分为两种:一种是回溯方式(Backtracking),一种是图搜索方式(Graph searching)。

    回溯方式的策略是:在选择一个操作是要建立一个回溯点。在搜索过程中,如果遇到了困难,则要返回到最近的一个回溯点,换一个操作继续进行搜索。

    图搜索方式将所有应用过的操作和他们产生的状态描述都以图的形式记录下来。由于当前可继续往下搜索的状态不止一个,因此可以从其中任一个状态往下搜索。

    图搜索方式与回溯方式的不同之处在于:回溯方式不记忆那些试探失败的操作和他们产生的状态描述,只记忆当前正在搜索的路径。 图搜索方式则保存所有试探过的路径,因而可以在任何一条路径上继续搜索。

    为了说明这两种搜索方式的工作,请看下面的例子。设立中每个状态都有两个可应用的操作,图2-3画出了所有可能生成的状态,每个状态用一个内有符号的圆圈表示。下面有×说明该状态不是目标状态且没有可应用的操作,状态G为目标状态。

     回溯方式的搜索过程为:

  (1)由状态A生成状态B,保存状态A、B。
  (2)由状态B生成状态D,保存状态A、B、D。
  (3)回溯到状态B。由状态B生成状态E,保存状态A、B、E。
  (4)由状态E生成状态H,保存状态A、B、E、H。
  (5)回溯到状态E,由状态E生成状态I,保存状态A、B、E、I。
  (6)。回溯到状态A,由状态A生成状态c,保存状态A、c。
  (7)由状态c生成状态F,保存状态A、c、F。
  (8)回溯到状态c,由状态c生成状态G,保存状态A、c、G。

     对于图搜索策略,假设当前状态进行操作时,总是同时把两个可能的操作后完成,并且总是尽量选择最左边的状态进行操作。这样,搜索过程为:

   (1)由状态A生成状态B、c,保存状态A、B、c。
   (2)由状态B生成状态D、E,保存状态A、B、c、D、E。
   (3)由状态E生成状态H、I,保存状态A、B、c、D、E、H、I。
   (4)由状态c生成状态F、G,保存状态A、B、c、D、E、H、I、F、G。

返回