`
kofsky
  • 浏览: 201702 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

蚂蚁爬橡皮筋问题 之二

 
阅读更多

昨天想的是蚂蚁爬行的绝对距离,晚上睡觉的时候突然想到,可以用蚂蚁爬行相对橡皮筋的比例来计算。
比如说,蚂蚁爬行到了距离终点x的距离,那么只需要再爬行x/l(l为橡皮筋长度)比例的橡皮筋,那么就必定可以到达终点。
按照这个比例的想法,可以比较容易的确定蚂蚁爬行橡皮筋比例的上界与下界。
假设橡皮筋初始长度为l,蚂蚁爬行速度为v1,橡皮筋膨胀速度为v2
将蚂蚁爬行与橡皮筋膨胀两个过程分开
情形1:
假设蚂蚁先爬行,蚂蚁爬行的时候橡皮筋停止膨胀,爬行完毕后橡皮筋再膨胀,膨胀过程中蚂蚁停止
则1轮后,蚂蚁爬行的总距离占整个橡皮筋比例为 v1/l
  2轮后,蚂蚁爬行的总距离占整个橡皮筋比例为 v1/(l+v2)
  ..........
  n轮后,蚂蚁爬行的总距离占整个橡皮筋比例为 v1/(l+n*v2)
  也就是说n秒后,蚂蚁爬行的距离占整个橡皮筋的比例为:

 

情形2:
假设橡皮筋先膨胀,膨胀过程中蚂蚁停止爬行,膨胀完毕后蚂蚁开始爬行,蚂蚁爬行的时候橡皮筋停止膨胀
则1轮后,蚂蚁爬行的总距离占整个橡皮筋比例为 v1/(l+v2)
  2轮后,蚂蚁爬行的总距离占整个橡皮筋比例为 v1/(l+2*v2)
  ..........
  n轮后,蚂蚁爬行的总距离占整个橡皮筋比例为 v1/(l+(n+1)*v2)
  也就是说n秒后,蚂蚁爬行的距离占整个橡皮筋的比例为:


显然。蚂蚁在橡皮筋上面爬行的比例应该介于两者之间。


蚂蚁能否爬到终点就是比较s与1的大小。其实只要比较小的那个s2与1的大小就可以了。如果s2能够超过1,那么蚂蚁就能够爬到终点。s2感觉像一个有穷级数,而且,根据前面的模拟实验,这个级数应该是发散的。

问题是,该怎么求这个级数???

有待进一步的探讨。数学太磋了。

 

续:直接积分,按蚂蚁爬行距离占橡皮筋比例来讨论

假设经过时间t后,蚂蚁到达位置s,此时橡皮筋长度为L=l+v2t。由时间t经过时间dt后,蚂蚁爬行的距离为v1dt,由于时间短很小,因此可假定橡皮筋还来不及拉伸,在这段极短的时间dt内,蚂蚁爬行的距离占整个橡皮长度的比例为:

因此,因此,可以计算得经过时间t后,蚂蚁爬行占橡皮筋比例为:

 

即:

 

蚂蚁在经过时间t后的速度为:

观察一下,前面部分是一个常数,后面是一个log函数。验证了昨天的猜测。

经过时间t后蚂蚁距离终点距离为:

(这个距离也可以通过对速度积分来计算)

这个函数就比较复杂了。前面半截为1减去一个log函数,后面半截为一个线性函数,两个相乘,会是什么样子的曲线呢?可以模拟一下。

 

还有一个很关键的问题,就是,蚂蚁经过多少时间能到达终点?

用 r=1 计算得如下结果:

 

(注意要向上取整)

当l=100,v1=1,v2=10时,答案为:t = 10(e^10-1)=220 255,跟昨天模拟结果的略有差距,误差10s,应该是在时间t较长时,模拟的时间片段显得较大而导致误差。当修改参数使得t减小时,误差应该会变小直至没有误差;若修改参数使得t增大,这个误差会继续扩大。

从上面的公式可以看出,蚂蚁到达终点的时间与 v2/v1 密切相关。

也可以验证 昨天模拟得到的结论: 对蚂蚁速度v1最敏感,橡皮筋速度v2次之,橡皮筋长度l最不敏感

对v1最敏感是因为 v1初始值比较小,稍微修改都可能导致很大的变化。比如v1从1cm/s变到2cm/s,那么时间t就会有10(e^10-1)变到10(e^5-1),两者差e^5倍,这个差距是巨大的;而如果将v2由10cm/s变到20cm/s,差距仅为e^2倍,相比要小很多。


 

分享到:
评论

相关推荐

    蚂蚁爬杆问题

    蚂蚁爬杆问题 A.B.C三只蚂蚁不同速度在一个杆上爬行,求蚂蚁爬出杆的时间问题

    蚂蚁爬杆问题(面向对象)

    在本案例中,“蚂蚁爬杆问题”是一个典型的OOP应用场景,我们可以用C#语言来实现。下面我们将详细探讨这个问题以及如何用面向对象的方式去解决它。 首先,我们需要定义一个“蚂蚁”类(Ant),这个类至少包含两个...

    使用C++实现小蚂蚁爬行

    在这个场景中,我们关注的是"使用C++实现小蚂蚁爬行"的问题。这个问题的核心是通过编程语言模拟蚂蚁在一条线上的运动行为,包括它们的相遇和方向变化。让我们深入探讨这个主题。 首先,我们需要理解问题的基本模型...

    1蚂蚁爬杆之动态演示

    在这个场景中,“1蚂蚁爬杆之动态演示”是一个项目,它使用编程来模拟蚂蚁爬杆的行为。该项目可能包含32种不同的选择或策略,每种选择都可能导致蚂蚁爬杆的不同结果,这可能是为了展示算法的多样性和复杂性,或者是...

    蚂蚁爬行问题源码

    《蚂蚁爬行问题的Java实现及其算法解析》 在计算机科学领域,模拟自然界的现象并从中学习解决问题的方法是一种常见的策略。蚂蚁爬行问题就是一个这样的例子,它源于对真实世界蚂蚁行为的观察,然后通过编程来模拟...

    c++蚂蚁爬杆问题

    蚂蚁爬杆自己写的,希望大神能够帮助我写代码的质量,有什么问题随便提出来,自己一定会改正的谢谢

    蚂蚁爬杆题目与分析.txt

    通过以上分析和实现,我们可以看到,使用对象的方法来解决“蚂蚁爬杆”这类问题是一种非常有效的方式。它不仅能够清晰地表达问题的关键要素,还能够方便地通过编程语言进行实现。此外,这种解题思路还可以扩展到更多...

    蚂蚁爬杆+图形界面+C#+ide=vs08

    某企业面试编程题:蚂蚁爬杆 有一根300厘米的细木杆,在第30厘米、80厘米、110厘米、160厘米、250厘米这五个位置上各有一只蚂蚁。木杆很细,不能同时通过两只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意的,它们只会...

    蚂蚁爬杆游戏

    "蚂蚁爬杆游戏"是一款基于C#编程语言开发的小型计算机游戏,其核心玩法是模拟蚂蚁在一根垂直的杆上爬行,目标是计算出所有蚂蚁都安全离开杆子的最短和最长时间。这个游戏涉及到计算机科学中的算法设计、数据结构和...

    蚂蚁与木棍问题仿真

    一根长度为L厘米的木棍上有n只蚂蚁,每只蚂蚁要么朝左爬,要么朝右爬,速度为1厘米/秒。当两只蚂蚁相撞时,二者同时掉头(掉头时间忽略不计)。给出每只蚂蚁的初始位置和朝向,计算T秒之后每只蚂蚁的位置。 程序给出...

    27厘米的细木杆上蚂蚁爬杆

    6. **异常处理**:在程序中,对于蚂蚁爬出木杆的情况,通过设置`hasRemove`标志来终止蚂蚁的移动,并清空当前位置的蚂蚁。 7. **时间复杂度**:由于每秒蚂蚁只能移动一厘米,且每次移动都会检查是否与其他蚂蚁碰撞...

    蚂蚁感冒问题

    每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒。 当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。 这些蚂蚁中,有1只蚂蚁感冒了。并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。 请你计算,当...

    蚂蚁爬杆27厘米的细木杆

    有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。 木杆很细,不能同时通过一只蚂蚁。 开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,但不会后退。 当...

    蚂蚁算法解决目标问题

    在本文档中,标题和描述提及了一个特定的算法——蚂蚁算法(Ant Colony Optimization, ACO),以及它在解决多目标旅行商问题(Multi-Objective Traveling Salesman Problem, TSP)上的应用。由于文档部分内容被标记...

    小班体育游戏活动教案《蚂蚁爬爬爬》润新教育.txt

    小班体育游戏活动教案《蚂蚁爬爬爬》润新教育.txt

    蚂蚁问题 C++

    【蚂蚁问题 C++】是一个基于面向对象编程的实践项目,主要目标是模拟蚂蚁寻找食物的行为。在自然界中,蚂蚁通过释放信息素来通信,寻找最短路径到食物源。在这个项目中,我们将学习如何用C++语言来实现这一过程。 ...

    蚂蚁的移动速度问题

    这个问题是关于算法设计和模拟的,具体涉及到蚂蚁在一根木棍上移动的场景。题目给出的是百度面试中的一道题目,要求解决所有蚂蚁都离开木棍的最小和最大时间问题。蚂蚁只能向前走或者调头,当两只蚂蚁相遇时,它们会...

    专题训练蚂蚁爬行的最短路径含答案.doc

    专题训练蚂蚁爬行的最短路径含答案.doc

    蚂蚁蜜蜂数据集,可以做二分类任务

    在这个特定的数据集中,目标是区分图像中的蚂蚁和蜜蜂,这属于二分类问题,因为存在两个可能的类别:蚂蚁或蜜蜂。 人工智能(AI)是这个过程背后的基础,它利用计算机模拟或增强人类智能。在这个场景下,人工智能...

Global site tag (gtag.js) - Google Analytics