#graph #process #tree-traversal #trace-logging #heuristics #traversal #tree

graph_process_manager_loggers

为 graph_process_manager_core 实现的通用记录器

16 个版本

0.1.15 2024年7月7日
0.1.14 2023年6月4日
0.1.12 2023年5月31日
0.1.3 2023年4月27日

#303 in 算法

Download history 1/week @ 2024-05-21 4/week @ 2024-06-11 1/week @ 2024-06-25 112/week @ 2024-07-02 30/week @ 2024-07-09 3/week @ 2024-07-16 26/week @ 2024-07-23

81 个月下载量
用于 autour_process

Apache-2.0

205KB
2K SLoC

为 graph_process_manager_core 实现的通用记录器

4 种类型的记录器,用于记录由 graph_process_manager_core 实现的工具的过程

  • 一个 GraphViz 记录器,用于生成过程的图形表示
  • 一个 nodesPrint 记录器,用于在文件中打印在过程中构建的中间对象
  • 一个 stepsTrace 记录器,用于在文件中打印过程中的跟踪信息,即步骤序列
  • 一个 NFAIT 记录器,用于构建非确定有限自动机(带有立即转移)

在测试模块中给出了简单的示例用法。我们将在以下内容中简要描述。

斐波那契数列

在这个例子中,我们探索斐波那契数列。为此示例设置最大深度为 10。

将简单的 GraphViz 记录器应用于此示例过程,可以得到以下表示

GraphViz log of Fibonacci process

可以从这次探索构建以下自动机

NFAIT of Fibonacci process

在此处使用 nodesPrint 记录器将斐波那契数列中的数字打印到文本文件中,并使用 stepsTrace 记录器打印 'next' 步骤的序列(这里是一个简单的应用,但对于其他过程可能有各种类型的步骤等)。

以下是以两个记录器生成的示例玩具过程文件表示: 2个记录器生成的文件

二叉树

在这个例子中,我们通过在右侧附加字母 'A' 和 'B' 来递增地构建由 'O' 组成的单词。为此探索,我们设置了最大深度为 4,最大节点(单词)数为 8。

根据我们使用的启发式方法,我们不会达到相同的单词集。

使用 BFS(广度优先搜索)我们得到以下

BFS

使用 DFS(深度优先搜索)我们得到以下

DFS

使用HCS(高覆盖搜索,优先选择具有最少公共前缀的分支)我们得到以下结果

HCS

探索可以进一步细化,使用更详细的过滤条件和优先级来选择下一步行动。也可以对下一步行动进行随机化。

依赖项

~2.5MB
~47K SLoC