|  |      1cloudbeyond      2017-06-07 07:46:41 +08:00 看到了罗辑思维, 可能是物以类聚, 人以群分 | 
|  |      2rekulas      2017-06-07 07:47:46 +08:00 资历浅薄,不敢妄评 | 
|      3lrigi      2017-06-07 07:52:58 +08:00 via iPhone 算法的目的个人认为还是去解决问题,乃至使用计算机解决问题,楼主没必要限制于计算机内部 | 
|  |      4jint      2017-06-07 08:02:03 +08:00 骗小白的文字而已。无视就好了。 | 
|      5RqPS6rhmP3Nyn3Tm      2017-06-07 08:03:16 +08:00 via iPhone  21 看到标题以为是教人如何装 X11 我就进来了 | 
|      6Busy      2017-06-07 08:06:02 +08:00 level 不同,站的角度不同。 就如同准备移民的人经常聊移民 | 
|  |      7k9982874      2017-06-07 08:08:20 +08:00 via iPad 如果是干货装就装吧 人家做了贡献 自己学到了东西 | 
|      8dremy      2017-06-07 08:09:47 +08:00 via Android 我觉得这里的同时并不是指并行,不必那么严谨。意思应该类似于并发,即在同一时间段内发生事件,进而进行电梯的调度。 | 
|  |      9blankme      2017-06-07 08:12:46 +08:00 via Android 我觉得没什么问题 | 
|  |      10reus      2017-06-07 08:12:52 +08:00  11 呵呵,这就叫装 X 了?该不会是你不懂怎么处理吧? “假设 XXXX,问……” “不可能 XXXX,你故意整人!你装 X !” 呵呵 | 
|  |      11liteyou OP | 
|  |      12LokiSharp      2017-06-07 08:14:11 +08:00 via iPhone 诶!你们能看到图? | 
|  |      13liteyou OP | 
|  |      14reus      2017-06-07 08:22:04 +08:00 @liteyou 如果对齐到 5 秒、10 秒呢?也不可能出现同时吗? 很难处理吗?只要定下规则,例如上楼的优先,或者楼层低的优先,然后实现就可以了。看不出哪里“艰难”。 | 
|  |      15Aar0nFr4nk      2017-06-07 08:29:02 +08:00 via iPhone 感觉楼主看法有些偏激了 | 
|  |      16Duolingo      2017-06-07 08:32:46 +08:00 via iPhone  4 楼主以前读书做题的时候是不是也会说,这假设不可能! | 
|  |      17laoyuan      2017-06-07 08:33:45 +08:00 如果粒度是秒的话,我可以算一下每天按多少次就会有 50%的概率出现同时,不过 86400 的阶乘谁帮我算一下? | 
|  |      18blankme      2017-06-07 08:34:03 +08:00 via Android | 
|      19widewing      2017-06-07 08:34:53 +08:00 via Android  1 好歹给个全文链接啊,光这么两段根本就是很好的开头嘛 | 
|  |      20yongjing      2017-06-07 08:36:30 +08:00 算法是指解决问题的方法,解决同时按下电梯问题的方法,自然也能叫算法。 有什么问题? | 
|  |      21xjtlujoe      2017-06-07 08:36:30 +08:00 算法哪能装逼 | 
|  |      22Rice      2017-06-07 08:36:38 +08:00 我觉得这只是举个例子用来比喻而已,有认同的吗? | 
|  |      23laoyuan      2017-06-07 08:36:42 +08:00 python3 算出来了,print 出来大概有几十屏长的那么一个数。。 | 
|  |      24laoyuan      2017-06-07 08:38:56 +08:00 我列个方程 (86400! - (86400 - x)!) / 86400^x = 0.5,算出来每天按多少次就会有 50%的概率出现同时 | 
|  |      25Andiry      2017-06-07 08:39:46 +08:00 via Android 电梯调度算法,叫做算法也没什么不对 | 
|      26wangxiaoer      2017-06-07 08:40:58 +08:00 人家只是举个例子而已,在目前这个例子中涉及到的计算的确需要某种算法,所以没有问题。至于你口中的什么严格并行、时间戳,你去给小白讲讲试试。 本身就是半科普性质的,你来拿个游标卡尺量算,你们的幽默感哪里去了? 声明一下,没看过罗辑思维的东西,也不知道题主图片中的那个人,就事论事。 | 
|  |      27laoyuan      2017-06-07 08:45:06 +08:00 解出来了,如果以秒为粒度,那么每天按 346 次就会有 50%的概率出现同时,我这个答案符合直觉么?我列的方程没问题吧?! | 
|  |      28metrue      2017-06-07 08:48:17 +08:00 via iPhone 没关注过逻辑思维,但是这并不是叫人装 x. | 
|  |      29laoyuan      2017-06-07 08:49:45 +08:00 用 50 个同学相同生日数据验证了一下,公式没问题,每天按 346 次就有 50%的概率出现秒级同时 | 
|  |      30laoyuan      2017-06-07 08:52:08 +08:00 大家都来用 python3,我没想到 python3 可以算这么大的数,不知道 PHP 能不能算。。 | 
|  |      31liteyou OP @blankme  那 1 楼和 5 楼的人,总有一个先按后按吧。就算是电梯最后处理的是后按的那个数据(按距离优先原则),那也别让人处理 1 楼和 5 楼同时按下的情况吧。就是看到文艺青年在朋友圈感叹倍感收到“算法”教育的真谛,真心觉得写文章不能这样混淆真相的去博热点。 | 
|  |      32laoyuan      2017-06-07 08:56:54 +08:00 移植到 PHP 上了,没算出来,分子和分母都是 INF,宇宙第一身份岌岌可危 | 
|  |      33blankme      2017-06-07 08:57:35 +08:00 via Android @liteyou 不管 1 楼 5 楼的实际按键顺序,他们的操作被称为“同时”并没有问题,因为只要这些操作落在同一个电梯运行区间,你区分谁快一秒没有任何意义 | 
|  |      34liteyou OP @blankme  这实际上是 1 楼和 5 楼的人“分别”按下了按钮,但是电梯当成了“同时”的数据处理。但文章不能描述成 “一个在 5 楼的人,和在 1 楼的你同时按下电梯按钮...”吧,这不是故意为难人是什么? | 
|  |      36expkzb      2017-06-07 09:13:20 +08:00 lz 有些钻牛角尖了 | 
|      37Sh888      2017-06-07 09:13:36 +08:00  3 就这个事情而言,我觉得可能是 lz 在找茬,或者语文水平不够,又或者是来拉关注的。 一般语境下的“同时”,就是指有人“一起”按了按钮,没人会理解成时间戳的一致。当然如果要硬扯,你是不是还要扯“相对论”?要找一个“同时”的参照时间? | 
|  |      38jason2017      2017-06-07 09:14:28 +08:00 @liteyou  看见你说的“按绝大多数的情景,都不会出现完全相同的按下电梯按钮的时间戳吧”这句话,真心劝你一句,你不适合搞编程。 | 
|  |      39Perry      2017-06-07 09:16:50 +08:00 可怕的程序员洁癖 | 
|      40zjl03505      2017-06-07 09:17:09 +08:00 lz 这是在装 X 啊。好好的一个例子一定要钻牛角尖 | 
|      41cowpea      2017-06-07 09:18:03 +08:00  1 标题用到 LZ 身上也成立 | 
|  |      43herozzm      2017-06-07 09:19:52 +08:00 via Android lz,一个成熟作品必须考虑同时按下电梯按钮的可能,不然就会出现 bug 逻辑那边没问题 | 
|  |      46admol      2017-06-07 09:24:30 +08:00 lZ 如果是测试的话 ,  可能我们先轻松 , 然后就悲剧了 | 
|  |      47Tokin      2017-06-07 09:24:57 +08:00 还是有概率同时按下的啊,你也说“按绝大多数的情景...”,但是生产环境中,少数情景也需要考虑进去的吧。。。感觉不需要那么纠结一两个字,表达出意思,能理解就好了。 | 
|  |      48liteyou OP @herozzm  真的“同时”,和当作“同时”,还是不同的吧。作为科普文章,本身就是应该告诉读者真相和“电梯”实际的运作方式。 文章明显是故弄玄虚,让读者以为是在处理“同时”的按下行为时候,有什么过“人”之处。 | 
|  |      49Lucius      2017-06-07 09:28:49 +08:00 LZ 可能是想借文章的语言漏洞表现下自己的高明,只是没想到自己这波逼 装的比文章更瞎。   | 
|  |      50liteyou OP | 
|  |      52cloudzhou      2017-06-07 09:30:26 +08:00 电梯分配问题是一个很好的算法问题,这个例子觉得很好啊 | 
|  |      54fortunezhang      2017-06-07 09:32:13 +08:00 我感觉这应该是一个逻辑 | 
|  |      55zyqf      2017-06-07 09:34:07 +08:00 via Android 醒目的标题:一个外行人如何聊算法 | 
|  |      56liteyou OP | 
|  |      57iamjs      2017-06-07 09:40:08 +08:00 感觉没毛病啊。。。用最简单的和经常能遇到的情况做例子。。。这是很有诚意和能力的表现啊~ | 
|  |      58SourceMan      2017-06-07 09:42:34 +08:00 好偏激 不是说主题,是说楼主回复 好怕这条回复也被怼 | 
|  |      59elevioux      2017-06-07 09:47:40 +08:00 感觉 lz 有点钻牛角尖了。 没写过电梯的逻辑,但同时的问题在开发的时候还是要考虑的吧。应该就是一个处理逻辑而已,算不上什么算法不算法。 但文章这样表述也是没问题的。 | 
|  |      60starz      2017-06-07 09:50:39 +08:00 我觉得原文章看只是为了让非计算机工作人员大概了解算法是什么概念,科普向的,不是专业内容~ 话说这个电梯问题,经常坐电梯的时候都会想到类似的,感觉挺有意思的~ | 
|  |      61amon      2017-06-07 09:52:16 +08:00 算法太广义了,1+1=2 也是算法,电梯调度也是算法,阿尔法狗也是算法。 关键,了解算法需要去逻辑思维?那个不是骗智商税的吗。 | 
|  |      62asj      2017-06-07 09:53:18 +08:00  1 严格意义上计算机确实不会发生“同时”的事件,问题是他举的电梯的这个例子未必关心时间戳啊。 有可能是每隔一个时间段,或者电梯每到一个空闲点的时候,查询哪些楼层按下了按钮。这时候从电梯调度程序来看,这两个楼层就是同时请求了。 当然可以建议在按按钮的时候记录时间戳,其实相当于提出了一个先到先得的算法。其实如果只是要解决所谓“同时”的话,时间戳也可以不要,按楼层数字大小定优先级也可以。 当然这样调度从电梯使用角度是否高效就是另一回事了。 | 
|      63BOYPT      2017-06-07 09:56:03 +08:00 这属于任务调度算法啊,《操作系统》里面的例题式例子。 | 
|  |      64lurenw      2017-06-07 09:59:25 +08:00 你这不是认真,你这就是牛角尖,钻的没啥意义(别怼我) | 
|  |      65thekoc      2017-06-07 10:02:12 +08:00 只看目前的两段,很合理。 | 
|  |      66zhengxiaowai      2017-06-07 10:02:28 +08:00 确实是算法,没毛病。 | 
|  |      67mseasons      2017-06-07 10:03:44 +08:00 我觉得专业方面解释和普及两种教育中间很多事情的概念应该是不同吧,这里面主要是面对广大人民群众,又不是人人都是程序员,主要就是让大家明白概念啊。楼主注意三观啊 | 
|  |      68v2pro      2017-06-07 10:10:43 +08:00 确实是算法,一点没有毛病。 而且 LZ 逻辑很奇怪的点还在于,如果你要驳回我的观点,请给出你的 git 仓库。。。 | 
|  |      69moka20477      2017-06-07 10:12:52 +08:00  1 这个有什么问题么?现在新的大楼的电梯调度你以为只是靠时间戳比较先后? too simple,另外就算是时间戳比较先后,这也是算法,没什么问题(来自一个常年厌恶逻辑思维这种节目的人) | 
|      70bearsiji      2017-06-07 10:14:21 +08:00 没毛病啊 | 
|  |      71Parallel      2017-06-07 10:17:16 +08:00 不觉得有什么问题,能用日常生活中的例子来试图解释“算法”,这很好啊。 | 
|      7228ms      2017-06-07 10:19:06 +08:00 这不就比喻一下吗,算法就是为了解决实际问题的。非得黑板手写红黑二叉树才算会吗 | 
|      73wangxiaoer      2017-06-07 10:19:13 +08:00 @liteyou ”作为科普文章,本身就是应该告诉读者真相和“电梯”实际的运作方式。“ 你是在逗我? 这篇文章实在讲算法,稍有点常识的人都知道,电梯是在举例子好吧。你的语文不及格,理解力堪忧。 楼上有人说到了你不适合做编程,我觉得还有一种可能,楼主是小学生,刚学编程、算法没多久,对某些概念还停留在懵懂状态,万一遇到跟自己认知有偏差的东西就觉得颠覆了自己的世界观,就要出来理论,证明自己认知的正确性。 我倒希望是第二种,这样的话楼主这种态度挺好,反倒是做编程的材料。 | 
|  |      74zhidian      2017-06-07 10:19:49 +08:00  1 你知道计算机里时间是离散的吗?那特么就涉及到时间粒度问题。如果电梯对各种按钮的处理是 10 Hz (这也不算捉急),很可能同时吧。我对楼主是无语的。 | 
|  |      75liteyou OP | 
|  |      76whale      2017-06-07 10:25:57 +08:00 看例子似乎没毛病啊,应该不影响外行理解算法吧,LZ 做文学研究的? 就凭这么一个例子就说人“装 X ”,LZ 似乎有点上纲上线了! | 
|  |      77learnshare      2017-06-07 10:27:57 +08:00 戳漏 应该是方言?我们那里叫戳了 | 
|  |      78LancerXin      2017-06-07 10:30:21 +08:00 别人就随便举个例子,你就当真去思考...真的是有点钻牛角尖了. 而且楼主你的做事态度有问题啊,搞程序的讲究的是逻辑思维,严谨性...没有不确定性... 如果你思考一个问题,哪怕出现某个问题的概率只有万分之一,你也要考虑.. 哪怕某个问题在这个环境下 100%不会发生,但不能确保在其它环境下不会发生.. 想想千年虫的 bug... | 
|  |      79liteyou OP 世界上没有绝对的高人,也不喜欢所谓的高人忽悠。如果有一个人用这个问题:“ 5 楼的人,和 1 楼的你同时按下电梯按钮,电梯该怎么走 ...” 这样的问题教育我,结果我知道的事情真相是根本就不是“同时”操作(或者说是当作“同时”),我觉得就像是被脑筋急转弯那种题目耍了一样,绝不应该是科学的态度吧,科普不是忽悠真相。 | 
|  |      80xiang880401      2017-06-07 10:34:39 +08:00 | 
|      81heimeil      2017-06-07 10:35:48 +08:00 via Android  1 实际情况存在一些变量:电梯在几楼,电梯门是打开还是关闭状态;这些都要考虑,如果说电梯在 1 楼,里面的人刚出来,门在准备关闭状态,不能就因为 5 楼的人先按了 0.1 秒就直接关门去 5 楼了啊。 | 
|  |      82reus      2017-06-07 10:36:01 +08:00  1 就算要处理同时的情况,也不是什么难的算法,能唬到的,也只有弱鸡了。 弱鸡总觉得别人装 X,总觉得别人整人,原因只有一个,自己太弱。 | 
|      83batman2010      2017-06-07 10:36:44 +08:00 | 
|  |      84xiang880401      2017-06-07 10:39:09 +08:00 @liteyou 看了你上一条回复补充一句,现实中的事情是可能同时发生(连续)的,到目前为止计算机硬件处理是离散(没办法实现连续)的,真相也有可能不是你想象的那样 | 
|  |      85xiaoyang7545      2017-06-07 10:39:46 +08:00 楼主真的有点上纲上线了。。这个例子一眼看出来就只是给普通人看的。。还给你扯到什么时间戳。。 反而觉得楼主更接近于装 X 的 | 
|      86wangxiaoer      2017-06-07 10:42:41 +08:00 @liteyou 没看到后半句吗 ”我倒希望是第二种,这样的话楼主这种态度挺好,反倒是做编程的材料。“ | 
|  |      87laoyuan      2017-06-07 10:44:13 +08:00 @batman2010 你这式子分子比分母打,算概率哪能这么算 | 
|      88nodeath      2017-06-07 10:45:27 +08:00 我不知道你在这里装什么逼 | 
|  |      89laoyuan      2017-06-07 10:47:41 +08:00 每天按多少次电梯就会有 50%的概率出现一次同秒,严格来说方程是这样的: (86400! - (86400 - x)!) / 86400^x = 1 - 0.5 左侧是按 x 次每次都不同秒的概率 | 
|  |      90laoyuan      2017-06-07 10:48:24 +08:00 算出来 x=346,用 python 算得,PHP 算不出来! | 
|  |      91laoyuan      2017-06-07 10:51:23 +08:00 如果把范围缩小到 1 小时 3600 秒,只需要按 71 次,就有 50%的概率出现一次同秒 | 
|  |      92liteyou OP | 
|  |      93swulling      2017-06-07 10:55:55 +08:00 这就是一道正常的算法场景啊。有本事面试题出这个你和面试官怼:『你这个不是算法题,你们在装 X,我拒绝回答!』 另外计算机的时间是离散的,所以存在同时事件。 何况电梯调度算法并不是一个简单的先到先得算法能解决的,后按也可能先得。 | 
|      94batman2010      2017-06-07 10:56:58 +08:00 @laoyuan 我把后面的部分省略了。我的意思是第一个减号应该是除号。 | 
|  |      95toml      2017-06-07 10:57:49 +08:00 via iPhone 楼主上本科时统计课没有学好😆 | 
|  |      96xiang880401      2017-06-07 11:04:50 +08:00 @swulling  1. 不管连续的还是离散的,都是有可能同时发生的吧 (如果认可这一条,可以继续看下一条) 2. 现实是连续的,所以现实中也有可能是同时发生的 (如果认可这一条,可以继续看下一条) 3. 计算机把 (a) 某个时间段内发生的事情,以及 (b) 真・同时发生的事情,都处理成计算机内部的 “同时“ | 
|      9718711338458      2017-06-07 11:05:23 +08:00 很奇怪,出现概率低,所以就当不会发生? | 
|  |      99swulling      2017-06-07 11:08:57 +08:00 @xiang880401  1. 连续的不可能同时发生,连续代表无限可分,只有数学上的同时,实际上不可能同时,这也是一个很古老的思考题 2. 但是问题是现实上的时间也是离散的,最小的时间单位是 Planck time,so,物理打败了空想的哲学<_< | 
|  |      100xiang880401      2017-06-07 11:10:41 +08:00 @swulling 现实上的时间也是离散?这个是怎么得出的 |