画家难题 - 从第一原理进行算法估计

2024-03-27

这个问题是基于从2001年开始。

A guy “找到了一份街头油漆工的工作,在路中间画虚线。”第一天他完成了 300 码,第二天完成了 150 码,第三天甚至更少。老板很生气,要求一个解释。

“我无能为力,”那家伙说。“我每天都离油漆罐越来越远!”

我的问题是,你能估计一下他第三天走了多少距离吗?

链接线程中的评论之一确实得出了精确的解决方案,但我的问题是关于一个足够好的解决方案估计——比如说 10%——根据一般原则,这很容易得出。

澄清:这是关于算法分析中的某种方法,not关于开发算法,也不是代码。


这里有很多未知数——他的行走速度、他的绘画速度、画笔中的颜料能持续多久……

但显然这里正在进行两个过程。一种是二次的——它是油漆罐和绘画点之间的来回行走。另一个是线性的——它是绘画的过程本身。

考虑到第 10 天甚至第 100 天,很明显线性分量变得可以忽略不计,并且该过程变得非常接近二次方 - 步行几乎花费了所有时间。相反,在第一天的前几分钟,它接近于线性。

因此我们可以说,时间t作为距离的函数s遵循幂律t ~ s^a具有变化的系数a = 1.0 ... 2.0。这也意味着s ~ t^b, b = 1/a.

应用经验增长阶数分析 http://en.wikipedia.org/wiki/Analysis_of_algorithms#Empirical_orders_of_growth:

The b第 1 天和第 2 天之间的系数近似为

    b(1,2) = log (450/300) / log 2 = 0.585     ;; and so,
    a(1,2) = 1/b(1,2) = 1/0.585 = 1.71

正如预期的那样,a系数低于2。对于第2天和第3天之间的时间段,我们可以将其大约设置为之间的中间值1.71 and 2.0,

    a(2,3) = 1.85                    ;; a = 1.0 .... 2.0
    b(2,3) = 0.54                    ;; b = 1.0 .... 0.5
    s(3)   = s(2) * (3/2)^b(2,3)
           = 450 * (3/2)^0.54
           = 560 yards

因此第三天行驶的距离可以估计为560 - 450 = 110 yards.

如果a系数具有最大可能值,2.0,已经(这是不可能的)?然后,450*(3/2)^0.5 = 551码。而对于另一个极端,如果是一样的话1.71(这显然也不可能),450*(3/2)^0.585 = 570.

这意味着 110 码的估计是合理的,两侧误差均小于 10 码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

