Z3-Verified-Reasoning-Graphs
收藏Z3-Verified MCTS Reasoning Graphs (5k Baseline) 数据集概述
数据集基本信息
- 语言: 英语 (en)
- 许可证: Apache-2.0
- 任务类别: 文本生成 (text-generation)
- 标签: 推理 (reasoning)、数学 (math)、合成数据 (synthetic)、优化 (optimization)、Z3、回溯 (backtracking)、系统2 (system-2)
- 规模类别: 1K<n<10K
概述
该数据集提供了一个包含5,000行的生产就绪基线数据集,专注于高度多样化、确定性的、经过Z3定理证明器验证的图着色任务。其设计目标是专门训练大型语言模型(如Llama-3, Mistral, Qwen)进行蒙特卡洛树搜索风格的回溯、冲突解决和约束满足,以模仿O1级别的推理能力。
核心特性
- 零标签噪声(Z3验证): 每个图、色数和解决方案均经过Microsoft Z3定理证明器的数学验证。数据集中不存在任何LLM幻觉。
- 信息密集的推理轨迹:
reasoning字段是严格的、程序化的JSON轨迹,展示了贪心启发式搜索、禁用颜色以及在检测到下游冲突时的显式[backtrack]信号,没有闲聊式的叙述。 - 高复杂度: 图的规模从8个节点扩展到最多120个节点和1600条以上的边。
- 排列增强: 节点索引被随机打乱,颜色被重新标记,以防止“模式记忆”,迫使模型学习算法而非数据集。
数据集分析
任务分布
- 强调(50%)全图着色任务以建立核心算法路径。
- 辅以验证和冲突解决任务以强制执行严格的约束满足。
拓扑结构与难度
- 图在随机、二分、树和近团结构中均匀分布。
- 动态分层为简单、中等和困难等级,以确保渐进的学习曲线。
复杂度缩放
- 边密度随节点数量非线性增长(最多120个节点和1600条以上边),迫使模型进行深度状态空间探索。
信息密度
- 轨迹长度根据问题复杂度自然变化,产生高度压缩、令牌高效的JSON推理步骤。
计算与训练经济性(令牌统计)
使用标准的cl100k_base(o1/GPT-4)分词器进行分析。
| 数据集指标 | 5k数据集 | 20k数据集 | 100k数据集 |
|---|---|---|---|
| 数据集总令牌数 | ~4205万 | ~2.1亿 | ~8.4亿 |
| 平均每行令牌数 | 8,410 | 8,410 | 8,410 |
| 所需最大上下文 | 50,014(需要>64k上下文模型) | 50,000 - 65,000 | 50,000 - 65,000 |
多任务泛化
数据集在5种不同的任务类型间保持平衡以防止对单一提示的过拟合:
- 全图着色 (50%): 带有贪心回溯轨迹的标准着色。
- 验证 (20%): 模型接收一个着色方案(50%有效,50%故意损坏),必须找出边冲突。
- 缺失颜色 (15%): 根据邻居节点推断单个未着色节点的有效颜色。
- 冲突解决 (10%): 模型获得一个恰好存在一个边冲突的图,必须识别并修复它。
- 精确色数 (5%): 确定所需颜色的绝对最小数量(Z3计算得出)。
数据结构
| JSON字段 | 描述 |
|---|---|
task_type |
具体任务类型(例如task_a_coloring, task_b_validation)。 |
graph_type |
拓扑类型,包括bipartite, tree, random, near_clique。 |
difficulty |
基于边密度和色数启发式计算的难度(easy, medium, hard)。 |
nodes & edges |
图大小的整数计数。 |
instruction |
给LLM的提示。 |
reasoning |
逐步的状态空间搜索和回溯日志。 |
solution |
最终经过验证的正确答案。 |
单行数据示例
json { "task_type": "task_a_coloring", "graph_type": "bipartite", "difficulty": "medium", "nodes": 97, "edges": 1613, "instruction": "Graph with 97 nodes. Edges: [(66, 24), (66, 13)... Color the graph using at most 3 colors so no adjacent nodes share a color. Provide the strategy and reasoning steps.", "reasoning": "{"strategy": "greedy_backtracking", "heuristics": ["highest_degree_first", "smallest_available_color"], "steps": [{"node": 92, "assigned_color": 1, "forbidden_colors": []}, {"node": 76, "assigned_color": 1, "forbidden_colors": []}, ... {"node": 12, "assigned_color": 0, "forbidden_colors": [1]}, ... ]}", "solution": "{92: 1, 76: 1, 39: 1, 12: 0, 53: 0, 28: 1 ... 75: 0, 83: 1}" }




