- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我刚看到麻省理工学院关于博弈树和 MinMax 算法的讲座,其中讨论了 Alpha Beta 剪枝和渐进深化。
https://www.youtube.com/watch?v=STjW3eH0Cik
因此,如果我理解正确的话,渐进式加深是指当您尝试在每个级别上近似回答并尝试根据移动的时间限制深入到叶节点时。在任何时候得到一些答案是很重要的。现在,在 36:22教授讨论了我们没有足够时间的情况,我们只走到第 (d-1) 层,其中 d 是树的深度。然后他还建议我们可以在每个级别都有一个临时答案,因为我们应该在任何时间点都有一些大概的答案。
我的问题是,如果不去叶节点,我们怎么能得到任何答案,因为只有在叶节点,我们才能断定谁能赢得比赛。想想这个井字游戏。在第 (d-1) 级,我们没有足够的信息来决定直到 (d-1) 的这个节点的这一系列 Action 是否会赢得我或输掉比赛。在更高的层次上说在 (d-3) 它更加模糊!当我们往下走时,一切皆有可能。不是吗?因此,如果算法决定计算到第 (d-1) 层,那么所有这些路径选项都是相等的!没有什么能保证赢,也没有什么能保证在第 (d-1) 级输,因为如果我理解正确的话,输赢只能在叶节点上计算。在纯 MinMax 算法中尤其如此。
那么,我们如何才能在第 (d-1) 级或第 (d-5) 级获得“近似答案”呢?
最佳答案
我会尽力解释清楚。
逐步深化的背景和重要性
我要你知道,在现实世界的游戏中,你用来决定的时间是有限的! (因为用户体验和其他关于人机交互的问题或关于你游戏中的问题/设计)。
你有一个游戏树并使用差异算法来优化遍历所有树。但存在三个问题:
所有问题的答案都是渐进加深的:在当前关卡计算答案并尝试通过树中的下一个关卡;但是如果你没有时间,你准备好在上一关得到一个答案,然后把它作为答案拿出来
回答你的问题
您可以想象树中的当前级别是游戏树中的“最终级别”(您假设),但是如果您进入树中的下一个级别,您将获得最佳解决方案,然后如果您可以下一级:现在就去!但是你需要计算当前游戏树中的最佳答案,因为它是游戏树中的“最终级别”作为保险单,如果你没有在时间限制下完成下一级别的最佳答案计算。
关于algorithm - 博弈树算法和渐进深化 : How to approximate an answer without reaching the leaf nodes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39936290/
问题:我有一个二叉树,所有叶子都编号(从左到右,从 0 开始)并且它们之间不存在连接。 我想要一种算法,给定两个索引(2 个不同的叶子),从较大的叶子(索引较高的叶子)开始访问树并到达较低的叶子。 树
我需要在 AST 中表示这样的结构: struct { int data; double doubleDataArray[10]; struct { int nestedData;
我有一个自相关表 myTable,如下所示: ID | RefID ---------- 1 | NULL 2 | 1 3 | 2 4 | NULL 5 | 2 6 | 5 7 | 5
我在使用此数据结构模型的类别中有一个表。还使用另一个表向我显示类别分支的路径: **t_category** id | name | parent ------------------ 1 mas
ExtractEveryPack::type是 Pack 中所有“叶包”的包.例如,ExtractEveryPack, int, Pack> >::type是Pack, Pack > .但“外包装”不
我写了下面的代码来构造一个给定顶点的树,给出顶点之间的连接列表。 type Connection = (Int,Int) data Tree = Leaf Int | Node Int [Tree]
我正在尝试识别树中的“叶子”,但我很困惑为什么我的查询没有给我想要的东西。 问题是这样的: 所以我的想法是,只要id不在p_id列中,那么它就应该是“Leaf” select id, 'Leaf' a
我正在尝试识别树中的“叶子”,但我很困惑为什么我的查询没有给我想要的东西。 问题是这样的: 所以我的想法是,只要id不在p_id列中,那么它就应该是“Leaf” select id, 'Leaf' a
我需要做什么来渲染 TreeMap ,使节点向图的叶侧对齐? 我想采用通常看起来像的任意 TreeMap : 并让它类似于: 最佳答案 一种方法是发现树的深度并设置 depth每个没有该值的子节点的节
我从一个几乎空白的项目开始,我可以使用以下方法从 welcome.leaf 渲染一个简单的页面: router.get("view") { req -> Future in let leaf
我正在尝试将骨架模板 View 添加到最近的 Vapor 2 应用程序中,到目前为止,该应用程序仅使用 MySQL 数据库生成 JSON 输出。如果我使用以下最少的代码: get("viewT
题目地址:https://leetcode.com/problems/sum-root-to-leaf-numbers/description/ 题目描述: Given a binary tree
这个查询: SELECT payload.pages FROM FLATTEN([publicdata:samples.github_nested] , payload) ORDER BY creat
我已经在 Fossil SCM 工作了一段时间,但我仍然看到一些我不太明白的东西。 在屏幕截图中,您可以看到我在存储库中有两个叶子,但遗憾的是我找不到将它们合并回主干的方法(在我的所有提交中都有“叶子
给定一棵仅包含 0-9 数字的二叉树,每个根到叶的路径都可以代表一个数字。 一个例子是根到叶的路径 1->2->3 代表数字 123。 找出所有根到叶数的总和 % 1003。 例子: 如果 1 是根节
我使用 vapor 加载 html 或 leaf,它给我错误消息“500”。服务器日志显示给我 [Data File Error: unable to load file at path /Users
我有一个Group、User 和一个App 模型。在我的组模型中,我有一个属性 var apps: [App] 并且我创建了组和用户的兄弟关系。 在我的 WebsiteController 中,我有
我为此编写的代码: sumBST(BST *root) { static sum =0; if (root!= null) {
我想从 jsTree 获取所有叶节点(节点的 ID 和文本)? 我没有使用复选框 ui:jsTree。 Root -----A -----A1
我需要在 Swift Vapor 应用程序中创建一个复杂的 html 表格。 问题是:Leaf 似乎不支持像 #(somevar += 1) 这样的变量计数,也不支持像 #(somevar1 + so
我是一名优秀的程序员,十分优秀!