画家难题 - 从第一原理进行算法估计 的相关文章

  • 跨线反映点的算法

    给定一个点 x1 y1 和一条直线的方程 y mx c 我需要一些伪代码来确定反映直线上第一个点的点 x2 y2 花了大约一个小时试图弄清楚但没有运气 请参阅此处的可视化 http www analyzemath com Geometry
  • 用于检索编辑距离接近的字符串的数据结构

    例如 从一组英语单词开始 是否有一种结构 算法允许使用单词 right 作为查询来快速检索诸如 light 和 tight 之类的字符串 即 我想检索与查询字符串编辑距离较小的字符串 The BK tree http blog notdot
  • 对 Big O 表示法仍然有点困惑

    所以我一直在尽力理解 Big O 表示法 但仍然有一些事情我感到困惑 所以我一直读到如果某件事是 O n 那么它usually指的是算法的最坏情况 但它不一定要指最坏的情况 这就是为什么我们可以说插入排序的最佳情况是 O n 但是 我无法真
  • 如何将多个矩形打包为 2d 盒子俄罗斯方块样式

    我有许多不同宽度和高度的矩形 我有一个更大的矩形平台来放置它们 我想将它们包装在平台的一侧 以便它们在纵向 X 尺寸上展开 但将横向 Y 尺寸保持在最小限度 就是把它们像俄罗斯方块游戏一样放置 不能有重叠 但可以有间隙 有没有算法可以做到这
  • Kamada 和 Kawai 图形布局算法? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有人尝试过 Kamada Kawai 的 88 算法来绘制一般无向图吗 如果是这样 并且您知道其中的任
  • 许可证密钥模式检测? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 这不是真实情况 请忽略您可能认为适用的法律问题 因为它们并不适用 假设我有一组 200 个已知的有效许可证密钥 用于假设的软件许可算法
  • 最大流量算法的修改

    我试图解决一个关于最大流量问题 http en wikipedia org wiki Maximum flow problem 我有一个源和两个接收器 我需要找到该网络中的最大流量 这部分是一般的最大流量 然而 在这个特殊版本的最大流量问题
  • 如何修复错误嵌套/未闭合的 HTML 标签?

    我需要通过使用正确的嵌套顺序关闭任何打开的标签来清理用户提交的 HTML 我一直在寻找一种算法或Python代码来做到这一点 但除了PHP等中的一些半生不熟的实现之外 还没有找到任何东西 例如 类似的东西 p p ul li Foo bec
  • 计算标签云中标签字体大小的公式是什么?

    我有一个标签云 我需要知道如何更改最常用标签的字体大小 我需要设置最小字体大小和最大字体大小 您可以使用线性或对数评估与某个标签相对于最大标签关联的项目数量 将其乘以最小和最大字体大小之间的差值 然后将其添加到最小字体大小 例如 伪代码中的
  • 在 Python 中删除表达式树及其每个子表达式树中第一个元素周围的括号

    目标是实现简化操作 删除表达式树及其每个子表达式树中第一个元素周围的括号 其中表达式作为括在各个括号中的字符串输入给出 这必须适用于任意数量的括号 例如 12 3 45 6 gt 123 45 6 删除 12 周围的括号 然后删除 45 周
  • 算法:最大计数器

    我有以下问题 您有 N 个计数器 最初设置为 0 并且您对它们有两种可能的操作 increase X 计数器 X 加 1 max counter 所有计数器都设置为任何计数器的最大值 给出一个包含 M 个整数的非空零索引数组 A 该数组代表
  • 二进制字符串到十进制字符串

    下午好 如何将字符数多于语言最大整数类型中位数的二进制字符串转换为十进制字符串 换句话说 假设你有字符串 111001101001110100100 1001001111011100100 并且您不能先将其转换为整数 那么您将如何以 10
  • 获取无平方数的列表

    获得该值的一种方法是自然数 1 n 我们对每个因子进行因式分解 看看它们是否有重复的质因数 但这对于大的情况来说会花费很多时间n 那么有没有更好的方法从 1 中获取无平方数n 您可以使用埃拉托斯特尼筛法的修改版本 取一个布尔数组 1 n 预
  • 给定与总和匹配的长度的唯一 3 位数字 (-1,0,1) 序列的数量

    假设您有一个长度为 n 即空格数 的垂直游戏板 你有一个三面骰子 有以下选项 前进一 停留和后退 如果您低于或高于棋盘游戏空间的数量 则该游戏无效 一旦到达棋盘末端 唯一有效的动作就是 停留 给定确切的骰子投掷次数 t 是否可以通过算法计算
  • 添加到数组连续数字

    这是我向SO提出的第一个问题 我希望能答对 在 PHP 中 如果你不会 Python 或伪语言也可以 给定一个包含 n 个元素的数组 old array 1 2 3 5 7 8 9 20 21 23 29 我需要向新数组添加连续数字 如果不
  • 以一定角度遍历二维数组

    通常我们按行或列遍历数组 但这里我想以角度遍历它 我会尝试解释我的意思 因此 假设角度是 45 度 那么它会搜索为 0 0 then 0 1 1 0 then 0 2 1 1 2 0 等等 抱歉 无法上传图像 因为我是新用户 不允许这样做
  • 我想优化这个短循环

    我想优化这个简单的循环 unsigned int i while j 0 j is an unsigned int with a start value of about N 36 000 000 float sub 0 i 1 unsig
  • 合并字符数组中的最小重复次数

    假设我有两个数组 我想合并它们 以便合并后的数组具有最小重复次数 例如 x x 是重复 arr1 x d d m f m arr2 d d x f f m 唯一的条件是在合并数组中 元素来自arr1 and arr2必须出现在各自的订单中a
  • 按百分比减少多边形面积

    我有一个由点 x y 组成的多边形 我想做的是将其减少一个百分比 请记住 我不想只是扩大规模 多边形应该有一种内部边界 其宽度取决于百分比 该内部边界被多边形切断 谁知道可以实现这一目标的算法 输入 点数组 百分比 输出 点数组 你所寻求的
  • Java:如何实现3和?

    我正在研究 3 Sum 来自己实现它 并遇到了以下规则的实现 给定一个由 n 个整数组成的数组 S S 中是否存在满足 a b c 0 的元素 a b c 查找数组中所有总和为零的唯一三元组 注意 三元组 a b c 中的元素必须按非降序排

