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