随机推荐

  • 将 ForEach 与绑定数组一起使用 (SwiftUI)

    我的目标是从 JSON 动态生成表单 除了生成 FormField 视图 基于 TextField 并绑定到动态生成的视图模型列表之外 我已将所有内容放在一起 如果我将 FormField 视图替换为普通的 Text 视图 则效果很好 请参
  • 如何以编程方式设置开始标签和结束标签之间的文本格式,然后删除标签

    编辑 以下工作与 Google Apps 脚本有关 用于格式化 Google 文档中的文本 我不熟悉 JavaScript 实际上只完成了一些 R 编码 因此这项工作是对我可以在 google 上搜索到的内容进行一些解析以及一些尝试和错误
  • 是否有使用游标或智能获取的 Ruby ORM?

    我正在寻找 Ruby ORM 来替代 ActiveRecord 我一直在研究 Sequel 和 DataMapper 它们看起来不错 但似乎都没有做基本的事情 当您不需要时 不将所有内容加载到内存中 我的意思是我已经在有很多行的表上的 Ac
  • 如何从 Android 调用 RESTful Web 服务?

    我已经使用 jersey 框架和 java 在 netbean IDE 中编写了 REST Web 服务 对于每个请求用户都需要提供用户名和密码 我知道身份验证不好 使用curl命令 例如 curl u 用户名 密码 X PUThttp l
  • 如何在基于非文档的 Storyboard 应用程序中处理 applicationShouldHandleReopen

    我能想到的最好的办法是 func applicationShouldHandleReopen sender NSApplication hasVisibleWindows flag Bool gt Bool if flag let sb N
  • 在 Windows 上的 Qt Creator 中编译 Cuda 代码

    几天来我一直在尝试获取在 32 位 Windows 7 系统上运行的 Qt 项目文件 我希望 需要在其中包含 Cuda 代码 这种组合要么非常简单 以至于没有人愿意在网上放一个例子 要么非常困难 似乎没有人成功 不管怎样 我发现的唯一有用的
  • 如何使用 Spring Boot 设置速度模板字符编码?

    我的模板使用 UTF 8 作为编码 但我的 Web 应用程序的输出不正确 问题是速度认为我的模板具有 ISO 8859 1 作为编码 因为这是以下输出 System out println ctx getBean VelocityEngin
  • 在 PHP 中使用命名空间解析 XML 数据

    我正在尝试使用这个使用命名空间的 XML 提要 但我无法跳过标签中的冒号 XML 提要如下所示
  • 如何在 Laravel 中动态创建子域?

    在我的 Windows System32 drivers etc 中hosts 我有这个 127 0 0 1 localhost 127 0 0 1 site dev 127 0 0 1 site dev 在我的 xampp apache
  • 如何用制表符替换换行符?

    我有如下所示的图案 hi hello hallo greetings salutations no more hello for you 我正在尝试使用以下命令用制表符替换所有换行符 sed e s n t g 但它不起作用 有人可以帮忙吗
  • 在哪里可以了解有关 C++0x 的更多信息? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • C++ 中的 readNetFromTensorflow 错误

    我是深度学习的新手 第一步 我使用 keras 在 python 中创建并训练一个模型 并通过以下代码冻结 def export model MODEL NAME input node name output node name tf tr
  • 使用 url 生成 YouTube 视频的嵌入代码

    我想将 YouTube 视频添加到我的网站 我想知道有没有办法generate 嵌入代码 by giving the url 我们在浏览器中输入 as input 简而言之 有没有办法获得 嵌入代码 作为输出 给出 url 视频作为输入 我
  • Python:将2个列表转换为字典并为每组数据重复键

    了解 Python 的 zip 函数 我可以做这个 list keys fname lname dob list data bob smith 12121950 keys and data dict zip list keys list d
  • 是否可以向我的应用程序添加“评价此应用程序”链接?

    这就是我想要做的 我的应用程序的设置页面上有一个按钮 我希望它可以将用户引导至应用程序商店上的评论 评分页面 我知道可以使用 UIApplication sharedApplication openURL 但我的应用程序尚未发布 所以我没有
  • Rails 密码将在 24 小时内过期

    在我的 Rails 3 1 应用程序中 我想为用户创建随机密码并使其过期 我正在使用 devise gem 来实现这一点 任何可用的插件expiring password在一段时间内 否则请给我一些逻辑建议来实现此功能 请把我当作一个新手
  • MySQL 连接器 C++ - 无效指针

    我正在尝试使用 MySQL C 连接器连接到数据库 我已经添加了库 并且源代码可以使用所有必要的 include 语句正确编译 我正在使用的代码如下 include
  • 逆斐波那契算法?

    对于任意 n 计算 F n 的方法有数十种 其中许多方法都具有很高的运行时间和内存使用率 然而 假设我想问相反的问题 给定 F n n gt 2 n 是多少 n gt 2 限制存在 因为 F 1 F 2 1 并且没有明确的逆 解决这个问题最
  • 将 Single> 转换为 Observable

    Goal I get a Single
  • 画家难题 - 从第一原理进行算法估计

    这个问题是基于从2001年开始 A guy 找到了一份街头油漆工的工作 在路中间画虚线 第一天他完成了 300 码 第二天完成了 150 码 第三天甚至更少 老板很生气 要求一个解释 我无能为力 那家伙说 我每天都离油漆罐越来越远 我的问题